0.前言
随着微服务的普及化,现代互联网平台在故障隔离和可扩展性方面得到了极大的提高,但与此同时其他问题也随之而来,比如微服务的治理相对于单体服务而言复杂度呈指数式增长的,之前只需要部署在一台服务器上互联网平台现在以分布式的形式部署在多台服务器上。为了保证服务的稳定性,加强服务的治理,就不得不提到互联网行业另外一个非常重要的课题:服务的可观察性。服务的可观察性主要包括三个方面:指标(metrics)、日志(log)和追踪(trace),今天我们先来讨论下指标这一重要课题,监控指标通常被监控平台采集,然后通过页面展示,工程师可以通过监控平台查看服务和服务器的运行情况,在互联网行业大大小小的监控平台层出不穷,从老牌平台nagios到prometheus,再到国产监控平台夜莺,每个平台都有自己的特点和专注的领域。夜莺作为国产监控平台,因为其精美的界面,优异的性能和齐全的功能,受到许多人的关注(github 11k star),接下来我们就部署一下夜莺,然后试用一下夜莺平台,看是否真的有那么好用。
1.夜莺简介
夜莺监控(Nightingale)是一款侧重告警的监控类开源项目。类似 Grafana 的数据源集成方式,夜莺可以对接多种既有的数据源,不过 Grafana 侧重在可视化,夜莺是侧重在告警引擎、告警事件的处理和分发。夜莺可以产生告警事件,并根据规则做灵活派发,内置支持 20 种通知媒介(电话、短信、邮件、钉钉、飞书、企微、Slack 等)。夜莺可以说是算是 Prometheus大生态的一部分,只不过集成了更多的功能,并且同时兼顾了监控数据展示。
2.资源准备
2.1 虚拟机配置
本次还是采用虚拟机部署的方式,配置信息如下:
操作系统 | IP | CPU | 内存 |
---|---|---|---|
Rocky9 Linux | 10.173.100.15 | 8核 | 32G |
2.2 依赖服务
夜莺服务的运行需要依赖以下中间件:
名称 | 版本 |
---|---|
MySQL | V8.0.32 |
Redis | V7.4 |
中间件的版本可以自行选择,其中MySQL能够成功运行夜莺自带的sql脚本就没有问题。
2.3 安装包
本次就部署当前最新的夜莺版本:n9e-v8.0.0-beta.14,虽然还是beta版,但是基本功能已经稳定了。
安装包下载地址为:n9e下载地址
安装包名称:n9e-v8.0.0-beta.14-linux-amd64.tar.gz
3.夜莺部署
夜莺支持二进制、容器、HELM等多种方式部署,今天我们采用二进制的方式部署,毕竟了解了二进制部署的整个过程和部署原理,其他部署方式也是手到擒来。
3.1 上传安装包
将之前准备好的安装包上传到服务器指定目录,指定目录没有要求,根据习惯放在合适的位置即可,我这里是放在/root/install/目录下。
cd /root/install/
ll n9e-v8.0.0-beta.14-linux-amd64.tar.gz
-rw-r--r--. 1 root root 71484782 Jul 1 15:55 n9e-v8.0.0-beta.14-linux-amd64.tar.gz
3.2 解压安装包
安装包上传到服务器之后,就需要将安装包解压到指定位置了,命令如下:
mkdir /usr/local/n9e/
cd /root/install/
tar xf n9e-v8.0.0-beta.14-linux-amd64.tar.gz -C /usr/local/n9e
ls /usr/local/n9e
total 145900
drwxr-xr-x. 3 root root 35 Jul 1 15:58 cli
drwxr-xr-x. 8 root root 4096 Jul 1 15:58 docker
drwxr-xr-x. 4 root root 71 Jul 2 13:45 etc
drwxr-xr-x. 67 root root 4096 Jul 1 15:58 integrations
-rwxr-xr-x. 1 1001 118 64102552 Jun 20 18:26 n9e
-rwxr-xr-x. 1 1001 118 23789720 Jun 20 18:25 n9e-cli
-rwxr-xr-x. 1 1001 118 61407384 Jun 20 18:26 n9e-edge
-rw-r--r--. 1 1001 118 78945 Jun 20 18:24 n9e.sql
可以看到夜莺相关的文件都在/usr/local/n9e目录下了。
3.3 修改配置文件
n9e的配置文件在/usr/local/n9e/etc目录下,先看下有哪些配置文件:
ll /usr/local/n9e/etc/
-rw-r--r--. 1 1001 118 4087 Jul 2 13:45 config.toml
drwxr-xr-x. 2 root root 23 Jul 1 15:58 edge
-rw-r--r--. 1 1001 118 61510 Jun 20 18:23 metrics.yaml
drwxr-xr-x. 2 root root 93 Jul 1 15:58 script
目前需要修改的配置文件是config.toml,修改内容包括数据库配置和redis配置。
(1)数据库相关:
[DB]
DBType = "mysql"
DSN = "YourUsername:YourPassword@tcp(127.0.0.1:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local"
n9e还支持pgsql,sqlite等数据库,配置项大同小异,都是指定DB类型和连接地址即可。
(2)redis相关:
[Redis]
Address = "127.0.0.1:6379"
Password = "YourRedisPassword"
RedisType = "standalone"
3.4 服务启动
为了方便服务的管理,我们使用systemctl的形式启动和关停n9e服务。
n9e.service文件的内容如下:
[Unit]
Description=Nightingale Monitoring Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/n9e/n9e
WorkingDirectory=/usr/local/n9e
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e
[Install]
WantedBy=multi-user.target
可以将该文件存放到/lib/systemd/system目录下,然后重新加载system文件:
mv n9e.service /lib/systemd/system
systemctl daemon-reload
之后启动n9e服务即可,命令如下:
systemctl start n9e
查看n9e运行状态,命令如下:
systemctl status n9e
● n9e.service - Nightingale Monitoring Service
Loaded: loaded (/usr/lib/systemd/system/n9e.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2025-07-02 14:28:16 CST; 2s ago
Main PID: 29275 (n9e)
Tasks: 13 (limit: 203843)
Memory: 106.0M
CGroup: /system.slice/n9e.service
└─29275 /usr/local/n9e/n9e
......
Jul 02 14:28:17 middleware n9e[29275]: rpc.listening: 0.0.0.0:20090
Jul 02 14:28:17 middleware n9e[29275]: please view n9e at http://10.173.100.15:17000
Jul 02 14:28:17 middleware n9e[29275]: http server listening on: 0.0.0.0:17000
Jul 02 14:28:18 middleware n9e[29275]: 2025-07-02 14:28:18.861336 DEBUG dscache/sync.go:206 get plugin by type success Ids:[]
可以看到服务正常运行了,另外还打印了访问地址和管理员账号和密码(我这里省去了)。
3.5 访问服务
在浏览器通过http://10.173.100.15:17000 就可以访问n9e服务了,正常情况下界面如下:
到这里n9e服务就部署完成,并可以正常访问了。
4.搭建数据源
监控平台通常需要采集监控指标,并展示监控数据,而n9e本身是没有集成数据源功能的,所以我们要单独部署一个数据源平台给n9e使用。n9e可以支持多个数据源,包括Prometheus、VictoriaMetrics、ElasticSearch等,本次我们就部署一个Prometheus作为n9e的数据源平台,具体的部署方式可以参考我之前的博客云原生监控方案prometheus初识。
之后将prometheus作为数据源添加到夜莺平台,这个只需要在前端页面添加即可,步骤如下:
菜单项选择数据源,之后点击添加按钮,选择数据源类型,然后输入必要配置信息,比如数据源名称和数据源URL地址,步骤如下:
最后点击左下角"测试连通性并保存"按钮即可完成数据源添加。
5.总结
搭建n9e平台还是非常简单的,只需要安装包,配置文件和服务启停老几样即可,并且夜莺官网也提供非常详细的文档供参考。夜莺不仅部署简单,功能也是非常的强大,后续会慢慢给大家讲解夜莺的基本用法,包括基础设施监控、仪表盘的搭建、告警和告警自愈等,大家也可以多看看夜莺官网学习更多的监控相关知识。