http://n9e.didiyun.com/
夜莺是一套分布式高可用的运维监控系统,最大的特点是混合云支持,既可以支持传统物理机虚拟机的场景,也可以支持K8S容器的场景。同时,夜莺也不只是监控,还有一部分CMDB的能力、自动化运维的能力,很多公司都基于夜莺开发自己公司的运维平台
https://gitee.com/cnperl/Nightingale
https://github.com/didi/nightingale
https://github.com/didi/nightingale/blob/master/changelog
3.1.1
影响模块:n9e-job
更新内容:job模块之前给监控用的callback地址method误设置为了get,是不对的,改成了post
3.1.2
影响模块:n9e-rdb
更新内容:子节点修改的时候,不允许修改为租户节点
3.1.3
影响模块:n9e-monapi
更新内容:对于P2、P3的告警会发送重复的两条
3.1.4
影响模块:n9e-index n9e-judge n9e-monapi n9e-rdb n9e-transfer n9e-tsdb
更新内容:把hbs的逻辑从monapi挪到rdb,拆分监控的权限点
3.1.5
影响模块:n9e-monapi
更新内容:清理策略的时候会空指针,node删除了,策略还在,此时会复现
3.1.6
影响模块:n9e-ams etc/gop.yml
更新内容:主机设备增加了扩展字段的管理,用于维护一些位置信息、过保信息,增加了新的sql:sql/n9e_ams_3.1.6.sql
3.2.0
影响模块:n9e-agent etc/agent.yml
更新内容:agent支持metrics指标采集能力,这个版本是为商业版本服务的,开源用户无需更新
3.3.0
影响模块:n9e-rdb n9e-transfer n9e-judge n9e-ams n9e-monapi sql/n9e_rdb_3.3.0.sql etc/*.tpl
更新内容:增强安全性:密码复杂度、cookie处理优化等;支持M3DB作为存储后端(如果要尝试M3需要修改transfer、monapi配置文件);修复告警引擎与条件串数的问题;为主机设备增加自定义字段的能力
3.3.1
影响模块:n9e-job n9e-rdb n9e-agent n9e-ams n9e-judge
更新内容:修复job模块的一个调度bug;rdb支持根据org搜索user;agent在fields变化时及时感知,fields和host扩展字段联动;解决上个版本引入的judge处理nodata的问题
3.4.0
升级内容:
- 增强了安全性,引入了session机制,写入cookie的内容从user.uuid变更为随机session.id
- 修复部分sql注入漏洞
- 告警引擎函数优化,all、c_avg_rate_abs等
- 告警消息内容优化,可以展示设备名称和设备备注,感谢冯骐的PR
- 增加了大盘导入导出功能
升级方法:
- 除了agent、tsdb、index的二进制不用升级,其他所有模块的二进制都要升级
- job ams monapi rdb 四个模块的配置文件中的cookieName全部换成ecmc-sid
- rdb的配置文件发生了较大变化,需要对照升级
- sql目录下有几个3.4.0的sql,需要导入
3.4.1
升级内容:
- 修复日志监控采集策略配置了tag但是无法编辑的问题
升级方法:
- 更新monapi的二进制即可
3.5.0
升级内容:
- 引入了组件监控模块prober,内置了mysql、redis、mongo监控采集能力
- 引入了内置监控大盘和内置告警策略,可以在任意节点一键导入内置大盘和策略
升级方法:
- n9e-monapi n9e-rdb n9e-transfer n9e-ams n9e-job 的二进制要升级
- n9e-agent也可以升级,解决了进程监控的性能问题,如果不在意可以不升级
- n9e-prober 模块需要新部署
- sql目录下有个3.5.0的sql patch文件,需要导入
- etc目录下新增了screen、alert两个目录,需要拷贝到生产环境
- etc目录下新增了plugins目录,需要随着prober模块走
- etc/address.yml里增加prober的配置
3.5.1
升级内容:
- monapi里的alarmEnabled默认值设置为true
- agent进程采集,忽略EOF日志
- agent增加一个接口获取endpoint
- agent日志监控支持一种新的日志时间格式
- 修复组件监控调整采集频率不生效的问题
升级方法:
- 替换n9e-monapi n9e-prober n9e-agent 二进制
Nightingale是一套衍生自Open-Falcon的互联网监控解决方案,融入了滴滴的最佳实践
架构图
- collector即agent,可以采集机器常见指标,支持日志监控,支持插件机制,支持业务通过接口直接上报数据
- transfer提供rpc接口接收collector上报的数据,然后通过一致性哈希,将数据转发给多台tsdb和多台judge
- tsdb即原来的graph组件,用于存储历史数据,支持配置为双写模式提升系统容灾能力,tsdb会把监控数据转发一份给index
- index是索引模块,替换原来的mysql方案,在内存里构建索引,便于后续数据检索,性能大幅提升
- judge是告警引擎,从monapi(portal)同步监控策略,然后对接收到的数据做告警判断,如满足阈值,则生成告警事件推到redis
- monapi(alarm)从redis读取judge生成的事件,进行二次处理,补充一些元信息,生成告警消息,重新推回redis
- 各发送组件,比如mail-sender、sms-sender等,从redis读取告警消息,发送告警,抽出各类sender是为了后续定制方便
- monapi集成了原来多个模块的功能,提供接口给js调用,api前缀为
/api/portal
,数据查询走transfer,干掉了原来的query组件,api前缀为/api/transfer
,索引查询的api前缀/api/index
,于是,前面搭建nginx,即可通过不同location将请求转发到不同后端 - 数据库仍然使用mysql,主要存储的内容包括:用户信息、团队信息、树节点信息、告警策略、监控大盘、屏蔽策略、采集策略、部分组件心跳信息等
rpm包安装部署
下载地址:
https://dl.cactifans.com/n9e/2.7.2/
安装 nginx,mysql 组件
nginx部署
yum install nginx -y
[root@n9e ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@n9e ~]# systemctl restart nginx.service
[root@n9e ~]#
数据库部署
yum install mariadb-server.x86_64 -y
[root@n9e home]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@n9e home]# systemctl restart mariadb.service
[root@n9e home]#
[root@n9e ~]# mysql_secure_installation
All in one
tar zxvf n9e-2.7.2-dbd81ee.el7.x86_64.rpm-bundle.tar.gz
yum install n9e-* -y
[root@n9e ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 5.5.65-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> create user n9e@localhost identified by 'n9epwd123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on n9e_hbs.* to n9e@localhost;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on n9e_mon.* to n9e@localhost;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on n9e_uic.* to n9e@localhost;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@n9e ~]# cp /usr/local/n9e/etc/nginx.conf /etc/nginx/
cp: overwrite ‘/etc/nginx/nginx.conf’? y
[root@n9e ~]# systemctl restart nginx
[root@n9e ~]# systemctl enable --now n9e-index n9e-tsdb n9e-transfer n9e-monapi n9e-judge n9e-collector
Created symlink from /etc/systemd/system/multi-user.target.wants/n9e-index.service to /usr/lib/systemd/system/n9e-index.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/n9e-tsdb.service to /usr/lib/systemd/system/n9e-tsdb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/n9e-transfer.service to /usr/lib/systemd/system/n9e-transfer.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/n9e-monapi.service to /usr/lib/systemd/system/n9e-monapi.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/n9e-judge.service to /usr/lib/systemd/system/n9e-judge.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/n9e-collector.service to /usr/lib/systemd/system/n9e-collector.service.
[root@n9e ~]#
[root@n9e ~]# cd /usr/local/n9e/
[root@n9e n9e]# tree
.
├── control
├── data
│ └── 5821
├── etc
│ ├── address.yml
│ ├── collector.yml
│ ├── index.yml
│ ├── judge.yml
│ ├── monapi.yml
│ ├── mysql.yml
│ ├── nginx.conf
│ ├── transfer.yml
│ └── tsdb.yml
├── logs
│ ├── collector
│ │ ├── DEBUG.log
│ │ ├── ERROR.log
│ │ ├── FATAL.log
│ │ ├── INFO.log
│ │ └── WARNING.log
│ ├── index
│ │ ├── DEBUG.log
│ │ ├── ERROR.log
│ │ ├── FATAL.log
│ │ ├── INFO.log
│ │ └── WARNING.log
│ ├── judge
│ │ ├── DEBUG.log
│ │ ├── ERROR.log
│ │ ├── FATAL.log
│ │ ├── INFO.log
│ │ └── WARNING.log
│ ├── monapi
│ │ ├── DEBUG.log
│ │ ├── ERROR.log
│ │ ├── FATAL.log
│ │ ├── INFO.log
│ │ └── WARNING.log
│ ├── transfer
│ │ ├── DEBUG.log
│ │ ├── ERROR.log
│ │ ├── FATAL.log
│ │ ├── INFO.log
│ │ └── WARNING.log
│ └── tsdb
│ ├── DEBUG.log
│ ├── ERROR.log
│ ├── FATAL.log
│ ├── INFO.log
│ └── WARNING.log
├── n9e-collector
├── n9e-index
├── n9e-judge
├── n9e-monapi
├── n9e-transfer
├── n9e-tsdb
├── plugin
│ ├── 60_plugin_status.py
│ └── 60_uptime.sh
├── pub
│ ├── favicon.ico
│ ├── index-578b45d9a559320d6821.css
│ ├── index-578b45d9a559320d6821.js
│ ├── index-578b45d9a559320d6821.js.map
│ ├── index.html
│ ├── lib-033bee8514de110e36ef.dll.js
│ └── static
│ ├── Linearicons.01ce5c51.eot
│ ├── Linearicons.5afa2cd3.svg
│ ├── Linearicons.64e816d9.woff
│ ├── Linearicons.fa3c7ba9.ttf
│ ├── logo-l.a542dbb8.png
│ └── logo-s.97cdf0ff.png
└── sql
├── n9e_hbs.sql
├── n9e_mon.sql
├── n9e_uic.sql
└── upgrade_2.3.0.sql
14 directories, 64 files
[root@n9e n9e]#
[root@n9e etc]# tree
.
├── address.yml
├── collector.yml
├── index.yml
├── judge.yml
├── monapi.yml
├── mysql.yml
├── nginx.conf
├── transfer.yml
└── tsdb.yml
0 directories, 9 files
[root@n9e etc]# pwd
/usr/local/n9e/etc
[root@n9e etc]#
[root@n9e n9e]# ls -l
total 131492
-rwxr-xr-x 1 n9e n9e 3721 Jul 5 12:48 control
drwxr-xr-x 3 n9e n9e 18 Sep 10 21:31 data
drwxr-xr-x 2 n9e n9e 169 Sep 10 21:22 etc
drwxr-xr-x 8 n9e n9e 91 Sep 10 21:31 logs
-rwxr-xr-x 1 n9e n9e 22598774 Jul 5 12:49 n9e-collector
-rwxr-xr-x 1 n9e n9e 21930533 Jul 5 12:49 n9e-index
-rwxr-xr-x 1 n9e n9e 21932480 Jul 5 12:49 n9e-judge
-rwxr-xr-x 1 n9e n9e 22537776 Jul 5 12:49 n9e-monapi
-rwxr-xr-x 1 n9e n9e 25305383 Jul 5 12:49 n9e-transfer
-rwxr-xr-x 1 n9e n9e 20323496 Jul 5 12:50 n9e-tsdb
drwxr-xr-x 2 n9e n9e 53 Sep 10 21:22 plugin
drwxr-xr-x 3 n9e n9e 212 Sep 10 21:22 pub
drwxr-xr-x 2 n9e n9e 88 Sep 10 21:22 sql
[root@n9e n9e]#
[root@n9e n9e]# ./n9e-collector -v
2020/09/10 21:37:03 maxprocs: Leaving GOMAXPROCS=2: CPU quota undefined
Version: 2.7.2
Git Commit Hash: dbd81eed2b347d16e9cf7f487563d08e58ccdaf9
UTC Build Time: 2020-07-05_04:49:48AM
[root@n9e n9e]#
v3 版本 升级
[root@n9e app]# ll
total 12
lrwxrwxrwx 1 root root 15 Nov 23 09:45 n9e -> /app/n9e-3.3.0/
drwxr-xr-x 10 root root 4096 Oct 29 12:47 n9e-3.0
drwxr-xr-x 10 root root 4096 Nov 23 10:16 n9e-3.3.0
drwxr-xr-x 5 root root 4096 Dec 27 08:59 n9e-3.3.1
[root@n9e app]# ln -snf /app/n9e-3.3.1/ /app/n9e
[root@n9e app]# ll
total 12
lrwxrwxrwx 1 root root 15 Dec 27 09:02 n9e -> /app/n9e-3.3.1/
drwxr-xr-x 10 root root 4096 Oct 29 12:47 n9e-3.0
drwxr-xr-x 10 root root 4096 Nov 23 10:16 n9e-3.3.0
drwxr-xr-x 5 root root 4096 Dec 27 08:59 n9e-3.3.1
[root@n9e app]# pwd
/app
[root@n9e app]# cd n9e
[root@n9e n9e]# ./control restart all
agent stopped
judge stopped
transfer stopped
index stopped
tsdb stopped
monapi stopped
ams stopped
job stopped
rdb stopped
rdb started
job started
ams started
monapi started
tsdb started
index started
transfer started
judge started
agent started
[root@n9e n9e]#
添加前端文件
cd /app/n9e
wget http://116.85.64.82/pub.tar.gz
tar zxvf pub.tar.gz
cp etc/nginx.conf /etc/nginx/nginx.conf
systemctl restart nginx
[root@n9e home]# grafana-cli --pluginUrl https://github.com/n9e/grafana-n9e-datasource/archive/v1.5.4.zip plugins install grafana-n9e-datasource
installing grafana-n9e-datasource @
from: https://github.com/n9e/grafana-n9e-datasource/archive/v1.5.4.zip
into: /var/lib/grafana/plugins
✔ Installed grafana-n9e-datasource successfully
Restart grafana after installing plugins . <service grafana-server restart>
[root@n9e home]# systemctl restart grafana-server.service
[root@n9e home]#
告警
https://github.com/n9e/mail-sender
升级 3.51
1:导入数据库
mysql -uroot -p\!Q2w3e4r < n9e_ams.sql
mysql -uroot -p\!Q2w3e4r < n9e_hbs.sql
mysql -uroot -p\!Q2w3e4r < n9e_job.sql
mysql -uroot -p\!Q2w3e4r < n9e_mon.sql
mysql -uroot -p\!Q2w3e4r < n9e_rdb.sql
修改配置文件
数据库连接配置
nginx前端文件存放路径
检查各个服务是否能启动 无法启动请检查报错日志
[root@n9e n9e]# ./control status
root 1024 0.1 0.5 922532 24080 ? Ssl 11:22 0:11 /usr/local/n9e/n9e-collector
root 86957 0.7 0.9 920592 37128 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-rdb
root 86974 0.2 0.3 923704 14788 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-job
root 87000 0.0 0.3 912900 14236 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-ams
root 87045 0.1 0.4 919152 18792 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-monapi
root 87069 0.5 0.4 906856 18808 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-tsdb
root 87086 0.0 0.4 987820 16588 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-index
root 87116 0.5 0.6 932692 26452 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-transfer
root 87133 0.9 0.4 989236 18448 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-judge
root 87169 2.7 0.4 981620 19720 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-agent
root 87210 1.0 0.4 928388 17664 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-prober
[root@n9e n9e]#
[root@n9e n9e]# cd logs/
[root@n9e logs]# ls
agent ams index job judge monapi prober rdb transfer tsdb
[root@n9e logs]#
新版主要功能点
客户端部署: