背景介绍
- 夜莺简介
Nightingale是一套衍生自Open-Falcon的互联网监控解决方案,融入了滴滴的最佳实践,由于改动太大,优化太多,产品上已经无法与Open-Falcon平滑兼容,故而单开一个项目。
编写Open-Falcon第一行代码是在2014年,几年下来,有上千家商业公司在生产环境使用,项目也在逐步优化,夜莺可以说是一个颠覆级版本,性能、易用性、可用性都做了大幅改进,在滴滴抗住了7.7亿(资源、组件、应用、业务各层次的监控都有)监控指标,这是一个新的征程,期待与诸君携手,把监控这个领域,做到极致! - 上图是监控告警子系统的监控大盘页面,夜莺已经不只是一个运维监控系统,还有一部分CMDB的能力、自动化运维的能力,很多公司都基于夜莺开发自己公司的运维平台。
- 升级优势
v3版本融入了很多运维平台的功能,组件变多,部署麻烦,不同的组件相互之间有调用关系,在做分布式部署的时候需要了解整体架构才能正确修改配置文件,对用户提出了较高的要求。复杂性相对较高。
随着夜莺v4到来,大大降低升级部署复杂度,把众多服务端模块做了合并。这样原来组件之间的调用都变成了进程内部的方法调用,可靠性性能都会提升。
小编这里参考官方文档为大家介绍一下开发v4的背景、最新模块组成、升级建议,同时演示一下单机快速部署的方式。如果朋友是第一次尝试夜莺,可以按照后面讲解的部署方式来搞,5分钟搞定。
项目架构
模块合并之后,把时序存储抽离,总共只剩3个组件:server、prober、agentd。
服务端就是部署server模块,如果要集群部署,就搞2个机器,每个机器分别部署server模块即可。每个server会使用本机的redis,所以,有几个server就部署几个redis,redis只需监听在127.0.0.1,供本机的server使用即可。
prober是个中心式探针,比如贵司有2个网络区域,每个网络区域可以部署一个prober,用此prober采集监控本区域的数据库中间件。如果担心prober挂掉,每个区域可以部署多个prober做高可用。不同网络区域的prober,有个配置要注意,即:report.region字段,比如有bj和gz两个网络区域,每个网络区域分别部署了2台prober,bj的2台prober,report.region要设置为bj,gz的2台prober,report.region要设置为gz。最后,在server.yml里修改monapi.region字段,配上bj和gz。
如果网络是可以互联互通的,那就简单了,prober和server混部即可,都放到中心。
agentd是部署到所有目标机器的,采集目标机器的性能指标,在目标机器执行插件之类的,v4版本的agentd与server之间通信只走了server的rpc端口,所以相比v3,开通网络acl要变简单了。
快速部署
部署一个单机版本的夜莺v4,请大家提前准备好mysql、redis、nginx,单机部署,直接yum安装即可,非常简便。找一台干净的机器测试!
1. 下载二进制
mkdir -p /home/n9e
cd /home/n9e
wget http://116.85.64.82/n9e-4.0.0.tar.gz
tar zxvf n9e-4.0.0.tar.gz
2. 初始化数据库
这里假设使用 root 账号,密码为 1234,如果不是这个账号密码,需要修改 /home/n9e/etc/mysql.yml
cd /home/n9e/sql
mysql -uroot -p1234 < n9e_ams.sql
mysql -uroot -p1234 < n9e_hbs.sql
mysql -uroot -p1234 < n9e_job.sql
mysql -uroot -p1234 < n9e_mon.sql
mysql -uroot -p1234 < n9e_rdb.sql
3. 配置redis
redis请不要配置密码, 如果redis设置了密码,需要修改/home/n9e/etc/server.yml,把密码改对
4. 前端静态资源文件
放到/home/n9e下,请不要随意更换目录结构,否则还要自行修改nginx.conf,徒增烦恼
cd /home/n9e
wget http://116.85.64.82/pub-3.5.2.tar.gz
tar zxvf pub.tar.gz
5. 配置nginx.conf
如果静态资源文件不是放到/home/n9e下的,就要先修改nginx.conf了
cp etc/nginx.conf /opt/nginx/conf/nginx.conf
systemctl restart nginx
6. 时序数据存储部署
这里选择使用单机版本的m3db
mkdir -p /home/m3db
cd /home/m3db
wget https://s3-gz01.didistatic.com/n9e-pub/tarball/m3dbnode-single-v0.0.1.tar.gz
tar zxvf m3dbnode-single-v0.0.1.tar.gz
cd m3dbnode-single
./scripts/install.sh
//retentionTime 表示历史监控数据存储时长,使用m3一般建议最长不要超过3个月
发送post请求:http://localhost:7201/api/v1/database/create
请求体:
{ "type": "local",
"namespaceName": "default",
"retentionTime": "48h"}
7. 启动相关进程,访问nginx看效果
cd /home/n9e
./control start server
./control start prober
./control start agentd
8. 常见问题排查
- server 模块没有正常启动,可以查看 logs/server/stdout.log 查看是否有一些有用的信息,大概率是 m3 没有安装好,或者 m3 没有用那个 curl 指令初始化。
- 如果用的 pve,可能会因为指令集导致 m3 进程起来,过一会就挂了,所以不要用 pve。
agent部署
简述两步操作:
- 在需要被监控的服务节点安装n9e应用作为客户端;
- 在客户端找到/n9e/etc/address.yml添加对应客户端的ip地址
小编这里只是结合自己单机部署经验做下总结,觉得有用点赞收藏,万分感谢!