手把手教你用夜莺监控机器

巴辉特 2025-02-25 13:58:38

前言

从重要性而言,首要监控的指标应该是业务北极星指标,其次是应用的RED(Request、Error、Duration)指标,但是要想快速体验一个监控系统,显然从机器监控开始更容易。本文将手把手教你如何用夜莺监控机器,快速体验夜莺的监控功能。

环境介绍

  • OS:Ubuntu 22.04.4 LTS
  • CPU Architecture:aarch64

这是我本机的的虚拟机,arm64 架构,你也可以使用 x86 架构的 CPU。

架构介绍

机器监控数据的采集有很多种工具,比如 Telegraf、Node-Exporter、Datadog-agent 等,夜莺可以和这些采集器对接,但最为丝滑的采集器仍然是 Categraf,所以本文会使用 Categraf 来采集机器监控数据。

夜莺架构

每台机器部署 Categraf,采集 CPU、内存、磁盘、IO、进程等监控数据,然后将数据上报到夜莺,夜莺不直接存储监控数据,而是将数据存储到时序数据库,比如 Prometheus、VictoriaMetrics 等,上图画的是 Prometheus,我们就以 Prometheus 为例。

安装 Prometheus

从 Prometheus 的官网下载最新版本的 Prometheus,解压之后直接运行即可:

nohup ./prometheus --config.file prometheus.yml --storage.tsdb.path=./data9090 --web.enable-lifecycle --query.lookback-delta=1m --web.listen-address="0.0.0.0:9090" --web.enable-remote-write-receiver &> stdout.log &

如果你已经部署过 Prometheus,可以跳过这一步。上例只是一个演示,直接使用 nohup 启动,实际生产环境中需要使用 systemd 等工具来管理进程。

🔴 注意:夜莺是通过 remote write 协议写数据到 Prometheus,Prometheus 要通过命令行参数开启 remote write 接口,即 --web.enable-remote-write-receiver。这是 Prometheus v2 版本的参数,如果是 Prometheus v3 版本,参数名字不同,可以通过 ./prometheus --help | grep receiver 查看自己参数的具体命名方式。

安装夜莺

从夜莺的 github releases 页面下载最新版本的夜莺,解压之后直接运行即可:

mkdir -p /opt/nightingale
tar zxvf n9e-v8.0.0-beta.6-linux-arm64.tar.gz -C /opt/nightingale
cd /opt/nightingale
nohup ./n9e &> stdout.log &

🔴 注意:我这里采用的版本是 v8.0.0-beta.6,你看到这个文章的时候可能已经有更新的版本了,届时使用最新的版本即可。

这里我们直接使用 nohup 启动,实际生产环境中需要使用 systemd 等工具来管理进程。夜莺的默认配置,直接使用 sqlite 和 miniredis 存储数据,测试环境 ok 的,如果是生产环境,还是需要改用 mysql 和 redis 来存储数据。

查看 stdout.log 中的日志,可以看到夜莺的默认用户名和密码:root / root.2020,也可以看到夜莺默认监听的端口 17000,通过浏览器访问 http://your-ip:17000 即可看到夜莺的登录页面。

集成中心-数据源 页面添加 Prometheus 数据源,填写 Prometheus 的地址即可,如下图所示:

夜莺可以接入多个不同的数据源,比如 Loki、ElasticSearch、Prometheus 等,这里我们只接入 Prometheus,所以只有一个数据源,核心配置就是 Prometheus 的地址:

添加了数据源之后,就可以在即时查询查到监控数据了:

不过,目前还查不到机器监控数据,因为还没有部署 Categraf。在部署 Categraf 之前我们先来配置一下夜莺。

配置夜莺转发数据到 Prometheus

categraf 推送数据给夜莺,夜莺转发数据给 Prometheus,那夜莺怎么知道 Prometheus 的地址?这个配置在夜莺的 etc/config.toml 文件中,找到 [[Pushgw.Writers]] 配置项,在 Url 那填写 Prometheus 的 remote write 地址即可:

...
[[Pushgw.Writers]]
Url = "http://127.0.0.1:9090/api/v1/write"
...

如果想把监控数据同时发给多个时序数据库,可以添加多个 [[Pushgw.Writers]] 配置项。比如:

...
# write to prometheus
[[Pushgw.Writers]]
Url = "http://127.0.0.1:9090/api/v1/write"

# write to vminsert
[[Pushgw.Writers]]
Url = "http://127.0.0.1:8480/insert/0/prometheus/api/v1/write"
...

部署 Categraf

到 categraf 的 github releases 页面下载最新版本的 categraf 并解压:

wget https://github.com/flashcatcloud/categraf/releases/download/v0.4.3/categraf-v0.4.3-linux-arm64.tar.gz
tar zxvf categraf-v0.4.3-linux-arm64.tar.gz

编辑 categraf 的配置文件:conf/config.toml,修改其中的 127.0.0.1:17000,改成你的夜莺的地址,然后启动 categraf:

nohup ./categraf &> stdout.log &

检查 stdout.log 确保进程正常启动。

查看监控数据

稍等个 30s 左右,就可以在夜莺的即时查询页面看到机器监控数据了:

cpu_usage_active

cpu_usage_active 表示 CPU 使用率。

夜莺内置了仪表盘和告警规则,可以去仪表盘列表页面导入机器相关的仪表盘:

点击导入,选择 Linux 组件:

勾选机器常用指标,点击导入即可。

「机器常用指标 - 所有机器」,这个仪表盘点开就可以看到监控数据了,会看到所有机器的监控数据。样例如下:

夜莺机器仪表盘

「机器常用指标 - 只展示业务组内的机器」,这个仪表盘点开看不到监控数据,因为这个仪表盘只展示业务组内的机器,而此时业务组下还没有机器

修改机器所属的业务组:

把机器加入到「Default Busi Group」这个业务组,然后再刷新「机器常用指标 - 只展示业务组内的机器」就可以看到机器监控数据了。

导入告警规则

告警规则可能会很多,需要分组管理,所以告警规则要归属于某个业务组下。我们进入「告警规则」菜单,选中 Default Busi Group,然后导入告警规则:

导入之后的效果:

如果有机器的监控数据异常,就会产生告警事件,到 告警管理-活跃告警 下面可以看到。为了快速看到效果,你也可以修改某个告警规则的阈值,尽快触发告警。

这里我修改一下 「CPU利用率较高」这个规则,把 cpu_usage_active 的阈值改成 > 0,这样很快就可以看到告警事件了。

告警通知

这里我们先配置一个最简单的钉钉通知,之后再配置更多的通知方式。钉钉机器人有多种认证方式,我们使用最简单的关键字认证方式,关键字写成 20,因为告警通知中肯定会有时间,所以肯定会包含 20 这两个字符。

然后把回调地址填到告警规则的回调地址中即可:

最近也在优化告警通知的逻辑。下个版本就会改造完成,等下个版本发版之后我再具体介绍。

总结

本文手把手教你如何用夜莺监控机器,快速体验夜莺的监控功能,希望对你有帮助。

标签: 夜莺监控
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat