夜莺监控( Nightingale )是一款国产、开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体。于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 60 多个版本。从 v5 版本开始与 Prometheus、VictoriaMetrics、Grafana、Telegraf、Datadog 等生态紧密协同集成,提供开箱即用的企业级监控分析和告警能力,已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为使用夜莺监控。
夜莺监控,由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。夜莺监控的核心开发团队,也是Open-Falcon项目原核心研发人员
官网链接:快猫星云Flashcat | 云原生监控 | 混合云监控 | 稳定性保障体系
现在夜莺的版本已经更新迭代到V6版本
Ninghtingale下载地址:Nightingale - 快猫星云 (flashcat.cloud)
Categraf下载地址:Categraf - 快猫星云 (flashcat.cloud)
Categraf官方github地址:https://github.com/flashcatcloud/categraf
最新版本V6架构图:
这个中心汇聚式是最常用的
Mysql:所有的告警信息,配置信息(比如普罗米修斯的),告警规则等等都存储在mysql里面;
Redis: 存储一些验证信息,JWT的token,metadata元信息,元数据,心跳信息等
TSDB:时序数据库(可以支持Prometheus、M3DB、VictoriaMetrics、Thanos等)
N9e:Nightingale | 夜莺监控,一款先进的开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的首个开源项目,Nightingale 可以接收各种采集器上报的监控数据,转存到时序库(可以支持Prometheus、M3DB、VictoriaMetrics、Thanos等),并提供告警规则、屏蔽规则、订阅规则的配置能力,提供监控数据的查看能力,提供告警自愈机制(告警触发之后自动回调某个webhook地址或者执行某个脚本),提供历史告警事件的存储管理、分组查看的能力,n9e可以做集群,多个n9e分担告警规则的处理和压力,n9e也分为无状态和有状态服务。
LB:nginx做7层代理
categraf: 是夜莺监控的默认的自制的数据采集器
name | 系统 | 配置 |
flashcat | Centos7.9 | 2核4G 磁盘100G |
Ninghtingale下载地址:Nightingale - 快猫星云 (flashcat.cloud)
下载安装部署配置mysql和redis :
# install mysql
yum -y install mariadb*
systemctl enable mariadb
systemctl restart mariadb
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1234');"
# install redis
yum install -y redis
systemctl enable redis
systemctl restart redis
下载n9e包并且导入sql表
mkdir -p /opt/n9e && cd /opt/n9e
wget wget https://download.flashcat.cloud/n9e-v6.0.0-ga.3-linux-amd64.tar.gz
tar zxvf n9e-v6.0.0-ga.3-linux-amd64.tar.gz
mysql -uroot -p1234 < n9e.sql
启动n9e,并且查看是否启动,n9e启动的默认端口是17000
nohup ./n9e &> n9e.log &
ss -ntpl | grep 17000
如果启动成功,n9e 默认会监听在 17000 端口。上面使用 nohup 简单演示,生产环境建议用 systemd 托管。
配置文件在当前目录 etc/config.toml
中含有 mysql 的连接地址配置,如果连接数据库报错,可以检查一下用户名和密码
夜莺服务端部署好之后,浏览器访问 17000 就可以体验相关功能了,默认用户是 root
,密码是 root.2020
Categraf官方github地址:https://github.com/flashcatcloud/categraf
解压categraf
tar xf categraf-v0.2.38-linux-amd64.tar.gz -C /opt
cd /opt
解压完毕后会发现有一个可执行文件categraf和一个文件夹conf,conf文件下面有很多input的文件夹,里面都是每一个插件的配置文件(xxx.toml)config.toml是主配置文件
打开config.toml进行配置
......
...... ##第一步 找到[[writers]]字段
[writer_opt]
batch = 1000
chan_size = 1000000
[[writers]]
url = "http://127.0.0.1:17000/prometheus/v1/write" ##这里的端口要改成你n9e启动的端口,默认的就是17000,其实就是你n9e的地址
# Basic auth username
......
...... ##第二步 找到[heartbeat]字段
[ibex]
enable = false
## ibex flush interval
interval = "1000ms"
## n9e ibex server rpc address
servers = ["127.0.0.1:20090"]
## temp script dir
meta_dir = "./meta"
[heartbeat]
enable = true ##这里的false改为ture 启动heartbeat功能来收集本台主机的信息
# report os version cpu.util mem.util metadata
url = "http://127.0.0.1:17000/v1/n9e/heartbeat"
然后直接启动categraf
nohup ./categraf &>stdout.log &
然后可以查看本台主机状态在n9e的web页面查看
VictoriaMetrics官方文档:VictoriaMetrics: Simple & Reliable Monitoring for Everyone
Github下载地址:Releases · VictoriaMetrics/VictoriaMetrics (github.com)
VictoriaMetrics 架构简单,可靠性高,在性能,成本,可扩展性方面表现出色,社区活跃,且和 Prometheus 生态绑定紧密。如果单机版本的 Prometheus 无法在容量上满足贵司的需求,可以使用 VictoriaMetrics 作为时序数据库。
VictoriaMetrics 提供单机版和集群版。如果您的每秒写入数据点数小于100万(这个数量是个什么概念呢,如果只是做机器设备的监控,每个机器差不多采集200个指标,采集频率是10秒的话每台机器每秒采集20个指标左右,100万/20=5万台机器),VictoriaMetrics 官方默认推荐您使用单机版,单机版可以通过增加服务器的CPU核心数,增加内存,增加IOPS来获得线性的性能提升。且单机版易于配置和运维,
-storageDataPath
可以说VictoriaMetrics是企业版的普罗米修斯。
部署安装解压
cd /opt
mkdir vm && cd vm
tar xf victoria-metrics-linux-amd64-v1.90.0.tar.gz
## 我们这里因为是单机点所以用的victoriaMetrics是单机版,解压过后只有一个文件victoria-metrics-prod
直接启动VictoriaMetrics
nohup ./victoria-metrics-prod &> stdout.log &
他的默认端口是8428 启动后 可以使用命令ss -ntpl查看是否启动,启动成功后如果不指定存储目录他会在当前目录默认创建一个victoria-metrics-data的文件夹来存储数据 如果需要更改存储目录加参数-storageDataPath 即可
修改n9e的配置文件,配置VictoriaMetrics的地址来查看数据
vim /opt/n9e/etc/config.toml
.....
.....
..... ##在最后找到 [[Pushgw.Writers]]字段
[[Pushgw.Writers]]
# Url = "http://127.0.0.1:8480/insert/0/prometheus/api/v1/write"
#Url = "http://127.0.0.1:9090/api/v1/write" ##这里注释掉 这个是普罗米修斯的默认的remote-wirte协议的接口,因为我们安装的是vm所以这里注释掉
Url = "http://127.0.0.1:8428/api/v1/write" ##这里添加为VictoriaMetrics的地址8428的端口
# Basic auth username
BasicAuthUser = ""
# Basic auth password
BasicAuthPass = ""
# timeout settings, unit: ms
Headers = ["X-From", "n9e"]
Timeout = 10000
DialTimeout = 3000
TLSHandshakeTimeout = 30000
ExpectContinueTimeout = 1000
IdleConnTimeout = 90000
# time duration, unit: ms
KeepAlive = 30000
MaxConnsPerHost = 0
MaxIdleConns = 100
MaxIdleConnsPerHost = 100
## Optional TLS Config
# UseTLS = false
# TLSCA = "/etc/n9e/ca.pem"
# TLSCert = "/etc/n9e/cert.pem"
# TLSKey = "/etc/n9e/key.pem"
# InsecureSkipVerify = false
# [[Writers.WriteRelabels]]
# Action = "replace"
# SourceLabels = ["__address__"]
# Regex = "([^:]+)(?::\\d+)?"
# Replacement = "$1:80"
# TargetLabel = "__address__"
重启n9e
pkill n9e
nohup ./n9e &> n9e.log &
进入n9e的web页面17000端口添加数据源
然后保存 验证是否配置数据源成功
还可以创建一些内置的告警规则来告警判断
在这里也可以自己新增加告警规则来判断告警
至此部署完成
这里再补充一下n9e配置文件存储日志的字段,切片,类似于ELK里的E做切片存储
vim /opt/n9e/etc/config.toml
.....
.....
..... 找到log字段
[Log]
# log write dir
Dir = "logs" ##这里的意思是日志写到当前目录的logs目录下
# log level: DEBUG INFO WARNING ERROR
Level = "DEBUG"
# stdout, stderr, file
Output = "stdout"
# # rotate by time
# KeepHours: 4 ##这里的意思是我要保存4个小时的n9e日志
# # rotate by size
# RotateNum = 3 ##这里是按大小来存储日志 存储3个文件,每个文件有256MB大小这么大来存储日志,对应下面的RotateSize字段来配置启动
# # unit: MB
# RotateSize = 256
如果需要实现日志的存储其他功能 把前面的注释取消掉就可以连通
后面还会每周更新这个夜莺系列 还有很多用法,告警,还有一些案列来做,后面的详细的页面功能也会一一介绍,可以多看一下n9e的config.toml的配置文件来了解更多夜莺的功能。