Name
Last commit
Last update
..
.gitkeep 디렉토리 구조변경
README.md memory low, 1차완료

logo

Node Memory 부족 검증

특정 Metric 값을 기준으로 메모리의 가용량을 모니터링 한다.

Configuration

10초 동안 Node의 메모리가용량이 10% 이하일 경우가 감지된 경우 Alert을 발생시키는 Rule

  • 결과

memory_free

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

memory_free_verify

대상 Nodes에 현재 가용할 수 있는 메모리의 비율 값이 쿼리 된다.

  • [ 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 Memory 10% Under Free
      rules:
      - alert: HostOutOfMemory 10% Under Free
        expr: (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)) * 100 <= 10
        for: 10s
        annotations:
          summary: "Host out of memory instance {{ $labels.instance }}"
          description: "{{ $labels.instance }} has more than 10% Under of its memory free."
...하략
  • [ 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 ] : 검증을 위해 10% 미만 기준을 90%로 변경한다.
expr: (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)) * 100 <= 90
  • [ STEP 2 ] : Alert Manager를 통한 Alert 발송을 확인한다. 90%로 변경되었기 때문에 모든 Node가 해당된 상태이다.

memory_free_alert

  • [ STEP 3 ] : Resolved를 검증하기 위해 다시 기존 10%로 변경한다.
expr: (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)) * 100 <= 10
  • [ STEP 4 ] : Alert Manager를 통한 Resolved Alert 발송을 확인한다.

memory_free_resolved