您的位置:首页 > 移动开发 > IOS开发

Nagios安装配置教程(四)配置使用

2014-01-09 10:11 513 查看
Nagios安装配置教程(四)配置使用

我是一只小菜鸟,老鸟直接飞过,有什么错误,还请谅解,谢谢
当您可以在web页面打开nagios的页面,就可以配置以下文件了

默认配置文件介绍
Nagios 安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下。
每个文件或目录含义如下表所示:
文件名或目录名用途

文件名或目录名用途
cgi.cfg控制CGI访问的配置文件
nagios.cfgNagios 主配置文件
resource.cfg变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$
objectsobjects 是一个目录,在此目录下有很多配置文件模板,用于定义Nagios 对象
objects/commands.cfg命令定义配置文件,其中定义的命令可以被其他配置文件引用
objects/contacts.cfg定义联系人和联系人组的配置文件
objects/localhost.cfg定义监控本地主机的配置文件
objects/printer.cfg定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg定义监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg定义Nagios 监控时间段的配置文件
objects/windows.cfg监控Windows 主机的一个配置文件模板,默认没有启用此文件
进行监控文件配置的流程大概是这样,每增加一台被监控的机器(linux、window)都需要安装下面的配置文件一一做出相应的修改

修改主配置文件nagios.cfg 启用以下文件的配置、或者不启用以下的配置等
配置时间模板timeperiods.cfg 定义报警的时间,监视的时间等
配置联系人模板contacts.cfg 出现问题联系人,邮箱信息等
配置联系组模板contactgroups.cfg 联系组,网络问题的网络管理组,系统问题的系统组等
配置主机模板hosts.cfg 监控的主机信息,ip地址、主机名等
配置主机组模板hostgroups.cfg 像linux系统组、window系统组,web服务器组等
配置检测服务模板services.cfg 监控主机的服务,像监控ping 、snmp、磁盘空间、web服务等

注:如果文件夹下没有此文件,请在安装包中找,或者新建

(一) 修改主配置文件nagios.cfg

Nagios的主配置文件是nagios.cfg,我们就从这个文件开始修改。用vi编辑nagios.cfg,注释行,然后把下面几行的注释去掉:

cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径

cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径

cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径 上面已经介绍过文件配置的作用
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径

cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径

去掉前面的 # 号,保持启用,我们编辑的配置文件有没有效果,全部都是在这个地方进行应用的

还要修改以下地方
check_external_commands=0为check_external_commands=1
这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作
command_check_interval=115s为command_check_interval=10s
根据自己的情况定这个命令检查时间间隔,不要太长也不要太短

(二) 配置时间模板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
}
#下面是定义一个名为workhours的时间段,即工作时间段。
define timeperiod{
timeperiod_name workhours
alias Normal Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}

注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制

(三) 配置联系人模板contacts.cfg

[root@localhost etc]# vi contacts.cfg

define contact{
contact_name test
//联系人的名称,这个地方不要有空格
alias sys admin
// 随便填,不意义

service_notification_period 24x7
//时间段就是上面在timeperiods.cfg中定义的timeperiod_name要对应
host_notification_period 24x7
//时间段就是上面在timeperiods.cfg中定义的timeperiod_name要对应
service_notification_options w,u,c,r
//当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
host_notification_options d,u,r
//当主机出现d—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
service_notification_commands notify-by-email
//服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍
host_notification_commands host-notify-by-email
//同上,主机出问题时采用的也是发邮件的方式通知联系人
email test@test.com
//邮箱通知
pager 1338757xxxx
//短信通知
address1 xxxxx.xyyy@test.com
//随便填,不意义
address2 555-555-5555
//随便填,不意义
}

注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制

(四) 配置联系组模板contactgroups.cfg

[root@localhost etc]# vi contactgroups.cfg

define contactgroup{
contactgroup_name sagroup
//联系人组的名称,同样不能空格
alias System Administrators
//别名
members test
//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔,切记对应上面的配置
}

(五) 配置主机模板hosts.cfg

[root@localhost etc]# vi hosts.cfg

define host{
host_name nagios-server
//被监控主机的名称,最好别带空格,自定义
alias nagios server
//别名
address 125.222.31.20
//被监控主机的IP地址,我现在暂时先填本机的IP
check_command check-host-alive
//监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 5
//检查失败后重试的次数
check_period 24x7
//检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的,切记对应
contact_groups sagroup
//联系人组,上面在contactgroups.cfg中定义的sagroup,切记对应
notification_interval 10
//提醒的间隔,每隔10秒提醒一次
notification_period 24x7
//提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的,切记对应
notification_options d,u,r
//指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
}

注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制

(六) 配置主机组模板hostgroups.cfg

与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg

[root@localhost etc]# vi hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers
//主机组名称,自定义
alias sa Servers
//别名
members nagios-server
//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的,切记对应
}

(七) 配置检测服务模板services.cfg

[root@localhost etc]# vi services.cfg

#service definition
define service{
host_name nagios-server
//被监控的主机,hosts.cfg中定义的,自定义
service_description check-host-alive
//这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
check_command check-host-alive
//所用的命令,是commands.cfg中定义的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
//监控的时间段,是timeperiods.cfg中定义的,切记对应
notification_interval 10
notification_period 24x7
//通知的时间段, ,是timeperiods.cfg中定义的,切记对应
notification_options w,u,c,r
//在监控的结果是wucr时通知联系人,具体含义看前文.
contact_groups sagroup
//联系人组,是contactgroups.cfg中定义的,切记对应
}

注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制

