|
八、配置Nagios
本来想休息一下再接着写,但是时间不会等人,比我聪明比我更有技术实力的人还在努力,我怎么能懈怠呢。喝杯咖啡,继续。其实这更多的像是我写给自己的笔记,我相信这是一种积累,也是一种努力。
首先,看下nagios有哪些目录:bin、etc、include、libexec、sbin、share、var,其中bin主要是nagios的一些可执行文件,sbin则存放nagios的cgi脚本,include则是nagios的头文件,libexec存放nagios监控插件,share存放一些网页文件,动态生成文件等。var则存放nagios的锁文件,日志文件等等。
其次,我们说下nagios监控的执行过程。首先在nagios.cfg中定义配置文件路径,其次添加配置文件,然后对配置文件进行调用。这些配置文件包括时间配置,命令配置,主机配置,服务配置等。也就是说,nagios的监控系统,需要注意四点:
a.定义监控哪些主机、主机组、服务、服务组
b.定义这个监控要用什么命令实现
c.定义监控的时间段
d.定义主机或者服务出现问题时要通知的联系人和联系人组
接下来就开始真正进行服务监控的实施。
咱们得有个目标吧,先看下下面这张图,就先做成这样吧
1.修改nagios的主配置文件——nagios.cfg
第一处:添加如下三行代码:
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg
第二处:改变检查时间间隔
command_check_interval=10s 一般设置10s就可以了,也可以根据实际情况进行设置。
好了,先保存退出。
注意:最好注释掉cfg_file=/usr/local/nagios/etc/objects/localhost.cfg这行代码,不然后面我们测试的时候,会发现莫名其妙出现很多主机和服务检测。
2.修改 CGI的配置文件——cgi.cfg
首先确认一下,use_authentication=1是否为1,为1表示启用cgi脚本调用验证,最好要启用,这样会安全很多。这里需要添加一下能够调用cgi脚本权限的用户
第一处:启用默认用户名,将#去掉,将guest改为nagios,即:
default_user_name=nagios
第二处:则是给予nagios用户一些调用其他脚本的权限。主要修改的代码行如下,将nagios用户添加进去,注意多用户之间用逗号隔开就可以了。
authorized_for_system_information=nagiosadmin,nagios
authorized_for_configuration_information=nagiosadmin,nagios
authorized_for_system_commands=nagiosadmin,nagios
authorized_for_all_services=nagiosadmin,nagios
authorized_for_all_hosts=nagiosadmin,nagios
authorized_for_all_service_commands=nagiosadmin,nagios
authorized_for_all_host_commands=nagiosadmin,nagios
就是这几个,保存退出吧。
3.查看一下时间模板配置文件——timeperiods.cfg
生成环境经常使用的是24x7的这个,当然你也可以定义自己的时间模板:
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
以后我们调用监控时间就是用24x7这个名字了,所以你要是定义自己所需要的时间段,这个名字要记好,不然是无法调用的。
时间模板暂时不用修改,那接下来我们要定义联系人模板了。
4.联系人模板是存在的,就是contacts.cfg,但是里面没有我们所需的信息,所以我们不妨模仿着自己定义一个,可以在最后添加如下信息
############ Add for Nagios Monitor ##############################################
define contact{
contact_name J_Chen
alias J_Chen_admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email 315688082@qq.com
}
这样我就定义了一个联系人J_Chen,要是有报警信息就会发送到315688082@qq.com这个邮箱。
下面解释一下各参数的意义:
contact_name 联系人姓名,以后定义服务出现问题联系人的时候,就可以直接调用这个名字了。alias是别名,没有太大意义,更多的用于方便操作。
service_notification_period 服务监控时间段,后面的24x7就是之前timeperiods.cfg里面定义的。
host_notification_period 主机监控时间段,也是24x7,整天不间断监控
service_notification_options 服务监控报警选项,即当出现这四中情况时,发邮件通知联系人。即:w-报警(warning),u-未知(unknown),c-严重(critical),或者r-从异常恢复正常(recovery)
host_notification_options 和上面类似,主机监控报警选项。d-宕机(down),u-不可达(unreachable),r-从故障恢复正常(recovery)。
service_notification_commands 服务出现状况通知命令使用notify-service-by-email(这天命令实在commands.cfg中定义的)
host_notification_commands 和上面的非常类似,不解释了
email 即联系人邮件
如果我们有多个管理员,可以定义多个联系人,然后将这些联系人放到一个组中,然后在监控到故障的时候,直接通知这些组。假如我再创建一个用户tomcat,基本上上面的用户定义一样,改下名字,联系方式就行了。如下:
define contact{
contact_name Tomcat
alias Tomcat_admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email tomcat@localhost
}
5.定义联系人组Superman(我给联系人组起的名字),联系人组这个文件是不存在的,我们手动创建一下。
# vi /usr/local/nagios/etc/objects/contactgroups.cfg添加如下内容
define contactgroup{
contactgroup_name Superman
alias Super_admin
members J_Chen,Tomcat(多个联系人之间使用逗号分开就可以了)
}
6.创建监控主机文件hosts.cfg
vi /usr/local/nagios/etc/objects/hosts.cfg (定义两台主机:一个是nagios服务,另一个监控内部一台测试服务器,地址192.168.1.51)
define host{
host_name nagios-server
alias nagios server
address 192.168.1.214
check_command check-host-alive
max_check_attempts 5
check_period 24x7
contact_groups Superman
notification_interval 300
notification_period 24x7
notification_options d,u,r
}
define host{
host_name 51-server
alias 51 server
address 192.168.1.51
check_command check-host-alive
max_check_attempts 5
check_period 24x7
contact_groups Superman
notification_interval 300
notification_period 24x7
notification_options d,u,r
}
保存退出。
注意:check-host-alive这个命令是在command.cfg中定义过的。
7.现在定义监控服务services.cfg(先简单定义了两个服务)如下:
# vi /usr/local/nagios/etc/objects/services.cfg
define service{
host_name nagios-server
service_description check-host-alive
check_command check-host-alive
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups Superman
}
define service{
host_name 51-server
service_description check-host-alive
check_command check-host-alive
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups Superman
}
注意:这里的host_name就是我们之前在hosts.cfg文件中定义的。
简单的配置到此就结束了,我们先来看一下能不能正常启动。nagios给我们提供了检测脚本,执行如下命令:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 很开心,配置完全正确,如下:
我们重启一下nagios试试看。
[iyunv@centos1 objects]# service nagios restart
Running configuration check...done.
Stopping nagios: .done.
Starting nagios: done.
启动完成,访问一下试试看。
8.使用浏览器访问一下
点击左侧的主机、服务都可以正常显示,正是我们之前定的。
好了,nagios最简单的配置已经完成了。但是有没有发现我们检测的只是本机的服务还有另外一台主机的存活检测,如果仅是这样的话,我直接使用一条ping命令就可以完成。当然了,nagios的强大功能才刚刚开始,它不但可以检测自己的负载量,磁盘使用率,当前登录用户数等等,也可以检测别的主机。简直比木马还木马,下次我们就继续学习nagios的高级监控功能。
下面的学习路线我打算是这样的,下次将高级监控,然后将图形化监控,最后讲nagios插件开发。这样就基本上形成了一个完整的监控体系。今天先到这了,继续努力! |
|
|