N9E夜莺系统部署
2023-12-04
项目介绍
夜莺最初由滴滴开发和开源,主要功能是接收采集器(Agent)发送来的数据,对接 Prometheus、Elasticsearch、Jaeger 后,通过 api 查询它们数据。
架构图
架构图分 7 个模块:
- n9e-webapi 用于提供 API 给前端 JavaScript 使用
- n9e-server 的职责是告警引擎和数据转发器
- Mysql 存放配置类别信息,如用户,监控大盘,告警规则等
- Redis 存放访问令牌(JWT Token),心跳信息,如机器列表中CPU、内存、时间偏移、核数、操作系统、CPU架构等
- Agent 采集端主动把采集的指标推送给 n9e-server,n9e-server 接收到数据转发给时序数据库(配置文件需要有地址),这里可以用 Prometheus 的时序数据库代替
- Prometheus 的接口负责接收 Server 转发来的数据并存储,并且本身存储了 Exporters 数据,提供给 Server 查询接口
- Exporters 是 Prometheus 的指标,由 Prometheus 主动采集
安装
先安装基础中间件 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 的目录,后面把 n9e 相关的文件解压到这里
mkdir -p /opt/n9e && cd /opt/n9e
# 下载 n9e 发布包,amd64 是 x84 的包,下载站点也提供 arm64 的包,如果需要其他平台的包则要自行编译了
tarball=n9e-v6.0.0-ga.9.2-linux-amd64.tar.gz
urlpath=https://download.flashcat.cloud/${tarball}
wget -q $urlpath || exit 1
# 解压缩发布包
tar zxvf ${tarball}
# 解压缩之后,可以看到 n9e.sql 是建表语句,导入数据库
mysql -uroot -p1234 < n9e.sql
# 启动 n9e,先使用 nohup 简单测试,如果需要 systemd 托管,请自行准备 service 文件
nohup ./n9e &> n9e.log &
# 检查 n9e.log 是否有异常日志,检查端口是否在监听,正常应该监听在 17000
ss -tlnp|grep 17000
夜莺服务对接 Prometheus 远程写
# 打开夜莺配置文件,添加远程写
# vi etc/config.toml
[[Pushgw.Writers]]
# Url = "http://127.0.0.1:8480/insert/0/prometheus/api/v1/write"
Url = "http://192.168.17.22:9090/api/v1/write"
重启服务
访问页面
用户名密码
默认用户是 root,密码是 root.2020。
对接 Prometheus,后查询 Prometheus 数据,在系统配置里添加数据源后,到时序指标-即使查询
查询。
对接 Telegraf 采集器
telegraf.conf 配置文件 output 插件添加夜莺端口
# vi telegraf.conf
[[outputs.opentsdb]]
host = "http://192.168.17.52"
port = 17000
http_batch_size = 50
http_path = "/opentsdb/put"
debug = true
separator = "_"
采集器的机器会在基础设施-机器列表
里显示,发现列表里很多都是 unknown,是因为机器列表数据得用同公司 catgraf 采集器才有。
对接成功后,采集器会把数据上报给 server,server 转给时序数据库,所以现在数据存储在 prometheus 中,通过即时查询选择 prometheus 就可以查到 telegraf 数据