1、夜莺监控:安装夜莺监控系统

夜莺介绍

夜莺监控( 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项目原核心研发人员。

一键安装

代码在这里:💡 https://github.com/ccfos/nightingale 。如果有 docker 和 docker-compose 环境,我们就可以一键安装了:

git clone https://github.com/ccfos/nightingale.git
cd docker
docker-compose up -d

安装完成之后,浏览器访问nwebapi暴露的18000端口,即可看到页面,默认账号密码如下:

username = "root"
password = "root.2020"

如果对 docker 比较熟悉,用这个方式快速测试非常方便。但是社区答疑过程中发现,很多人想一键安装,但是对 docker 的理解是半瓶子醋,出现一点小问题都无法解决,所以,如果你对 docker 不是那么熟悉,一键安装尝试没有安装起来,请使用二进制安装,也很简单。

如果你已经使用 docker-compose 跑起来了,下面的章节也建议读一下,可以对整体架构有理解。

架构介绍

安装之前我们先来看一下系统架构,理解了架构再去安装,出现问题也容易解决。我们先来看产品架构图:

图片

Nightingale 可以接收各种采集器上报的监控数据,转存到时序库(可以支持 Prometheus、M3DB、VictoriaMetrics、Thanos 等),并提供告警规则、屏蔽规则、订阅规则的配置能力,提供监控数据的查看能力,提供告警自愈机制(告警触发之后自动回调某个 webhook 地址或者执行某个脚本),提供历史告警事件的存储管理、聚合查看的能力。

橙色的部分是夜莺服务端,包含四个产品功能,拆分成两个服务模块:n9e-webapi 和 n9e-server,n9e-webapi 是 API 层,响应 ajax 请求,n9e-server 是一个纯后端模块,跟随时序库,一套时序库对应一套 n9e-server,作为告警引擎,从数据库同步告警规则、屏蔽规则、订阅规则,在内存里处理,生成告警事件,另外 n9e-server 也提供各种数据接收接口,接收推模式的数据上报(后续章节给大家讲讲监控系统中的推拉模型,这是在监控领域一个挺有意思的话题),转发给时序库。

因为要保存用户配置的告警规则、监控大盘、自愈脚本、用户权限信息等,所以需要依赖数据库,可以选用 MySQL 或 PG。因为要处理 jwt token,存储一些心跳信息,所以引入了 Redis,后面我们也要提前一并准备好。

当然,监控系统最核心的就是时序库了,夜莺可以支持多种时序库,比如 Prometheus、VictoriaMetrics、Thanos、M3DB 等,通过 remote write 方式把监控数据发往时序库,假设这里我们选择 Prometheus 作为时序库,即让 n9e-server 把数据通过 remote write 方式写给 Prometheus,那 Prometheus 就要开启 remote-write-receiver,通过 Prometheus 的启动命令参数传入:

--enable-feature=remote-write-receiver

所以,服务端总共有哪些组件?MySQL、Redis、Prometheus、n9e-server、n9e-webapi,整体架构如下:

图片

安装依赖

这里给大家准备一个小脚本,用于一键安装 prometheus、mysql、redis,大家按需取用:

# install prometheus
mkdir -p /opt/prometheus
wget https://s3-gz01.didistatic.com/n9e-pub/prome/prometheus-2.28.0.linux-amd64.tar.gz -O prometheus-2.28.0.linux-amd64.tar.gz
tar xf prometheus-2.28.0.linux-amd64.tar.gz
cp -far prometheus-2.28.0.linux-amd64/*  /opt/prometheus/

# service 
cat <<EOF >/etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple

ExecStart=/opt/prometheus/prometheus  --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/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
EOF

systemctl daemon-reload
systemctl enable prometheus
systemctl restart prometheus
systemctl status prometheus

# 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

安装夜莺

夜莺的安装包从哪里搞?大家可以自行编译,后端代码在上文提到了,前端代码在:https://github.com/n9e/fe-v5

我们也提供编译好的二进制,不过只有 linux-amd64 的版本,可以从两个地方下载:

github:https://github.com/ccfos/nightingale/releases
gitlink:https://www.gitlink.org.cn/ccfos/nightingale/releases

gitlink是在国内的代码托管平台,速度比较快,网络不好的话可以选择从 gitlink 下载。假设我们下载了 5.9.3 这个版本的发布包:n9e-5.9.3.tar.gz 安装命令如下(夜莺也在持续增加新功能,发版比较频繁,如果您看到这个文章的时候,最新版本已经不是 5.9.3 了,没关系,下载最新版本即可):

tar zxvf n9e-5.9.3.tar.gz

mysql -uroot < docker/initsql/a-n9e.sql

nohup ./n9e server &> server.log &
nohup ./n9e webapi &> webapi.log &

# check logs
# check port

上面的逻辑非常简单,无非就是解压缩之后导入初始化 sql,然后通过 nohup 启动夜莺相关进程即可。生产环境一般用 systemd 来托管而不用 nohup 来启动进程

如果启动成功,server 默认会监听在 19000 端口,webapi 会监听在 18000 端口,且日志没有报错。此时浏览器请求 18000 端口,就可以体验了,默认用户名和密码在上文已经说过,不再赘述。

上面是一个快速的单机安装部署方式,如果想部署成集群版本,可以参考夜莺的官方文档:https://n9e.github.io/docs/install/server/

安装客户端

服务端部署完了之后,就剩下采集器了,监控系统的技术产品复杂度在服务端,而客户端因为承载了众多的采集能力,工作量也很大。另外:

监控体系要想良好落地,非常依赖指标的规范化和完备性,所以,采集侧的能力至关重要,越是大公司感受会越明显,大家要千万关注!

Categraf 是我们攒的一款客户端采集器,希望是把各种 exporter 集成到一个二进制中,便于管理,也希望把 Telegraf 中一些 OS、脚本执行、进程端口监控等能力集成进来,把 mtail 这种日志监控的能力集成进来,当然,还有logs、traces 的采集能力。

这个工作任重道远,不过,功在当代利在千秋,欢迎各位业界同仁一起来参与。本篇是介绍监控系统安装,客户端这块,我们就以 Categraf 为例来讲解。

Categraf 也是同时托管在 github 和 gitlink,地址:

github: https://github.com/flashcatcloud/categraf
gitlink: https://www.gitlink.org.cn/flashcat/categraf

Categraf 的 README 中罗列了一些有用的链接,其中有个 QuickStart:https://www.gitlink.org.cn/flashcat/categraf/wiki/QuickStart ,大家一定要重点阅读。

Categraf 采集了监控数据,是如何与夜莺服务端打交道的呢?这个原理是:Categraf 采集了数据之后,可以通过 remote write 协议推给服务端,而夜莺的 n9e-server 提供了多种数据接收的接口,其中就支持 remote write 方式接收数据,所以,二者可以良好整合。支持 remote write 协议的时序库有很多,所以,Categraf 都可以和这些时序库整合使用。

顺便说一下夜莺接收数据的几个接口:

  • /prometheus/v1/write 接收 remote write 协议的数据

  • /datadog/api/v1/series 接收 datadog 协议的数据

  • /opentsdb/put 接收 OpenTSDB 协议的数据

  • /openfalcon/push 接收 Open-Falcon 协议的数据

Categraf 的安装包,大家可以自行编译,也可以去 github、gitlink 的 release 页面下载我们编译好的二进制:

- https://github.com/flashcatcloud/categraf/releases
- https://www.gitlink.org.cn/flashcat/categraf/releases

请大家使用 v0.1.11 以上版本的 Categraf。下载了压缩包之后解压缩,修改 conf/config.toml 中的 writer 地址为你的环境的地址,然后一条命令即可启动:

nohup ./categraf &> stdout.log &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值