linux中nagios配置详解

发布: 2009-3-30 14:11 | 作者: gyl4802959 | 来源: IT运维专家网

1)预备知识
Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.通俗的理解:假定我们首先定义了”性别”这个对象,它 的值只可能是男,女,人妖等等,然后定义某人为一个对象,例如张三,定义张三的时候有”性别”这个属性,它的值就必须来源了之前定义的性别这个对象,要么 是男是女,或者是人妖.
在Nagios里面定义了一些基本的对象,一般用到的有:
联系人 contact 出了问题像谁报告?一般当然是系统管理员了
监控时间段 timeperiod 7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机 host 所需要监控的服务器,当然可以是监控机自己
监控命令 command nagios 发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务 service 例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等

另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组呢.
回到上面的例子,定义张三需要之前定义的性别,我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告.
所有这些对象绝对多数都是需要我们手动定义的,这就是 nagios 的安装显得复杂的地方.其实了解了原理,做一遍之后余下的工作就是复制粘贴了.下面就开始动手.

2)将示例配置文件复制为真实配置文件名
cd /usr/local/ nagios /etc
cp cgi.cfg-sample cgi.cfg
cp commands.cfg-sample commands.cfg
cp localhost.cfg-sample localhost.cfg
cp nagios .cfg-sample nagios .cfg
cp resource.cfg-sample resource.cfg

3)修改配置文件
修改 nagios 的主配置文件 nagios .cfg
vi nagios .cfg
注释行

CODE:

#cfg_file=/usr/local/nagios/etc/localhost.cfg 然后把下面几行的注释去掉:

CODE:

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    //监视时段配置文件路径

CODE:

check_external_commands=0

CODE:

check_external_commands=1 这行的作用是允许在web界面下执行重启 nagios 、停止主机/服务检查等操作。

CODE:

command_check_interval=1 的值从默认的1改成

CODE:

command_check_interval=10s (根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。
主配置文件要改的基本上就是这些,通过上面的修改,发现/usr/local/ nagios /etc并没有文件hosts.cfg等一干文件,怎么办?稍后手动创建它们。

修改CGI脚本控制文件cgi.cfg
vi cgi.cfg
第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。先确保

CODE:

use_authentication=1 曾看过不少的文章,都是建议把use_authentication的值设置成”0”来取消验证,这是一个十分糟糕的想法。接下来修改

CODE:

default_user_name=test 再后面的修改在下表列出:

CODE:

authorized_for_system_information=nagiosadmin,test

authorized_for_configuration_information=nagiosadmin,test

authorized_for_system_commands=test //多个用户之间用逗号隔开

authorized_for_all_services=nagiosadmin,test

authorized_for_all_hosts=nagiosadmin,test

authorized_for_all_service_commands=nagiosadmin,test

authorized_for_all_host_commands=nagiosadmin,test
那么上述用户名打那里来的呢?是执行命令

CODE:

/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。

定义监控时间段,创建配置文件timeperiods.cfg
[ root @localhost etc]# vi timeperiods.cfg

CODE:

define timeperiod{

        timeperiod_name         24x7   //时间段的名称,这个地方不要有空格

        alias                   24 Hours A Day,7Days 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,监控的时间是每天全天24小时

定义联系人,创建配置文件contacts.cfg
[root@localhost etc]# vi contacts.cfg

CODE:

define contact{

        contact_name                    test   //联系人的名称,这个地方不要有空格

        alias                           sys 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-by-email

        host_notification_commands      host-notify-by-email

        email                           yahoon@test.com

        pager                           1338757xxxx

        address1                        xxxxx.xyyy@icq.com

        address2                        555-555-5555

        }
创建了一个名为test的联系人,下面列出其中重要的几个选项做说明
service_notification_period     24x7
服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.
host_notification_period        24x7
主机出了状况通知的时间段, 这个时间段就是上面在timeperiods.cfg中定义的
service_notification_options    w,u,c,r
当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
host_notification_options       d,u,r
当主机出现d­­­­ 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
很明显,联系的人email地址
pager                           1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
alias是联系人别名,address是地址 意义不大.

按照上面的方式简单的复制修改就可以创建多个联系人了.

下面就可以将多个联系人组成一个联系人组,创建文件contactgroups.cfg
[root@localhost etc]# vi contactgroups.cfg

CODE:

define contactgroup{

        contactgroup_name               sagroup   

//联系人组的名称,同样不能空格

        alias                   System Administrators        //别名

        members                 test

//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔

        }
定义被监控主机,创建文件hosts.cfg
[root@localhost etc]# vi hosts.cfg

CODE:

define host{

        host_name                       nagios-server

//被监控主机的名称,最好别带空格

        alias                           nagios server

        //别名

        address                         192.168.0.111

        //被监控主机的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部分的介绍

        }
通过简单的复制修改就可以定义多个主机了.我们在这加上另外两台机器:
名为dbpi的linux主机,ip为192.168.0.111
名为yahoon的xp主机,ip为192.168.0.28

与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg
[root@localhost etc]# vi hostgroups.cfg

CODE:

define hostgroup{

        hostgroup_name          sa-servers //主机组名称

        alias                   sa Servers //别名

        members                 nagios-server

//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的

        }
下面是最关键的了,用 nagios 主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在 nagios 里面都是被定义为一个个的项目( nagios 称之为服务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过commands.cfg文件中定义的命令.
例如我们现在有一个监控项目是监控一台机器的web服务是否正常, 我们需要哪些元素呢?最重要的有下面三点:首先是监控哪台机,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人?

定义监控的项目,也叫服务,创建services.cfg
[root@localhost etc]# vi services.cfg

CODE:

#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中定义的

        }
可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以加上另外两个监控项目:分别监控yahoon和dbpi是否存活
这样整个的配置过程就结束了.虽然功能很简单,但是已经为以后扩展打下了良好的基础.可以放心的告诉大家,以后的工作基本都是复制粘贴啦!!!

在运行 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
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值