본문 바로가기
ops/kubernetes

워커노드의 disk-usage에 따라 alert발생 시키기 - 2(rule 설정)

by seohan1010 2026. 1. 12.

prometheus rule을 crd로 설정 

#설정파일 
apiVersion: monitoring.coreos.com/v1 #prometheus crd 이름 
kind: PrometheusRule                 #kind
metadata:
  name: control-node-disk-usage
  namespace: monitoring
  labels:
    release: kube-prometheus-stack   #라벨추가   
spec:
  groups:
  - name: node.rules
    rules:
    - alert: control plane disk usage high
      expr: |
        (
          1 -
          node_filesystem_avail_bytes{instance="20.0.0.2:9100",mountpoint="/",fstype!~"tmpfs|overlay|squashfs"}
          /
          node_filesystem_size_bytes{instance="20.0.0.2:9100",mountpoint="/",fstype!~"tmpfs|overlay|squashfs"}
        ) > 0.8
      for: 5m
      labels:
        severity: warning
        instance: 20.0.0.2
      annotations:
        summary: "control node  disk usage > 80%"
        description: "Node {{ $labels.instance }} root filesystem usage is above 80%"

#쿠버네티스에 crd생성 
kubectl apply -f control-plane-disk.yaml

#rule이 생성 되었는지 확인 
kubectl get prometheusrules -n monitoring

NAME                                                              AGE
control-node-disk-usage                                           5h32m
kube-prometheus-stack-alertmanager.rules                          19h
kube-prometheus-stack-config-reloaders                            19h
kube-prometheus-stack-etcd                                        19h
kube-prometheus-stack-general.rules                               19h
kube-prometheus-stack-k8s.rules.container-cpu-usage-seconds-tot   19h


프로메테우스 deployment 재시작

#rollout
kubectl rollout restart  deploy -n monitoring kube-prometheus-stack-operator


#status 확인 
kubectl rollout statusdeploy -n monitoring kube-prometheus-stack-operator





프로메테우스 ui에서 rule이 추가되었는지 확인 

 

.ps

실제로는 crd로 설정을 하였을때 node_exporter가 
pod으로 노드에서 실행되고 있어서 디스크 압박 
테스트 진행시 가장 먼저 node_exporter가 
evicted되는 현상이 발생하여 
node_exporter로부터 metric을 
가져올수 없어서 위와 같은 방법으로는 특정 노드의 
디스크 사용량을 추적하는데 어려움이 있었음 

node_exporter를 직접 설치하였다면
kubernetes에 의해서 정지될 일이 
없었을 것이므로, 위의 쿼리문으로 
특정 노드의 디스크 사용량
추적이 가능하였을 것으로 보임 
(CRD를 사용하지 않고 직접, prometheus 설정파일을 수정)