当前位置:   article > 正文

Nightingale + categraf监控方案_夜莺监控

夜莺监控

一、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,用一下就会深有感触。

  • Nightingale监控系统部署

  1.1部署方式:

  1. )docker compose部署,使用docker compose 一键部署启动夜莺,这种部署方式,适用于简单测试,不推荐在生产环境使用。
  2. )Helm部署,n9e-helm用于在k8s集群中安装部署Nightingale。维护地址:https://github.com/flashcatcloud/n9e-helm。
  3. )服务端组件部署,夜莺的服务端有两个组件,分别为n9e-webapi和n9e-serveer。n9e-webapi 用于提供 API 给前端 JavaScript 使用,n9e-server 的职责是告警引擎和数据转发器。依赖的组件有 MySQL、Redis、时序库,时序库我们这里使用 Prometheus。

服务端组件部署架构图:

 

其他部署方式还包括VictoriaMetrics,lbex等,具体部署可参考https://n9e.github.io/docs/install/server/ 链接。

1.2服务部署【此处采用服务端组件部署方式】

  1. )服务器资源简介:

机器

ip

操作系统

内存

cpu

Server端(虚拟机)

192.168.48.100

CentOS7.4

1G

1C

Client端(虚拟机)

192.168.48.11

CentOS7.4

1G

1C

  1. )基础环境配置,关闭防火墙,设置主机名,关闭selinux,矫正时间并配置时间同步服务。

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

  1. )Server端安装对应组件。【Prometheus,MySQL,redis】

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参考:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/158689
推荐阅读
相关标签
  

闽ICP备14008679号