夜莺监控Nightingale是一款很好用的开源监控系统,集多个强大功能于一身,开箱即用,并且更新和社区都很活跃。
在使用了一段时间后的感受是:确实很强大很好用,部署很简单、使用也很方便。
对于系统简介和主要功能,官方仓库的README.md和文档的功能概览其实已经写的很清楚了。
目前的大版本是Nightingale V7,部署方式官方文档写的很详细,并且提供了多种选择,官方推荐使用二进制部署。
由于官方文档其实写的很详细,所以部署过程中基本上没遇到什么问题。
准备工作
夜莺(n9e)
本身其实只需要本体n9e程序
、Redis
以及MySQL或MariaDB
就可以正常运行。
但是如果想要读写采集信息,还需要对接时序数据库
或其他系统
,并在需要监控指标的服务器上部署采集器
。
因此,如果想要部署一个可以正常使用并起到监控、采集、推送功能的夜莺监控系统,至少需要部署5个程序。
这里时序数据库
选用VictoriaMetrics。
数据库选用MariaDB
。
采集器选用夜莺自己的采集器categraf。
目前使用版本:
- N9E v7.0.0-beta.13
- redis:7.2.5
- mariadb:11.2
- VictoriaMetrics v1.102.0
- categraf v0.3.74 采集器版本根据实际情况选择,老旧系统(windows server2008这种)可能需要古早版本的。多数常用的系统可以先选择最新的,一般没啥影响。
目标:在一台机器上测试部署夜莺监控系统,并进行本机数据的采集。
用于测试部署的机器配置比较随意。
root@x:/home/ubuntu# screenfetch
./+o+- root@x
yyyyy- -yyyyyy+ OS: Ubuntu 24.04 noble
://+//////-yyyyyyo Kernel: x86_64 Linux 6.8.0-36-generic
.++ .:/++++++/-.+sss/` Uptime: 1h 47m
.:++o: /++++++++/:--:/- Packages: 933
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.2.21
.:+o:+o/. `+sssoo+/ Disk: 8.9G / 20G (48%)
.++/+:+oo+o:` /sssooo. CPU: Intel Core i5-10505 @ 2x 3.192GHz
/+++//+:`oo+o /::--:. GPU: VMware SVGA II Adapter
\+/+o+++`o++o ++////. RAM: 1112MiB / 3868MiB
.++.o+++oo+:` /dddhhh.
.+.o+oo:. `oddhhhh+
\+.++o+o``-````.:ohdhhhhh+
`:o+++ `ohhhhhhhhyo++os:
.o:`.syhhhhhhh/.oo++o`
/osyyyyyyo++ooo+++/
````` +oo+++o\:
`oo++.
查看处理器结构:
uname -m
# x86_64选择amd,带有arm字样的选择arm
假设部署机器的IP为:192.168.194.128
。
先部署Redis和MariaDB,因为是测试部署,所以不进行过多配置,Redis和MariaDB均以docker来最简部署。
部署Redis
docker方式
在本机上启动一个Redis,端口号6379
。
docker run --name redis -p 6379:6379 --restart always -d redis:7.2.5
部署MariaDB
docker方式
在本机上启动一个MariaDB,端口号3306
,默认账号:root
,默认密码:123456
。
docker run -d --name mariadb-n9e -p 3306:3306 --env MYSQL_ROOT_PASSWORD=123456 mariadb:11.2
部署N9E
参照官方文档(使用二进制方式部署夜莺)部署。
获取n9e二进制文件
从Release获取二进制部署文件。
mkdir n9e
cd n9e
# 拉取n9e压缩包
wget https://github.com/ccfos/nightingale/releases/download/v7.0.0-beta.13/n9e-v7.0.0-beta.13-linux-amd64.tar.gz
# 解压到当前目录
tar -zxvf n9e-v7.0.0-beta.13-linux-amd64.tar.gz -C .
导入数据库表结构
n9e.sql
文件是数据库表结构,在n9e根目录里,把文件复制到容器内导入。
也可以用工具在外部连接数据库后导入。
# n9e
docker cp n9e.sql mariadb:/
docker exec -it mariadb bash
进入容器后:
mariadb -uroot -p < n9e.sql
# 然后输入设置的密码
然后修改配置文件n9e/etc/config.toml
,先修改数据库和Redis的配置为对应的值。
数据库配置
在配置文件中搜索1234
或DSN
,修改对应的配置项。
DSN = "root:123456@tcp(127.0.0.1:3306)/n9e_v6?charset=utf8mb4&parseTime=True&loc=Local&allowNativePasswords=true"
Redis配置
在配置文件中搜索Redis
或6379
,修改对应的配置项。
Address = "127.0.0.1:6379"
因为在同一台机器上,所以IP可以用127.0.0.1
,改成局域网IP也行。
修改完毕后就可以启动了。
# 后台启动
nohup ./n9e &> n9e.log &
# 查看端口监听和状态
ss -tlnp|grep 17000
ps -ef|grep n9e
访问地址:服务器IP:17000
(http://192.168.194.128:17000/)
默认账号:root
默认密码:root.2020
至此,N9E
系统部署完毕。后面需要接入数据源,以及部署采集器。
部署数据源
时序数据库VictoriaMetrics
# 拉取二进制文件
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.102.0/victoria-metrics-linux-amd64-v1.102.0.tar.gz
# 解压到当前目录
tar -zxvf victoria-metrics-linux-amd64-v1.102.0.tar.gz -C .
# 后台启动
nohup ./victoria-metrics-prod &> app.log &
若成功启动,则默认监听端口8428
。自带一个Web UI接口,可以通过访问IP:8428
打开。
N9E配置数据源
修改N9E配置文件
回到n9e目录中,修改配置文件etc/config.toml
。
找到[[Pushgw.Writers]]
项,修改值为实际值。
我这里是:
Url = "http://127.0.0.1:8428/api/v1/write"
用局域网IP也行。
保存退出后,重启N9E
即可。
后台中增加数据源
重启完毕后,访问N9E的集成中心-数据源
,并新增一个数据源。
数据源类型选择Prometheus Like
。
主要需要设置:
数据源名称
随意。HTTP-URL
按下方提示输入,这里用的是VictoriaMetrics Single Version
,因此输入IP:8428/
,即http://192.168.194.128:8428/
。其他-Remote Write URL
按提示输入。这里用的是VictoriaMetrics Single Version
,因此输入IP:8428/api/v1/write
,即http://192.168.194.128:8428/api/v1/write
。其他-时序库设置
选择VictoriaMetrics
。
其他设置按照实际情况选填。
然后点击测试并保存
,提示成功后会新增一个数据源。
部署采集器
参照官方文档(Categraf 下载、安装和使用
)。
从Release下载采集器至需要采集的服务器。
wget https://github.com/flashcatcloud/categraf/releases/download/v0.3.74/categraf-v0.3.74-linux-amd64.tar.gz
# 解压到当前目录
tar -zxvf categraf-v0.3.74-linux-amd64.tar.gz -C .
cd categraf-v0.3.74-linux-amd64
# 安装服务
./categraf --install
然后进行配置文件的修改:
# 修改配置
vim conf/config.toml
修改配置主要修改两个地方,一个是[[writers]]
中的url,另一个是[heartbeat]
,要改成N9E的URL。
修改[[writers]]
[[writers]]
url = "http://192.168.194.128:17000/prometheus/v1/write"
修改[heartbeat]
[heartbeat]
enable = true
# report os version cpu.util mem.util metadata
url = "http://192.168.194.128:17000/v1/n9e/heartbeat"
保存退出后启动即可。
# 启动
./categraf --start
至此,完成所有部署。可以在仪表盘或即时查询中查看机器指标。
生产环境的搭建其实大差不差,主要还是看实际需求,无非就是用集群提高几个中间件的可用性,官方的文档里对于集群也有一定的介绍:N9E集群部署、分布式集群时序库 VictoriaMetrics...
不过如果设备数和采集指标没有特别多,单机其实也够用了。比如VictoriaMetrics
,文档中是这么说的:
VictoriaMetrics 提供单机版和集群版。如果您的每秒写入数据点数小于100万(这个数量是个什么概念呢,如果只是做机器设备的监控,每个机器差不多采集200个指标,采集频率是10秒的话每台机器每秒采集20个指标左右,100万/20=5万台机器),VictoriaMetrics 官方默认推荐您使用单机版,单机版可以通过增加服务器的CPU核心数,增加内存,增加IOPS来获得线性的性能提升。且单机版易于配置和运维。