Name
Last commit
Last update
..
.gitkeep 디렉토리 구조변경
README.md high cpu load 1차완료

logo

Node High CPU Usage Issue 검증

Node의 전체 CPU 사용률에 대한 모니터링을 수행한다.

Configuration

2분 동안 CPU 사용률이 80% 이상인 경우가 감지된 경우 Alert을 발생시키는 Rule

  • 결과

high_cpu

  • 검증 과정
  • [ STEP 1 ] : Prometheus의 Graph 메뉴의 Expression에서 수식에 대한 검증을 진행한다.

high_cpu_verify

대상 Node에 현재의 CPU Usage(%) 값이 쿼리 된다.

  • [ STEP 2 ] : Prometheus Configmap 파일에 ITEM을 추가한다.
# cat prometheus-config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-server-conf
  labels:
    name: prometheus-server-conf
  namespace: monitoring
data:
  prometheus.rules: |-
    groups:
    - name: Node High CPU Load
      rules:
      - alert: HostHighCpuLoad
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80
        for: 0m
        labels:
          severity: warning
        annotations:
          summary: "Host high CPU load (instance {{ $labels.instance }})"
          description: "CPU load is > 80%\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"
...하략
  • [ STEP 3 ] : kubectl 툴을 이용하여 Replace 처리하고, curl을 이용하여 POST reload Payload를 전송한다.
# kubectl replace -f prometheus-config-map.yaml
# curl -X POST http://172.24.0.222:30003/-/reload

또는 prometheus를 재시작하면 즉시 적용된다.

Verify

  • [ STEP 1 ] : 검증을 위해 80% 기준을 5%로 변경한다.
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 5
  • [ STEP 2 ] : Alert Manager를 통한 Alert 발송을 확인한다. 5%로 변경되었기 때문에 대부분의 Node가 해당된 상태이다.

high_cpu_alert

  • [ STEP 3 ] : Resolved를 검증하기 위해 다시 기존 80%로 변경한다.
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80
  • [ STEP 4 ] : Alert Manager를 통한 Resolved Alert 발송을 확인한다.

high_cpu_resolved