0x00、前言
至于安装这里不再讲述,直接讲述配置出现的小坑、大坑及神坑!!(好了,我也不知道下面提到的算不算神坑)
0x01、依赖环境
先讲述一下这里需要的依赖是:nagios、ganglia、apache、Python2.7(及可能使用到Python2.7,为啥呢?因为你使用py脚本来扩展监控的话,那么,这里也需要安装一下,好像centos或者ubantu都是自带Python2.7的)
0x02、安装文件路径
tips:先来看一下nagios安装之后的路径,这个路径是我目前安装出现的路径,至于其他路径,欢迎各位小伙伴在下面评论里面补充一下,感谢!
/usr/local/nagios # nagios安装路径,修改过默认安装路径的同学,自行替换哈
nagios目录包含如下文件:
root@localhost:/usr/local$ tree nagios/ -L 1
nagios
├── bin # Nagios 可执行程序所在目录
├── etc # 这个是有nagios重要配置的文件,如nagios.cfg文件
├── libexec # 这个是脚本的存放路径,即Nagios 外部插件所在目录
├── sbin # Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录
├── share # Nagios网页文件所在的目录
└── var # Nagios 日志文件、lock 等文件所在的目录
其中etc文件如下:
root@localhost:/usr/local/nagios$ tree etc/ -L 1
etc/
├── cgi.cfg
├── dallas
├── htpasswd.users
├── nagios.cfg # 这个最为重要的nagios配置文件,包括但不限于定义cfg文件路径
├── objects # 这个是cfg文件所在目录,即配置监控主机的配置文件,建议每个主机建一个目录,然后另外存放来配置,这样好管理、好维护
└── resource.cfg # nagios的变量定义文件,文件内容只有一行,如下:
'''$USER1$=/usr/local/nagios/libexec'''
其中,变量$USER1$指定了安装nagios插件的路径,
如果把插件安装在了其它路径,只需在这里进行修改即可。
需要注意的是,变量必须先定义,然后才能在其它配置文件中进行引用,谨记啊,不然两行泪!!
0x03、配置文件提到的概念
这些文件里面配置涉及的概念有:
host主机、hostname域名、hostgroup主机组;service服务、servicegroup服务组;contacts联系人、contactsgroup联系人组;监控时间、command监控命令;
除了以上还有其他概念,上面列出来的是常提到的概念。
0x04、下面来打个预防针———屡一下配置的思路
配置过程大致分为以下四步:
01:定义监控哪些主机、主机组、服务和服务组;
02:定义这个监控要用什么命令实现;
03:定义监控的时间段;
04:定义主机或服务出现问题时要通知的联系人和联系人组。
0x05、开始配置旅程
tips:还是强调一下,最好是一个主机配置一个文件,以便以后好维护
cd /usr/local/nagios/etc/objects # 切换到配置文件路径下
创建对应主机.cfg文件,这里提示一下使用ip最后的数字来起名字,如192.168.1.51,则起名字为:host_51.cfg
tips:这里创建的文件,建议直接复制原来的文件
sudo cp localhost.cfg host_51.cfg
然后其他的文件:
contacts.cfg、command.cfg、timeperiods.cfg、templates.cfg
就用原来的文件即可,只是使用的时候稍稍改一下下
templates.cfg是模板配置文件,很多共性的属性定义成模板,方便多次引用,以及不用重复定义,这就是templates.cfg的作用。
00、templates.cfg里面内容参数说明如下:
define contact{
name generic-contact ; 联系人名称
service_notification_period 24x7 ; 当服务出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义
host_notification_period 24x7 ; 当主机出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义
service_notification_options w,u,c,r ; 这个定义的是“通知可以被发出的情况”。w即warn,表示警告状态,u即unknown,表示不明状态;
; c即criticle,表示紧急状态,r即recover,表示恢复状态;
; 也就是在服务出现警告状态、未知状态、紧急状态和重新恢复状态时都发送通知给使用者。
host_notification_options d,u,r ; 定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态;
; u即unreachable,表示不可到达状态,r即recovery,表示重新恢复状态。
service_notification_commands notify-service-by-email ; 服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件;
; 其中“notify-service-by-email”在commands.cfg文件中定义。
host_notification_commands notify-host-by-email ; 主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件;
; 其中“notify-host-by-email”在commands.cfg文件中定义。
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}
define host{
name generic-host ; 主机名称,这里的主机名,并不是直接对应到真正机器的主机名;
; 乃是对应到在主机配置文件里所设定的主机名。
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; 其值可以为0或1,其作用为是否启用Nagios的数据输出功能;
; 如果将此项赋值为1,那么Nagios就会将收集的数据写入某个文件中,以备提取。
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_period 24x7 ; 指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者。
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
define host{
name linux-server ; 主机名称
use generic-host ; use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来;
; 在nagios配置中,很多情况下会用到引用。
check_period 24x7 ; 这里的check_period告诉nagios检查主机的时间段
check_interval 5 ; nagios对主机的检查时间间隔,这里是5分钟。
retry_interval 1 ; 重试检查时间间隔,单位是分钟。
max_check_attempts 10 ; nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况;
; 而是多试几次,因为有可能只是一时网络太拥挤,或是一些其他原因,让主机受到了一点影响;
; 这里的10就是最多试10次的意思。
check_command check-host-alive ; 指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义。
notification_period 24x7 ; 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义;
; 下面会陆续讲到。
notification_interval 10 ; 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟;
; 如果你觉得,所有的事件只需要一次通知就够了,可以把这里的选项设为0
notification_options d,u,r ; 定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态;
; u即unreachable,表示不可到达状态;
; r即recovery,表示重新恢复状态。
contact_groups ts ; 指定联系人组,这个“admins”在contacts.cfg文件中定义。
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
define host{
name windows-server ; The name of this host template
use generic-host ; Inherit default values from the generic-host template
check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive ; Default command to check if servers are "ali