為k8s集群配置自定義告警


前提:k8s集群中已正確部署了prometheus和alertmanager。

在prometheus中已經預先定義了很多告警項。當然,我們也可以自定義告警內容。本文以自定義容器的內存和CPU用量告警為例。

一、創建Prometheusrule

Prometheusrule是Prometheus在部署時創建的一個crd。它定義了Prometheus中的一些數據指標(即以record結尾的)和告警項(即以alert結尾的)。通過kubectl get prometheusrule可以看到所有Prometheus部署時創建的Prometheusrule。

我們自定義告警項時,只需要創建一個新的名字以alert結尾的Prometheusrule即可。

編寫自定義Prometheusrule的yaml文件如下:

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  labels:
    app: prometheus-rules
    cato: node
    release: prometheus-operator
  name: test.alert
  namespace: kube-system
spec:
  groups:
  - name: test.alert.rules
    rules:
    - alert: CPUUsageHigh
      annotations:
        description: 'node: {{ $labels.node }}, namespace: {{ $labels.namespace }},
          pod: {{ $labels.pod_name }}, container: {{ $labels.container_name }}, value:
          {{ $value }}'
        summary: Container CPU Usage > 0.8 for 2m
      expr: ke:container:cpu_util{namespace="test"} > 0.8
      for: 2m
      labels:
        severity: warning
    - alert: MemUsageHigh
      annotations:
        description: 'node: {{ $labels.node }}, namespace: {{ $labels.namespace }},
          pod: {{ $labels.pod_name }}, container: {{ $labels.container_name }}, value:
          {{ $value }}'
        summary: Container Mem Usage > 0.8 for 2m
      expr: ke:container:mem_util{namespace="test"} > 0.8
      for: 2m
      labels:
        severity: warning

這里有幾點需要注意:

1.這個rule的label,需要與你的Prometheus的ruleSelector字段相一致。

Prometheus在部署時,會創建一個名為Prometheus的crd。通過kubectl get prometheus -n xxx查出集群中的Prometheus的名字,再通過kubectl get prometheus -n xxx [集群中Prometheus的名字] -o yaml查找其ruleSelector字段。將這一字段的值原封不動地填寫至yaml文件中的labels字段中。

2.rules.expr字段定義了指標的表達式。后面的大括號里面規定了告警的監測范圍僅限與test這個namespace下。如果需要添加其他的條件,可用逗號隔開。

編寫完后,通過kubectl create -f prometheusrule.yaml創建。

二、測試驗證

驗證時,為了快速檢驗出成果,可以將ke:container:mem_util{namespace="test"} > 0.8改為 > 0.0001。

創建后,進入Prometheus的pod,查看/etc/prometheus/rules/prometheus-rulefiles-0下,過一段時間就可以看到test.alert.yaml文件出現了。

去到Prometheus的portal頁面,點擊Alert,查看自定義的兩個告警指標是否出現,且是否有active狀態的告警出現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM