赞
踩
一、Nightingale介绍:
1.1、Nightingale简介和架构图
夜莺监控( 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项目原核心研发人员。
Nightingale 可以接收各种采集器上报的监控数据,转存到时序库(可以支持Prometheus、M3DB、VictoriaMetrics、Thanos等),并提供告警规则、屏蔽规则、订阅规则的配置能力,提供监控数据的查看能力,提供告警自愈机制(告警触发之后自动回调某个webhook地址或者执行某个脚本),提供历史告警事件的存储管理、分组查看的能力。
Nightingale架构图:
1.2、对比其他监控软件
Zabbix
Zabbix 是一款老牌的监控系统,对机器和网络设备的监控覆盖很全,比如支持 AIX 系统,常见的开源监控都是支持 Linux、Windows,AIX 较少能够支持,Zabbix 用户群体广泛,国内很多公司基于 Zabbix 做商业化服务,不过 Zabbix 使用数据库做存储,容量有限,监控大盘不足,配置麻烦,服务器较多的话,很卡。
Open-Falcon
因为开发 Open-Falcon 和 Nightingale 的是一拨人,所以很多社区伙伴会比较好奇,为何要新做一个监控开源软件。核心点是 Open-Falcon 和 Nightingale 的差异点实在是太大了,Nightingale 并非是 Open-Falcon 设计逻辑的一个延续,就看做两个不同的软件就好。
Open-Falcon 是 14 年开发的,当时是想解决 Zabbix 的一些容量问题,可以看做是物理机时代的产物,整个设计偏向运维视角,虽然数据结构上已经开始设计了标签,但是查询语法还是比较简单,无法应对比较复杂的场景。
Nightingale 直接支持 PromQL,支持 Prometheus、M3DB、VictoriaMetrics 多种时序库,支持 Categraf、Telegraf、Datadog-Agent、Grafana-Agent 做监控数据采集,支持 Grafana 看图,整个设计更加云原生。
Prometheus
Nightingale 可以简单看做是 Prometheus 的一个企业级版本,把 Prometheus 当做 Nightingale 的一个内部组件(时序库)
Nightingale 可以接入多个 Prometheus,可以允许用户在页面上配置告警规则、屏蔽规则、订阅规则,在页面上查看告警事件、做告警事件聚合统计,配置告警自愈机制,管理监控对象,配置监控大盘等,就把 Nightingale 看做是 Prometheus 的一个 WEBUI 也是可以的,不过实际上,它远远不止是一个 WEBUI,用一下就会深有感触。
1.1部署方式:
服务端组件部署架构图:
其他部署方式还包括VictoriaMetrics,lbex等,具体部署可参考https://n9e.github.io/docs/install/server/ 链接。
1.2服务部署【此处采用服务端组件部署方式】
机器 | ip | 操作系统 | 内存 | cpu |
Server端(虚拟机) | 192.168.48.100 | CentOS7.4 | 1G | 1C |
Client端(虚拟机) | 192.168.48.11 | CentOS7.4 | 1G | 1C |
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
date -s ‘时间’
ntpdate ntp.ntsc.ac.cn
reboot
3.1)安装Prometheus。
tar -zxvf prometheus-2.28.0.linux-amd64.tar.gz
编写Prometheus service文件,使用systemd托管。
vi /etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
ExecStart=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/data --web.enable-lifecycle --enable-feature=remote-write-receiver --query.lookback-delta=2m
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable prometheus
systemctl restart prometheus
systemctl status prometheus
【备注:生产环境下如果需要修改Prometheus的端口,可以修改Prometheus的yml文件,将9090端口修改,然后在systemd代管文件中添加--web.listen-address=:端口 参数。重启Prometheus即可。】
如,需要修改Prometheus的默认端口为19197
vi prometheus.yml
vi /etc/systemd/system/prometheus.service
启动成功后的状态(如下图)
3.2)安装MySQL。
rpm -ivh mariadb-5.5.56-2.el7.x86_64.rpm
rpm -ivh mariadb-devel-5.5.56-2.el7.x86_64.rpm
rpm -ivh mariadb-server-5.5.56-2.el7.x86_64.rpm
rpm -ivh mariadb-bench-5.5.56-2.el7.x86_64.rpm
rpm -ivh mariadb-libs-5.5.56-2.el7.x86_64.rpm
rpm -ivh mariadb-test-5.5.56-2.el7.x86_64.rpm
vi /etc/my.cnf #此处改了MySQL的监听端口。
port=30601 #添加监听端口配置。
设置MySQL root登录密码。
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');"
启动MySQL服务。
systemctl restart mariadb
systemctl enable mariadb
systemctl status mariadb
3.3)安装redis。
rpm -ivh redis-3.2.12-2.el7.x86_64.rpm
vi /etc/redis.conf #此处更改了redis的默认端口,默认为6379端口。
systemctl start redis
systemctl enable redis
4.)Server端安装夜莺组件n9e-webapi,n9e-server。
mkdir /data/n9e
mv n9e-5.8.0.tar.gz /data/n9e
tar -zxvf n9e-5.8.0.tar.gz
将nightingale的sql文件导入MySQL库中。
mysql -uroot -p123456 < docker/initsql/a-n9e.sql
针对n9e server 服务和n9e webapi 服务编写service文件,使用systemd托管。
vi /etc/systemd/system/n9e-server.service
[Unit]
Description=n9e server
Requires=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/data/n9e/n9e server --conf=/data/n9e/etc/server.conf
WorkingDirectory=/data/n9e
Restart=always
RestartSec=1
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
vi /etc/systemd/system/n9e-webapi.service
[Unit]
Description=n9e webapi
Requires=n9e-server.service
[Service]
User=root
Group=root
Type=simple
ExecStart=/data/n9e/n9e webapi --conf=/data/n9e/etc/webapi.conf
WorkingDirectory=/data/n9e
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e-webapi
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable n9e-server
systemctl restart n9e-server
systemctl status n9e-server
systemctl enable n9e-webapi
systemctl restart n9e-webapi
systemctl status n9e-webapi
端口查看,如图,18000为webapi端口,19000为server端口。
到此步骤,n9e夜莺监控server部署完成。
web浏览器访问:http://192.168.48.100:18000/默认登录用户为root,密码为root.2020
5.)Client端部署采集器Categraf。
1.)Categraf采集器基本介绍
Categraf 是一款 all-in-one 的采集器,由 快猫团队 开源,代码托管在两个地方:
gitlink: https://www.gitlink.org.cn/flashcat/categraf
github: https://github.com/flashcatcloud/categraf
Categraf 不但可以采集 OS、MySQL、Redis、Oracle 等常见的监控对象,也准备提供日志采集能力和 trace 接收能力,这是夜莺主推的采集器,相关信息请查阅项目 README
Categraf 采集到数据之后,通过 remote write 协议推给远端存储,Nightingale 恰恰提供了 remote write 协议的数据接收接口,所以二者可以整合在一起,重点是配置 Categraf 的 conf/config.toml 中的 writer 部分,其中 url 部分配置为 n9e-server 的 remote write 接口:
2.)部署Categraf
mv categraf-v0.2.6-linux-amd64.tar.gz /data
cd /data && tar -zxvf categraf-v0.2.6-linux-amd64.tar.gz
vi /etc/systemd/system/categraf.service
[Unit]
Description="Categraf"
After=network.target
[Service]
User=root
Group=root
ExecStart=/data/categraf-v0.2.6-linux-amd64/categraf
WorkingDirectory=/data/categraf-v0.2.6-linux-amd64
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=categraf
[Install]
WantedBy=multi-user.target
vi /data/categraf-v0.2.6-linux-amd64/conf/config.toml
#配置采集器采集到的数据写入nightingale的server中。
[[writers]]
url = "http://127.0.0.1:19000/prometheus/v1/write"
systemctl daemon-reload
systemctl enable categraf.service
systemctl restart categraf.service
systemctl status categraf.service
操作界面配置机器监控大盘。
在监控看图--监控大盘中导入机器监控大盘 。
然后即可看到机器资源运行情况。
可以配置告警。(此处只在界面上配置了告警,没有配置钉钉,邮箱,企微等告警消息推送,如配置可参考nightingale官网配置告警消息推送)。
直接在告警规则处导入机器告警规则即可。
下面两个模块可以看到已配置的机器的活跃告警和历史告警。
最后,博主手写了一份nightingale安装脚本。有需要可以评论留言。
shell参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。