插入针对配置检测服务模板services.cfg中的
check_command check-host-alive
这一命令,是检查服务器得服务状态,监控主机的服务,像监控ping 、snmp、磁盘空间、web服务等,具体的命令已经命令的书写可以查看commands.cfg详细的说明

check_command check_ping!100.0,20%!500.0,60%
//查看ping
check_command check_local_disk!20%!10%!/
//查看本机磁盘使用情况
check_command check_local_users!20!50
//查看本机用户
check_command check_local_procs!250!400!RSZDT
//查看本机程序
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
//查看本机负载
check_command check_local_swap!20!10
//查看swap 使用空间

其中的一些参数说明
check_local_disk定义如下

# 'check_local_disk' command definition
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}

check_local_disk实际上是执行的check_disk插件.这里的$ARG1$, $ARG2$, $ARG3$是什么意思呢?在之前我们已经提到了这个check_disk这个插件的用法,-w的参数指定磁盘剩了多少是警告状态,-c的参数指定剩多少是严重状态,-p用来指定路径.
在使用check-host-alive的时候,只需要在services.cfg中直接写上这个命令名check-host-alive.后面没任何的参数.而使用check_local_disk则不同,在services.cfg中这要这么写
check_local_disk!10%!5%!/
在命令名后面用!分隔出了3个参数,10%是$ARG1$的值,5%是$ARG2$的值,/ 是$ARG3$的值,

在以上是监控命令中分为两种对于像磁盘容量,cpu负载这样的”本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力.毕竟没得到被控主机的适当权限是不可能得到这些信息的.为了解决这个问题,nagios有这样一个附加组件----NRPE.用它就可以完成对linux类型主机”本地信息”的监控.

NRPE总共由两部分组成:
– check_nrpe 插件,位于在监控主机上
– NRPE daemon,运行在远程的linux主机上(通常就是被监控机)
按照上图,整个的监控过程如下:
当nagios需要监控某个远程linux主机的服务或者资源情况时
1.nagios会运行check_nrpe这个插件,告诉它要检查什么.
2.check_nrpe插件会连接到远程的NRPE daemon,所用的方式是SSL
3.NRPE daemon会运行相应的nagios插件来执行检查
4.NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.
注意:NRPE daemon需要nagios插件安装在远程的linux主机上,否则,daemon不能做任何的监控.
监控内部信息,需要通过客户端的NRPE 插件收集内部信息,服务器通过check_nrpe 接收客户端的信息。
配置被监控机器
[root@server nrpe-2.12]# groupadd nagios
[root@server nrpe-2.12]# useradd -g nagios -s /sbin/nologin nagios
[root@server libexec]# chown nagios.nagios /usr/local/nagios
[root@server libexec]# chown -R nagios.nagios /usr/local/nagios/libexec

1. 安装nrpe 插件
[root@server ~]# tar zxvf nrpe-2.12.tar.gz
[root@server ~]# cd nrpe-2.12
[root@server nrpe-2.12]# ./configure
[root@server nrpe-2.12]# make all
[root@server nrpe-2.12]# make install-plugin
[root@server nrpe-2.12]# make install-daemon
[root@server nrpe-2.12]# make install-daemon-config

2. 安装nagios 补丁
[root@server ~]# tar zxvf nagios-plugins-1.4.14.tar.gz
[root@server ~]# cd nagios-plugins-1.4.14
[root@server nagios-plugins-1.4.14]# ./configure --with-nagios-user=nagios --with-
nagios-group=nagios
[root@server nagios-plugins-1.4.14]# make
[root@server nagios-plugins-1.4.14]# make install

3. 配置nrpe.cfg
[root@server libexec]# vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1,192.168.30.100 # 添加监控主机的IP

4. 启动nrpe守护进程
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
检查nrpe是否已经启动
[root@server ~]# netstat -nultp |grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 18929/nrpe

5. 测试nrpe功能
[root@server ~]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.12
正常的返回值为被监控服务器上安装的NRPE的版本信息,如果能看到这些,表示NRPE已经正常工作了

6. 定义监控服务器内容

服务端上的配置
1. 安装nrpe
[root@server ~]# tar zxvf nrpe-2.12.tar.gz
[root@server ~]# cd nrpe-2.12
[root@server nrpe-2.12]# ./configure
[root@server nrpe-2.12]# make all
[root@server nrpe-2.12]# make install-plugin
[root@server nrpe-2.12]# make install-daemon
[root@server nrpe-2.12]# make install-daemon-config
检测nrpe是否能正常和客户端通信
[root@server ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.30.110
CHECK_NRPE: Error - Could not complete SSL handshake.
注意:这里有一个报错。

解决办法:
1).检查是否安装了openssl和openssl-devel包
[root@server ~]# rpm -qa |grep ssl
openssl-devel-1.0.0-20.el6_2.5.x86_64
openssl-1.0.0-20.el6_2.5.x86_64
2). 检查/usr/local/nagios/etc/nrpe.cfg 此配置文件是否配置正确
allowed_hosts=127.0.0.1,192.168.30.100
3).重启系统

若check_nrpe 的返回值是其版本号,则表示已正常通信
[root@server nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 192.168.30.110
NRPE v2.12

在运行nagios之前首先做测试
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
看到下面这些信息就说明没问题了
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
如果有问题的话就可以按照输出信息来排查

作为守护进程后台启动nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

登陆http://your ip address /nagios/来查看吧.点左边的Host Detail

本文出自 “知识可以改变命运” 博客,请务必保留此出处http://iqdutao.blog.51cto.com/2597934/1349980
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: