资讯详情

资讯详情

Mac 当主机,Linux 当服务器(17)告警规则,让 Prometheus 学会「喊人」

摘要:Grafana 再好看,也得有人看。这篇讲清 Prometheus 告警规则怎么写:expr/for/labels/annotations四个字段各管什么、告警的三个状态inactive → pending → firing怎么走、ALERTS指标怎么用 PromQL 查;再给你三条可以直接抄的常用规则(CPU / 内存 / 磁盘)和一条必配的up == 0。最后是一个很真实的坑——一个肉眼看不见的U+00A0,让整个规则文件加载失败。承接上篇:Grafana 装好了,Dashboard 也导入了,CPU、内存、磁盘、网络都能看了。一、Grafana 好看,但没人看周一早上,小林打开 Grafana,看着自己配的 Dashboard,CPU、内存、磁盘曲线一路平稳。「周哥,你看,监控配好了。」老周走过来,看了一眼:「好看。」「那当然。」「但我问你一个问题。」老周说,「你周六晚上在干嘛?」「打游戏啊。」「那周六晚上,你博客 CPU 飙到 90%,你知道吗?」小林愣住了:「我……不知道。」「对。」老周说,「Grafana 再好看,也得有人看。没人看,它就是一张画。你不能 24 小时盯着屏幕,但你得知道服务器什么时候出问题。这就需要告警。」「那告警谁来发?」「Prometheus。」老周说,「你给它定规则,它自己判断。条件满足了,它就『喊人』。」「喊谁?」「先喊 Alertmanager,Alertmanager 再决定怎么通知你。」老周说,「但今天,你先学怎么让 Prometheus『判断』。」二、告警规则长什么样?「告警规则,就是一个 YAML 文件。」老周说,「你在里面写:什么条件下,触发什么告警。」老周拿过小林的笔记本,写了一个例子:groups:-name:examplerules:-alert:HighCpuUsageexpr:1-avg(rate(node_cpu_seconds_total{mode="idle"}[1m]))0.8for:2mlabels:severity:warningannotations:summary:"CPU 使用率超过 80%"description:"实例 { { $labels.instance }} 的 CPU 使用率已持续 2 分钟超过 80%,当前值 { { $value }}"「一行一行解释。」groups:规则组。一个文件可以有多个组,每组一个name;rules:规则列表。一组可以有多个规则;alert:告警名称。HighCpuUsage,你自己起;expr:表达式。PromQL,条件满足就触发;for:持续时间。条件满足后,持续多久才真正触发。2m表示 2 分钟;labels:标签。severity: warning,表示告警级别;annotations:注释。summary和description,告警内容,支持模板变量。「那{ { $labels.instance }}是啥?」「模板变量。」老周说,「$labels是当前告警的标签,$value是当前值。你写{ { $labels.instance }},告警发出来时,会替换成具体的实例名。」小林在笔记本上画了个表:字段作用alert告警名称exprPromQL 表达式,条件for持续时间,条件满足多久才触发labels告警标签,如severityannotations告警内容,支持模板变量三、写第一条规则「现在写第一条。」老周说,「你先建一个规则文件。」「放哪?」「Prometheus 配置目录下,建个rules文件夹。」sudomkdir-p/etc/prometheus/rulessudonano/etc/prometheus/rules/node_rules.yml「写什么?」「写一条『CPU 超过 80% 持续 2 分钟』的告警。」小林写:groups:-name:node_alertsrules:-alert:HighCpuUsageexpr:1-avg(rate(node_cpu_seconds_total{mode="idle"}[1m]))0.8for
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →