本文共 6273 字,大约阅读时间需要 20 分钟。
这一篇我们聊聊nagios监控告警,我们知道nagios特点就是强大的告警功能,这也是它最大的特色,虽然有人说配置基于文本,不好维护,
不像zabbix可以web端添加主机信息,其实nagios也有web端配置管理工具nagiosQL,本人还是喜欢简洁的nagios界面,看起来清爽。实际配置过程中,是通过脚本批量配置主机服务模板,当然也可以通过自动化工具ansible或者saltstack进行管理。nagios支持多种告警模式,如邮件、微信、短信和电话告警。这也是比较常用的告警方式。nagios监控告警配置文件contacts.cfgdefine contact{ contact_name nagiosadmin use generic-contact alias Nagios Admin email 1530213847@qq.com }也可以配置http短信网管报警 command.cfg中定义
模板中定义
http短信网关报警define contact{ contact_name nagiosadmin use generic-contact alias Nagios Admin email 1530213847@qq.com pager xxxxxxxxx}在本次测试环境中,我选用的是110告警,配置短信邮件微信及电话告警,免费服务会有次数限制,企业监控环境建议根据实际情况购买服务。手机注册登陆,创建nagios应用,该平台可以配置nagios、zabbix等主流监控平台。
根据配置步骤进行配置,然后设置通知策略。关闭一台主机服务,收到短信等告警信息如下图。
当然还可以设置电话告警,该场景特别适用紧急业务和晚上告警通知。也可以通过该平台的协作策略,采用钉钉机器人告警,还可以认领指派。配置过程该平台有说明。实现的效果如下图。后面自己摸索研究可以通过火狐浏览器的nagios checker插件,进行配置实现web声音告警
在实际工作中可能有的告警不影响业务,但如果没有处理,则会一直收到邮件等告警,造成告警泛滥,这时我们可以设置主机及服务告警频率。
vi /usr/local/nagios/etc/objects/escalations.cfgdefine hostescalation{ host_name test ;被监控主机名称,多个用逗号隔开与Hosts.cfg中一致first_notification 3 ; 第3条信息起,改变频率间隔last_notification 0 ; 第n条信息起,恢复频率间隔notification_interval 10 ; 通知间隔(单位:分)contact_groups admin}define serviceescalation{
host_name test ;被监控主机名称,多个用逗号隔开与Hosts.cfg中一致 service_description PING 被监控服务名称,多个用逗号隔开 与services.cfg中一致first_notification 3last_notification 0notification_interval 10contact_groups admin}#vi /usr/local/nagios/etc/nagios.cfg
添加:cfg_file=/usr/local/nagios/etc/objects/escalations.cfg主机和服务依赖是nagios的高级行为。可以根据实际情况设置主机和服务依赖关系,从而进行告警收敛,减少告警次数,而且更有利于问题的排查,从而更快地解决问题,使系统服务恢复正常。参考数据
服务依赖,如下样例:
define servicedependency { host_name 016-nagios-client1service_description http_80dependent_host_name 016-nagios-client1dependent_service_description web_urlexecution_failure_criteria nnotification_failure_criteria w,u,c}常见状态:o: OK; w: WARNING; u: UP; c: CRITICAL; p: PENDDING; n:NONE测试结果:同一台主机上的web_url服务依赖http_80(检测httpd服务的80端口)服务,当http_80服务状态为w、u、c任意一种时,http_80状态会发告警通知,由于execution_failure_criteria n(none)的设置,就不会再有web_url的告警信息。另外如果是同一台主机的话dependent_host_name 016-nagios-client1可以去掉。如果是同一主机组中的主机有相同的服务,且也有服务依赖,可以用以下方法进行配置。define servicedependency{ hostgroup_name linux-serversdependent_service_description web_urlservice_description http_80execution_failure_criteria nnotification_failure_criteria w,u,c}说明:主机组linux-servers包含两台主机016-nagios-client1和014-nagios-client1,两台主机上都有http_80和web_url服务,设置服务依赖后,测试结果同上(只有http_80的告警通知)。依赖关系继承:例如服务A和服务D有依赖关系,服务D和服务F也有依赖关系。可以通过以下设置将A和D的依赖关系继承。define servicedependency{ host_name HostBservice_description ServiceDdependent_host_name HostCdependent_service_description ServiceFexecution_failure_criteria nnotification_failure_criteria w,u,cinherits_parent 1}因为inherits_parent指令开启,所以A和D之间的依赖关系测试通过后,才会进行F和D之间的检查。
依赖关系可以被多层继承。主機依赖,如下样例:
define hostdependency { host_name Host Adependent_host_name Host Cnotification_failure_criteria d}define hostdependency {
host_name Host Bdependent_host_name Host Cnotification_failure_criteria d,u}主机常见状态:o是UP状态,d是down状态,u是unreache p是pending 未检测状态。主机依赖场景:如一台实体机通过虚拟化后有多台虚拟机,如果设置了虚拟机和实体机的依赖,当实体机宕机时,就不在发出虚拟机的告警通知,从而大大减少了告警次数。每次修改过你的配置文件,你应该运行一次检测程序来验证配置的正确性。在运行你的Nagios程序之前这是很重要的,否则的话会导致Nagios服务因配置的错误而关闭。
为验证你配置,运行Nagios带命令行参数 -v,象这样:/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg初始化脚本:最简单的启动Nagios守护进程的方式是使用初始化脚本,象这样:/etc/rc.d/init.d/nagios start手工方式:你可以手动地启动Nagios守护进程,用命令参数-d,象这样:/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg快速启动选项介绍只有很少几件事可以减少Nagios的启动或重启总时间。加速启动方法包括有移除些负担还包括加快配置文件处理过程。利用这些技术在如下一种或几种情况时特别有效:大型安装配置
复杂地配置(过度地利用模板特性)需要进行频繁重启动的安装模式背景每次Nagios启动和重启时,在它着手进行监控工作之前必须要处理配置文件。启动过程中的配置处理包括如下几步:读入配置文件
解析模板定义重粘连("Recombobulating")对象(是我想到的应做各种工作)复制对象定义继承对象属性对象定义排序验证对象关联关系的完整性验证回路和其他...当有很大的或是很复杂的配置文件要处理时有几步非常消耗时间的。有没有加快这些的办法?当然有!评估启动时间
在做让启动速度更快的事情之前,需要看看可能性有多少和是否有必要涉足此事。这个比较容易-只是用-s命令行开关启动Nagios以取得计时和调度信息。下面是个输出样例(做过精减,只是显示了有关部分),在这个例子中,假定Nagios配置为对25个主机和超过10,000个服务进行监控。
/usr/local/nagios/bin/nagios -s /usr/local/nagios/etc/nagios.cfg
Nagios 3.0-prealphaCopyright (c) 1999-2007 Ethan Galstad ()Last Modified: 01-27-2007License: GPLTiming information on object configuration processing is listed
below. You can use this information to see if precaching yourobject configuration would be useful.Object Config Source: Config files (uncached)
TOTAL: 56.084353 sec * = 54.676622 sec (97.5%) estimated savings
OK,看看发生了什么。先看汇总信息,大概有11.6秒用于处理配置文件有56秒来验证配置。这意味着每次用这个配置启动或重启Nagios时,它大约会有68秒来做启动事项而不会做任何监控的事情!如果是在定制配置Nagios过程中也是不可容忍的。
那么怎么办?看一下输出内容,如果运用了优化选项,Nagios将可以在配置读取过程节省大约8.4秒而在验证过程可节省63秒。
哇!从68秒到只有5秒?!是的!看看下面是怎么做到的。
预缓存对象配置
Nagios可在解析配置文件过程中做些加速,特别是当配置中使用了模板来做继承等的时候。为降低Nagios解析配置文件的处理时间可用Nagios预处理与预缓存配置文件的功能。当用-p命令参数来运行Nagios时,Nagios将读入配置文件,处理后将配置结果写入预缓存文件(由主配置文件中precached_object_file域指定文件位置)。该预缓存配置文件将包含了预处理后的信息将使Nagios处理配置文件更容易和快捷。必须把-p参数选项与-v或-s命令参数一起使用,如下例。注意要做预缓存配置文件之前配置应是已被验证过的。
/usr/local/nagios/bin/nagios -pv /usr/local/nagios/etc/nagios.cfg
预缓存配置文件有大小明显地比原有配置文件大。这是正常的由设计初衷决定的。
一旦预缓存对象配置文件创建,可以启动Nagios时带上-u命令行选项以让它使用预缓存配置文件而不是配置文件本身。/usr/local/nagios/bin/nagios -ud /usr/local/nagios/etc/nagios.cfg如果更改了配置文件,必须在Nagios重启动前要重新验证和重建预缓存配置文件。如果没有重构建预缓存配置文件,Nagios将使用旧配置运行因为是由旧配置生成的预缓存文件,而不是用新的原始配置文件。跳过回路检测/usr/local/nagios/bin/nagios -xd /usr/local/nagios/etc/nagios.cfg联合起来使用
按照下面步骤将会使用预缓存配置文件并且跳过回路检测以充分加速启动。1、验证配置文件并生成预缓存配置文件,用如下命令:
/usr/local/nagios/bin/nagios -vp /usr/local/nagios/etc/nagios.cfg
2、如果Nagios正在运行,停掉它;
3、启动Nagios,让其使用预缓存配置文件而且跳过回路检测:
/usr/local/nagios/bin/nagios -uxd /usr/local/nagios/etc/nagios.cfg
转载于:https://blog.51cto.com/tuwei/2312484