(一): 夜莺介绍
**夜莺监控( 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
1.架构分析:
最新版本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: 是夜莺监控的默认的自制的数据采集器
2.部署n9e+categraf+VictoriaMetrics+mysql+redis中心化二进制单机部署夜莺
name系统配置flashcatCentos7.92核4G 磁盘100G
(1):下载部署n9e:
** 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
**
(2):下载部署categraf:
** 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页面查看
(3):安装VictoriaMetrics ,配置对接数据源:
**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来获得线性的性能提升。且单机版易于配置和运维,
- 它可以用作普罗米修斯的长期储存。
- 它可以用作 Grafana 中 Prometheus 的直接替代品,因为它支持 Prometheus 查询 API。
- 它可以用作Grafana中Graphite的直接替代品,因为它支持Graphite API。与Graphite相比,VictoriaMetrics允许将基础设施成本降低10倍以上 - 请参阅此案例研究。
- 易于设置和操作:- VictoriaMetrics由一个没有外部依赖关系的小可执行文件组成。- 所有配置都是通过具有合理默认值的显式命令行标志完成的。- 所有数据存储在命令行标志指向的单个目录中。
-storageDataPath
- 使用vmbackup/vmrestore工具可以轻松快速地从即时快照进行备份。有关更多详细信息,请参阅此文章。 - 它实现了类似 PromQL 的查询语言 - MetricsQL,它在 PromQL 之上提供了改进的功能。
- 它提供全局查询视图。多个 Prometheus 实例或任何其他数据源可能会将数据摄取到 VictoriaMetrics 中。稍后可以通过单个查询查询此数据。
- 它为数据引入和数据查询提供了高性能以及良好的垂直和水平可扩展性。它的性能比InfluxDB和TimescaleDB高出20倍。
- 在处理数百万个独特的时间序列(又称高基数)时,它使用的 RAM 比 InfluxDB 少 10 倍,比普罗米修斯、灭霸或 Cortex 少 7 倍。
可以说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端口添加数据源
然后保存 验证是否配置数据源成功
这样就可以通过sql语句查询本机的一些数据信息
还可以创建一些内置的告警规则来告警判断
点击批量克隆
在这里也可以自己新增加告警规则来判断告警
至此部署完成
这里再补充一下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的配置文件来了解更多夜莺的功能。
版权归原作者 Dream云原生梦工厂 所有, 如有侵权,请联系我们删除。