七.定义联系人和联系人组。我定义了三个人,两个组。前两个人在第一组里,第三个人在第二组里。
#### 定义第一个联系人
define contact{ ;
contact_name user1
use generic-contact
alias Nagios Admin
service_notification_commands service-by-sms,notify-service-by-email ;短信和邮件告警。
##service-by-sms是我用来发短信的命令,默认情况下,这个命令是commands.cfg里没有的。
##所以加完这个配置后,在commands.cfg定义这个命令之前,nagios是无法正常restart的。
## 当然如果没有service-by-sms和host-by-sms,nagios还是随便restart的。废话真多。^_^
host_notification_commands host-by-sms,notify-host-by-email
email [email]user1@domain.com[/email]
pager 133 ;手机号码
}
### 定义第二个联系人
define contact{ ;
contact_name user2
use generic-contact
alias Nagios Admin
service_notification_commands service-by-sms,notify-service-by-email
host_notification_commands host-by-sms,notify-host-by-email
email [email]user2@domain.com[/email]
pager 137xxxxxxxx
}
#### 定义第三个联系人
define contact{ ;
contact_name user3
use generic-contact
alias Nagios Admin
service_notification_commands service-by-sms,notify-service-by-email
host_notification_commands host-by-sms,notify-host-by-email
email [email]test@sina.com[/email]
pager 139
}
#### 定义联系人组
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members user1,user2
}
define contactgroup{
contactgroup_name test_group
alias Test
members user3
}
八.设置被监控的windows服务器。
找了个NSClient++-Win32-0.3.5.msi的安装包,直接装上,服务里就带了NSC++的服务,登录方式允许与桌面交互。
又照着网上的把文件注释都去掉。只有CheckWMI.dll和RemoteConfiguration.dll前面的注释保留。
网上N多资料都写着建议加password,可是加完了怎么用一直没人说,每个文章连标点符号都一样,shit!!!天下文章一大抄害死人啊!
[Settings]
password=123456 ;这个密码在nagios的主机配置文件中这么用,check_command xxxxxx -s 123456
allowed_hosts=192.168.0.0/16 ;允许nagios服务器访问,也可以定义主机,比如:allow_hosts=192.168.1.250/32
port=12489
启动服务。windows服务器图标右下角出现有两个重叠的加号,当然有的服务器没出来,不知道为啥,反正12489端口通了,能用就行!
九.修改nagios参数,注释本机配置文件,取消注释 windows.cfg。要是有多个主机配置文件就继续在nagios里加,主机配置文件的格式跟windows.cfg一样就行了。
vi /usr/local/nagios/etc/nagios.cfg
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
cfg_file=/usr/local/nagios/etc/objects/test/winhosts.cfg ;配置文件路径自定义,随便!
nagios.cfg里有一行配置command_check_interval=-1,据说这个值是nagios根据自身情况自定义检查时间,尽可能快地检查。但我没发现,我把它改成10s,20s都没用,我最后只好在windows.cfg和其他hosts.cfg里自己加了。看看哪位有空帮忙解答一下。
修改/user/local/nagios/etc/objects/windows.cfg。监控CPU、监控内存,监控进程。看了网上N多2.9的资料,发现3.0.3省了很多东西,真庆幸。里面有很多参数都省略了,但是想用到怎么办,也是自己加了。我在测试时就加了normal_check_interval、max_check_attempts和congtact_groups这三个
define host{
use windows-server ; Inherit default values from a template
host_name 192.168.0.1 ; 因为我们平时工作交流时描述主机都用IP地址描述,这里就懒得改了,一招烩了吧!
alias sunfeng's laptop ; A longer name associated with the host
address 192.168.0.1 ; IP address of the host
}
define service{
use generic-service
host_name 192.168.0.1
max_check_attempts 5 ;检查多少次,依然有问题时告警。nagios3.0.3配置里是没有这行的,默认就是3。好像2.x版本的有,不过我没用过2.x。
normal_check_interval 15 ;监控周期。有的文档里描述这行的单位是秒,但我试出来的是分钟。这行默认配置里也没有,默认好像是10分钟。
service_description Uptime
check_command check_nt!UPTIME -s 123456 ;嘿嘿,windows的NSC++密码用上了!
}
define service{
use generic-service
host_name 192.168.0.1
max_check_attempts 3
normal_check_interval 15
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90 -s 123456
}
define service{
use generic-service
host_name 192.168.0.1
service_description CMD
normal_check_interval 1 ; ;每分钟检查一次进程。我就是为了试验,一般时候用不着这么短的间隔
max_check_attempts 1 ;我觉得进程这个东西要是没了,马上就出事了,所以宁可误报也不能让它自己慢悠悠地查3次再告警。但有资料说不建议这么做,我忘了具体原因了。
contact_groups admins ;这行也是默认情况下没有的。可填可不填,我只是为了区分下��那个组。;出错就给test_group组里的user3发短信发邮件。
check_command check_nt!PROCSTATE!-d SHOWALL -l CMD.EXE -s 123456 ;监控cmd.exe我照着网上的文档试着监控explorer.exe,全小写,或者写成Explorer.exe都能监控到,但是CMD或者firefox等用户进程,不管资源管理器里显示的大小写如何,这里必须写成大写,否则就检测失败。
}
define service{
use generic-service
host_name 192.168.0.1
service_description firefox
normal_check_interval 1
max_check_attempts 1
contact_groups test_group ;出错就给test_group组里的user3发短信发邮件。
check_command check_nt!PROCSTATE!-d SHOWALL -l FIREFOX.EXE -s 123456
}