26.4. 감지된 조건 사용자 정의


Node Problem Detector 구성 맵을 편집하여 로그 문자열을 조사하도록 Node Problem Detector를 구성할 수 있습니다.

Node Problem Detector 구성 맵 샘플

apiVersion: v1
kind: ConfigMap
metadata:
  name: node-problem-detector
data:
  docker-monitor.json: |  1
    {
        "plugin": "journald", 2
        "pluginConfig": {
                "source": "docker"
        },
        "logPath": "/host/log/journal", 3
        "lookback": "5m",
        "bufferSize": 10,
        "source": "docker-monitor",
        "conditions": [],
        "rules": [              4
                {
                        "type": "temporary", 5
                        "reason": "CorruptDockerImage", 6
                        "pattern": "Error trying v2 registry: failed to register layer: rename /var/lib/docker/image/(.+) /var/lib/docker/image/(.+): directory not empty.*" 7
                }
        ]
    }
  kernel-monitor.json: |  8
    {
        "plugin": "journald", 9
        "pluginConfig": {
                "source": "kernel"
        },
        "logPath": "/host/log/journal", 10
        "lookback": "5m",
        "bufferSize": 10,
        "source": "kernel-monitor",
        "conditions": [                 11
                {
                        "type": "KernelDeadlock", 12
                        "reason": "KernelHasNoDeadlock", 13
                        "message": "kernel has no deadlock"  14
                }
        ],
        "rules": [
                {
                        "type": "temporary",
                        "reason": "OOMKilling",
                        "pattern": "Kill process \\d+ (.+) score \\d+ or sacrifice child\\nKilled process \\d+ (.+) total-vm:\\d+kB, anon-rss:\\d+kB, file-rss:\\d+kB"
                },
                {
                        "type": "temporary",
                        "reason": "TaskHung",
                        "pattern": "task \\S+:\\w+ blocked for more than \\w+ seconds\\."
                },
                {
                        "type": "temporary",
                        "reason": "UnregisterNetDevice",
                        "pattern": "unregister_netdevice: waiting for \\w+ to become free. Usage count = \\d+"
                },
                {
                        "type": "temporary",
                        "reason": "KernelOops",
                        "pattern": "BUG: unable to handle kernel NULL pointer dereference at .*"
                },
                {
                        "type": "temporary",
                        "reason": "KernelOops",
                        "pattern": "divide error: 0000 \\[#\\d+\\] SMP"
                },
                {
                        "type": "permanent",
                        "condition": "KernelDeadlock",
                        "reason": "AUFSUmountHung",
                        "pattern": "task umount\\.aufs:\\w+ blocked for more than \\w+ seconds\\."
                },
                {
                        "type": "permanent",
                        "condition": "KernelDeadlock",
                        "reason": "DockerHung",
                        "pattern": "task docker:\\w+ blocked for more than \\w+ seconds\\."
                }
        ]
    }

1
컨테이너 이미지에 적용되는 규칙 및 조건입니다.
2 9
쉼표로 구분된 목록으로 서비스 모니터링.
3 10
모니터링 서비스 로그의 경로입니다.
4 11
모니터링할 이벤트 목록입니다.
5 12
오류를 나타내는 레이블은 이벤트(임시) 또는 NodeCondition(영구)입니다.
6 13
오류를 설명하는 텍스트 메시지입니다.
7 14
Node Problem Detector가 모니터링하는 오류 메시지입니다.
8
커널에 적용되는 규칙 및 조건.

Node Problem Detector를 구성하려면 문제 조건 및 이벤트를 추가하거나 제거합니다.

  1. 텍스트 편집기를 사용하여 Node Problem Detector 구성 맵을 편집합니다.

    $ oc edit configmap -n openshift-node-problem-detector node-problem-detector
  2. 필요에 따라 노드 상태 또는 이벤트를 제거, 추가 또는 편집합니다.

    {
           "type": <`temporary` or `permanent`>,
           "reason": <free-form text describing the error>,
           "pattern": <log message to watch for>
    },

    예를 들면 다음과 같습니다.

    {
           "type": "temporary",
           "reason": "UnregisterNetDevice",
           "pattern": "unregister_netdevice: waiting for \\w+ to become free. Usage count = \\d+"
    },
  3. 실행 중인 포드를 다시 시작하여 변경 사항을 적용합니다. Pod를 다시 시작하려면 기존 Pod를 모두 삭제할 수 있습니다.

    # oc delete pods -n openshift-node-problem-detector -l name=node-problem-detector
  4. Node Problem Detector 출력을 표준 출력(stdout) 및 표준 오류(stderr)에 표시하려면 Node Problem Detector의 DaemonSet에 다음을 추가합니다.

    spec:
      template:
        spec:
          containers:
          - name: node-problem-detector
            command:
            - node-problem-detector
            - --alsologtostderr=true 1
            - --log_dir="/tmp" 2
            - --system-log-monitors=/etc/npd/kernel-monitor.json,/etc/npd/docker-monitor.json 3
    1
    출력을 표준 출력(stdout)으로 보냅니다.
    2
    오류 로그의 경로입니다.
    3
    플러그인 구성 파일의 쉼표로 구분된 경로입니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.