Prometheus-Operator告警场景
利用Prometheus-Operator来监控k8s集群并进行告警
prometheus-operator告警场景
环境准备
准备环境k8s1.12+以上,k8s的部署就不过多介绍,有kube-admin,也有二进制部署,当然也可以参考我的k8s集群部署
基本上环境准备好了就如我的集群如下
各组件已经成功安装。
安装Prometheus-Operator
Prometheus-Operator原理介绍:参考我的Prometheus-Operator监控k8s
此处演示的Prometheus-Operator场景的安装yaml,下载地址:https://github.com/huisebug/Prometheus-Operator-Rules.git
manifests目录介绍
1 | kubectl apply -f manifests/ |
多次执行上面的初始化安装确保prometheus-operator可用
注:上面的yaml是官方4月份发布的版本,经过多次测试可以适用于多个集群,其中修改了一些镜像地址为国内可快速拉取的地址和移除了prometheus-adapter的部署。
new目录介绍
alertmanager-alertmanager.yaml:增加告警模板自定义位置的配置
alertmanager-secret.yaml:alertmanager服务的配置文件,包含企业微告警,印制告警,告警模板,告警间隔时间。
alertmanager-temp-configmap.yaml:告警模板
auth:访问prometheus、alertmanager、grafana的http认证文件
ingress.yaml:访问prometheus、alertmanager、grafana的域名配置,并增加http密码校验
prometheus-prometheus.yaml:增加prometheus数据保留时间,抓取metrics的间隔时间
state-rules.yaml:告警规则,也是本文章的主要介绍内容。
执行安装
将auth认证文件传递到secret
1 | kubectl -n monitoring create secret generic basic-auth --from-file=. /new/auth |
应用更改后的配置
1 | kubectl apply -f new/ |
告警模板
在之前的文章中写过自定义告警模板,后续进行了模板的不断完善,告警信息我认为不必要的信息没必要展示,精确告警,新的告警模板如下
1 | {{- define "__text_alert_list" -}} |
将告警信息精简为从声明annotations中取值自定义的键值对,键名为messages一条即可,根据不同的rules定义每一个rule的messages告警内容
Rules
已监听job状态
1 | - name: up |
监控prometheus的target下的所有服务
pod等待状态错误原因
1 | - name: kube_pod_container_status_waiting_reason |
监控pod非running状态的原因进行告警
pod容器内存不足
1 | - name: kube_pod_container_status_last_terminated_reason |
如果pod设置了resource内存限制,当pod超过内存被kill的时候进行告警,提醒使用者是否该调整该pod的resource
pod状态有变动
1 | - name: kube_pod_container_status_ready |