01 引言
最近在kubenetes上安装了kube-promethues
(包含Prometheus Operator
),程序正常跑起来了,主要是不知道如何配置规则文件和配置接收消息的对象。本文来讲讲。
02 规则文件配置
首先使用命令查看资源类型Prometheus的yml文件:
kubectl get Prometheus -n 指定的命名空间(即Prometheus Operator安装的命名空间)
可以看到Prometheus类型对象为k8s,查看里面的yml:
kubectl get Prometheus/k8s -n kubesphere-monitoring-system -o yaml
里面有个重要的内容,即matchLables
,所有规则文件都需要有"prometheus:k8s"和"role:alert-rules",这样operator才会发现并自动创建。
ok,可以创建告警规则文件了,使用vi命令:
vi bm-custom-rules.yaml • 1
内容如下,注意下面的labels
:
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: prometheus: k8s ole: alert-rules name: bm-custom-rules namespace: 输入命名空间 spec: groups: - name: disk rules: - alert: diskFree annotations: summary: "{{ $labels.job }} 项目实例 {{ $labels.instance }} 磁盘使用率大于 80%" description: "{{ $labels.instance }} {{ $labels.mountpoint }} 磁盘使用率大于80% (当前的值: {{ $value }}%),请及时处理" expr: | (1-(node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint!="/boot"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint!="/boot"}) )*100 > 80 for: 1m labels: level: disaster severity: warning
保存,并使用命令创建:
kubectl create -f bm-custom-rules.yaml
创建成功后,使用命令查询是否创建成功:
kubectl get PrometheusRule -n 命名空间
可以看到创建成功了,我们进入容器看看:
kubectl exec -it prometheus-k8s-0 /bin/sh -n 命名空间 cd /etc/prometheus/rules/prometheus-k8s-rulefiles-0/ ls
可看到在容器中,operator已经自动帮我们创建好规则文件了:
看看Prometheus的web页面,可以看到规则部署成功:
03 配置告警接收者
直接在kubenetes的dashboard界面配置:
打开后点击编辑按钮:
编辑完成后,点击update
即可(这里配置了webhook
):
一般来说会自动更新重启的,如果不放心,可以delete
掉pod
(删除之后会自动重启):
kubectl delete pod alertmanager-main-0 -n kubesphere-monitoring-system
03 文末
参阅文献: