周 雷
(中石化宁波工程有限公司,浙江 宁波 315103)
笔者从2008年开始研究监控系统,使用了Nagios开源软件自己搭建了适用公司的网络监控系统,通过监控各种网络服务,比如SMTP、POP3、HTTP、NTP、ICMP、FTP、SSH等,监 控 主机资源,比如CPU、磁盘使用、Syslog等,做到了公司300多台网络设备和服务器的监控,为公司基础设施的稳定运行提供了保障。但随着公司网络、服务器和应用系统日益增长,网络安全的要求日益提高,各系统的监控需求变得越发复杂多样,原有系统在功能和性能方面都存在局限性。通过研究新的监控系统,实现数据采集、数据存储、数据分析、数据展示、监控报警和报警处理的流程机制,保障业务及系统的安全性和连续性,达到减少运维压力、提高运维效率的目的,初步实现监控智能化。
Nightingale由多个组件构成,包含:1.collector:即agent,可以采集机器常见指标,支持日志监控,支持插件机制,支持业务通过接口直接上报数据。2.transfer:提供rpc接口接收collector上报的数据,将数据转发给多台tsdb和多台judge。3.tsdb:即原来的graph组件,用于存储历史数据,支持配置为双写模式提升系统容灾能力,tsdb会把监控数据转发一份给index。4.index:是索引模块,替换原来的mysql方案,在内存里构建索引,便于后续数据检索,性能大幅提升。5.judge:是告警引擎,从monapi(portal)同步监控策略,然后对接收到的数据做告警判断。6.monapi(alarm):从redis读取judge生成的事件,进行二次处理,补充一些元信息,生成告警消息,重新推回redis。各发送组件。7.数据库:仍然使用mysql,主要存储的内容包括:用户信息、团队信息、树节点信息、告警策略、监控大盘、屏蔽策略、采集策略、部分组件心跳信息等。
1.1 准备好CentOS7,采取yum安装即可。
1.2 修改redis和nginx配置:修改配置文件中的daemonize为yes,默认端口为5379。
1.3 nginx配置:修改server内容,包含n9e.monapi、n9e.index、n9e.transfer等。
1.4 mysql配置:初始化数据库n9e_hbs.sql、n9e_mon.sql和n9e_uic.sql。
下载tar包,解压编译安装。
克隆查看,在windows下编译linux二进制文件,将编译后文件打包,然后解压安装并运行。
metric是监控指标名称,endpoint是监控实体,tags是监控数据的属性标签,step为监控数据的上报周期,value是监控指标的当前值,timestamp是当前时间戳,单位是秒。counterType字段表示指标类型,支持GAUGE和COUNTER,如果不上报这个字段,默认为GAUGE,如果上报的指标是COUNTER类型,需要明确指定。
每一条策略都可以单独配置告警接收人,策略可以直接绑定到服务树节点上,节点下的所有机器都会继承生效,如下:
策略名称:描述这条策略的作用。
生效节点:关联的服务树节点,节点下所有机器都会应用这条策略。
排除节点:生效节点下面的部分子节点可能较为特殊需要排除,可以用此配置解决。
报警级别:分三级,P1最严重,报警之后事件通过所有报警通道推送,P3不严重,只用部分通道。
统计周期:判断报警的时候使用最近多长时间以内的数据。
触发条件:支持与条件,即两个条件都满足才报警。
Tag过滤:可以配置只生效监控指标的部分tag,或者排除部分tag。
执行动作:配置报警收敛策略和报警接收人,也支持配置回调,与自动化逻辑打通。
留观时长:报警恢复后持续观察多少秒,称为留观时长,未再触发阈值才发送恢复通知。
静默恢复:即只发送告警消息,不发送恢复通知,默认会发送,即不开启静默恢复。
生效时间:即策略生效时间,默认7*24生效,可以配置只生效部分时间段。
建立服务器对象树,分别建立各应用系统主机,完成后可以在主机列表里看到被监控主机,如果Agent状态正常,会在监控看图中看到最新的主机信息,如:CPU、内存、硬盘等,在监控大盘中创建新的大盘,一张图中显示多个监控指标。
主机建立好之后,可在监控栏进程中建立proc.num(进程开关监控)和proc.port.listen(端口开关监控),从某业务系统A的443和80端口的监控图,可看到,正常状态下,监控值为1。
3.1 报警策略:根据监控策略可设置监控参数的相应阈值,包括生效节点、触发条件、级别、统计周期和执行动作等。
3.2 报警展示:根据报警策略,相关人收到报警信息相关邮件。
通过此次的部署与实践,基本掌握了Nightingale的原理和基本功能,但对数据可视化展示(结合grafanna)、二次开发、高可用性(HA)等功能还未涉及。希望在日后工作运维中,根据实际生产需求,不断完善平台功能。