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,是不对的,改成了post3.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.sql3.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.serviceCreated 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.serviceCreated 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.gzyum install n9e-* -y
[root@n9e ~]# mysql -u root -pEnter password:Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 16Server version: 5.5.65-MariaDB MariaDB ServerCopyright (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)]> exitBye[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-collectorCreated 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.sql14 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.yml0 directories, 9 files[root@n9e etc]# pwd/usr/local/n9e/etc[root@n9e etc]#
[root@n9e n9e]# ls -ltotal 131492-rwxr-xr-x 1 n9e n9e 3721 Jul 5 12:48 controldrwxr-xr-x 3 n9e n9e 18 Sep 10 21:31 datadrwxr-xr-x 2 n9e n9e 169 Sep 10 21:22 etcdrwxr-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-tsdbdrwxr-xr-x 2 n9e n9e 53 Sep 10 21:22 plugindrwxr-xr-x 3 n9e n9e 212 Sep 10 21:22 pubdrwxr-xr-x 2 n9e n9e 88 Sep 10 21:22 sql[root@n9e n9e]#
[root@n9e n9e]# ./n9e-collector -v2020/09/10 21:37:03 maxprocs: Leaving GOMAXPROCS=2: CPU quota undefinedVersion: 2.7.2Git Commit Hash: dbd81eed2b347d16e9cf7f487563d08e58ccdaf9UTC Build Time: 2020-07-05_04:49:48AM[root@n9e n9e]#


v3 版本 升级
[root@n9e app]# lltotal 12lrwxrwxrwx 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.0drwxr-xr-x 10 root root 4096 Nov 23 10:16 n9e-3.3.0drwxr-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]# lltotal 12lrwxrwxrwx 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.0drwxr-xr-x 10 root root 4096 Nov 23 10:16 n9e-3.3.0drwxr-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 allagent stoppedjudge stoppedtransfer stoppedindex stoppedtsdb stoppedmonapi stoppedams stoppedjob stoppedrdb stoppedrdb startedjob startedams startedmonapi startedtsdb startedindex startedtransfer startedjudge startedagent 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-datasourceinstalling grafana-n9e-datasource @from: https://github.com/n9e/grafana-n9e-datasource/archive/v1.5.4.zipinto: /var/lib/grafana/plugins✔ Installed grafana-n9e-datasource successfullyRestart 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.sqlmysql -uroot -p\!Q2w3e4r < n9e_hbs.sqlmysql -uroot -p\!Q2w3e4r < n9e_job.sqlmysql -uroot -p\!Q2w3e4r < n9e_mon.sqlmysql -uroot -p\!Q2w3e4r < n9e_rdb.sql
修改配置文件
数据库连接配置
nginx前端文件存放路径
检查各个服务是否能启动 无法启动请检查报错日志
[root@n9e n9e]# ./control statusroot 1024 0.1 0.5 922532 24080 ? Ssl 11:22 0:11 /usr/local/n9e/n9e-collectorroot 86957 0.7 0.9 920592 37128 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-rdbroot 86974 0.2 0.3 923704 14788 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-jobroot 87000 0.0 0.3 912900 14236 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-amsroot 87045 0.1 0.4 919152 18792 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-monapiroot 87069 0.5 0.4 906856 18808 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-tsdbroot 87086 0.0 0.4 987820 16588 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-indexroot 87116 0.5 0.6 932692 26452 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-transferroot 87133 0.9 0.4 989236 18448 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-judgeroot 87169 2.7 0.4 981620 19720 pts/0 Sl 12:58 0:00 /usr/local/n9e/n9e-agentroot 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]# lsagent ams index job judge monapi prober rdb transfer tsdb[root@n9e logs]#

新版主要功能点

客户端部署:
