夜莺监控手把手配置 Prometheus 告警

夜莺监控手把手配置 Prometheus 告警

本文是手把手教程,所以会比较冗长,请自行跳过已经熟悉的部分。本文的大纲如下:

夜莺监控项目简介

快速搭建夜莺监控

接入 Prometheus 数据源

配置告警规则

配置通知规则

收到告警通知以及如何自定义消息模板

夜莺监控项目简介

夜莺监控是一个开源的监控告警系统,类似 Grafana 可以接入多种数据源,不过 Grafana 侧重点是可视化,夜莺的侧重点是告警。当前(2025.4.9)版本是 v8 的 beta10,支持 Prometheus、VictoriaMetrics、Thanos、M3DB、ElasticSearch、Loki、TDEngine 等数据源。产品逻辑示意图如下:

如果你有多套 Prometheus、VictoriaMetrics,想统一管理告警规则、通知规则,可以尝试夜莺,如果你既有指标时序库,又有 ElasticSearch、Loki 等日志库,想要在一个平台管理告警,可以尝试夜莺。

夜莺的 github 地址是:https://github.com/ccfos/nightingale 当前 star 是 10.8k,社区活跃度还不错,repo group 是 ccfos,表示中国计算机学会开源发展委员会,夜莺最初是由滴滴的团队开发开源的,后来捐赠给基金会了,大概率会长期存续维护,不会像一些 KPI 项目一样,开发者离职、调岗就不维护了。

快速搭建夜莺监控

夜莺的最新发布包可以从 github releases 页面下载:https://github.com/ccfos/nightingale/releases。解压缩,既可以使用 Docker compose 方式运行,也可以使用二进制方式运行。

Docker compose 方式

解压缩之后,进入 docker/compose-bridge 目录,执行 docker-compose up -d 命令,即可启动所有组件。不过我个人更喜欢二进制的方式部署,可以对各个组件有更精细的控制和了解。

二进制方式

普通场景使用,夜莺其实只有一个二进制,就是压缩包里的 n9e,生产环境运行的话依赖 MySQL 和 Redis,如果只是为了快速尝试,直接使用内置的 SQLite 数据库和内存数据库即可。我这里就使用最简单的方式,直接运行:

./n9e

为了快速演示,我直接把进程运行在前台了,生产环境的话,建议使用 systemd 托管,我也没有修改夜莺的配置文件 etc/config.toml,默认会使用 SQLite 数据库和内存数据库。

端口和登录方式

不管是 Docker compose 方式还是二进制方式,夜莺的端口都是 17000,使用 root、root.2020 登录。

接入 Prometheus 数据源

从菜单里找到数据源,点击新增,然后选择 Prometheus Like 数据源,这个数据源可以接入所有和 Prometheus 查询接口兼容的数据源。然后填写时序库的名称、URL 即可,如果有 Basic Auth 认证,记得填写用户名和密码。

关于更多配置项,比如 Remote write url、时序库内网地址,都有一个小问号提示说明,可以自行阅读说明,初步测试还用不到,这里不再赘述。

配置了数据源,夜莺就可以查询数据了,我们找到「即时查询」菜单,进去查询一下数据测试一下:

能查到数据,后面就可以配置告警规则了。

配置告警规则

从菜单里找到告警规则,然后选择「Default Busi Group」业务组,这个业务组是系统安装完成之后自动创建的,你可以自行创建自己的业务组,告警规则未来会很多,需要分门别类管理,也需要统一权限管理,所以告警规则要归属到某个业务组下。选中「Default Busi Group」之后,右侧点击「新增」按钮即可创建告警规则,也可以点击「导入」按钮,导入一批告警告警,「导入」的时候,可以导入系统内置的告警规则,也可以导入 Prometheus 的告警规则,夜莺会自动转换成夜莺的告警规则格式。

这里我们选择「新增」,进入告警规则配置页面,首先给规则随便取个名字,然后选择 Prometheus 数据源类型,然后下面的数据源筛选这里,我直接选择全部数据源:

夜莺的告警规则,可以生效给所有数据源,也可以生效给指定的数据源,很多公司都有很多套 Prometheus,这个功能可以很好的支持多套 Prometheus 的告警规则管理。然后,就是配置 Promql,即告警条件那里:

要玩转 Prometheus 和 Nightingale,Promql 是必备技能,如果你还不熟悉 Promql,可以联系我(我的微信picobyte)索要 Promql 学习资料。上面我为了快速验证效果,配置了 node_memory_MemAvailable_bytes > 0,node_memory_MemAvailable_bytes 这个指标的值肯定是大于 0 的,所以这个规则很快就会触发告警。当然了,为了更快触发,我把执行频率设置成了 @every 15s,把持续时长设置为 0,这俩字段也有小问号 tooltip,可以自行查看其说明。

之后的配置:

事件 relabel:是对生成的告警事件做 relabel,比如 drop 掉某些标签,跟 Prometheus 的 relabel 很像,只不过 Prometheus 是针对指标数据做 relabel,夜莺这里是针对告警事件做 relabel。

生效配置:可以维持不动,后面再研究,核心就是配置哪些时段生效。

通知配置是控制告警事件具体如何发送,待会再讲,我们先看能否生成告警事件。

保存之后稍等片刻,就会看到告警规则前面的状态图标变成红色的感叹号:

点击感叹号,就可以看到这个告警规则触发的告警事件了,也可以进入「活跃告警」「历史告警」菜单,查询当前所有告警。

告警事件产生了,接下来就是如何通知的问题了。下面我们配置一下通知规则。

配置通知规则

告警规则和通知规则的关系图如下:

很多告警规则,都可以关联一个通知规则,这个通知规则里配置发哪些媒介,比如 Critical 的告警打电话、发短信、发钉钉,Info 级别的告警就只发钉钉。

这里我配置一个简单的通知规则,让所有的告警都发钉钉,找到「通知规则」这个菜单,点击新增:

通知规则的配置项有:

名称:随便取个名字

授权团队:指定一个团队,未来这个团队的人可以管理这个通知规则

通知媒介:选择 DingTalk,这个是夜莺内置的通知媒介,表示钉钉

消息模板:选择 Dingtalk,这个是夜莺内置的消息模板,表示钉钉的消息模板

Access Token:填写钉钉机器人的 Webhook 里的 Access Token 参数

Bot Name:填写钉钉机器人的名称,随便填

钉钉机器人如果创建这里不赘述了,其中要注意的是,钉钉机器人创建的时候需要选择安全设置,我们选择自定义关键字的方式,关键字写 20,因为告警消息里肯定有告警时间,所以这个关键字是必然会出现的。然后,点击保存,通知规则就创建好了。

之后,我们重新回到告警规则,在告警规则里配置关联的通知规则,这样一来,这个告警规则生成的所有告警事件,都会通过这个通知规则来发送。同时也顺便修改一下 promql,改成 node_memory_MemAvailable_bytes < 0,这样很快就会触发恢复消息。

收到告警通知以及如何自定义消息模板

因为之前已经告警了,现在把 promql 改成 node_memory_MemAvailable_bytes < 0,所以告警恢复,触发恢复通知。整个流程就跑通了。

接下来你可以自行看看 Dingtalk 的通知媒介和消息模板,熟悉一下,未来可能会有自定义的需求。通常来讲,大家会有两个额外需求:

自定义消息模板:尤其是要让告警消息里那几个链接可用

支持 at 人的功能

自定义消息模板

找到菜单「消息模板」,找到「Dingtalk」消息模板,右侧就可以看到消息体了,修改 Content 这个 go template 模板,就可以自定义最终的通知的消息了。

右侧有详细的文档说明,这里不再赘述。其中比较关键的是 $domain 变量,改成你的夜莺的 URL 地址,这样告警消息里的链接就可以点击了。

支持 at 人的功能

具体如何配置可以参考:https://flashcat.cloud/blog/n9e-v8-notify-dingtalk-ats/。这里我也概要说一下:

点击右上角登录用户名,个人信息,配置一下手机号,因为 at 人需要根据手机号来 at

去通知媒介里,找到 DingTalk 通知媒介,修改一下,联系方式那里选择 Phone

重新打开通知规则,会看到 DingTalk 媒介下面多了接收人、接收团队两个配置,这就是要 at 的人,比如想 at root 用户,就在接收人那里选择 root 即可

重新修改告警规则,改改 promql,让告警重新触发,比如:node_memory_MemAvailable_bytes > 0,然后等着即可

稍等片刻就可以看到 at 人的效果了。

结语

本文详细演示了夜莺接入 Prometheus 告警的配置过程,包含搭建夜莺、接入数据源、配置告警规则、通知规则等。夜莺的告警规则和通知规则都很灵活,支持多种数据源和多种通知媒介,希望对大家有帮助。

更多参考

夜莺监控巨大革新:抽象出通知规则,增强告警通知的灵活性

夜莺监控 v8.0 新版通知规则 | 对接钉钉告警

夜莺监控 v8.0 新版通知规则 | 对接企微告警

夜莺监控 v8.0 新版通知规则 | 对接飞书告警

夜莺监控 v8.0 新版通知规则 | 对接钉钉告警,如何配置 at 人

夜莺监控 v8.0 新版通知规则实操 | 对接钉钉、飞书、企微通知

夜莺监控 v8.0 新版通知规则 | 对接阿里云短信

相关推荐

dnf分解机在哪修理-dnf分解机维修位置
365提款经验

dnf分解机在哪修理-dnf分解机维修位置

⏳ 07-20 👁️ 3230
王者荣耀暃怎么读 王者荣耀新英雄介绍
365提款经验

王者荣耀暃怎么读 王者荣耀新英雄介绍

⏳ 07-16 👁️ 3448