博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nagios全攻略(二)----基本安装和配置(下)
阅读量:5918 次
发布时间:2019-06-19

本文共 6943 字,大约阅读时间需要 23 分钟。

注:
本部分参考了官方文档和田逸的文章<<>>来修改完成.
 
4.
典型配置
之前已经说过nagios
要用起来,
就必须修改配置文件,
增加要监控的主机和服务才行.
在具体做这个动作之前,
下面的概念必须要了解.
 
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
注释行 #cfg_file=/usr/local/nagios/etc/localhost.cfg[2],
然后把下面几行的注释去掉:
 
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
的值从默认的1
改成command_check_interval=10s
(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。
主配置文件要改的基本上就是这些,通过上面的修改,发现/usr/local/nagios/etc
并没有文件hosts.cfg
等一干文件,怎么办?稍后手动创建它们。
 
修改CGI
脚本控制文件cgi.cfg
vi cgi.cfg
第二个要修改的配置文件是cgi.cfg,
它的作用是控制相关cgi
脚本。先确保use_authentication=1
。曾看过不少的文章,都是建议把use_authentication
的值设置成”0
”来取消验证,这是一个十分糟糕的想法。接下来修改default_user_name=test ,
再后面的修改在下表列出:
 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
那么上述用户名打那里来的呢?是执行命令 /usr/local/apache/bin/htpasswd 
c /usr/local/nagios/etc/htpasswd test 
所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。
 
定义监控时间段
,
创建配置文件
timeperiods.cfg
[root@localhost etc]#
 vi timeperiods.cfg
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
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                           [email]yahoon@test.com[/email]
        pager                           1338757xxxx
        address1                        [email]xxxxx.xyyy@icq.com[/email]
        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­­­­—
当机 (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                           
很明显 ,
联系的人 email
地址
pager                           1338757xxxx
联系人的手机 ,
如果支持短信的通知的话 ,
这个就很有用了 .
alias
是联系人别名 ,address
是地址 
意义不大 .
按照上面的方式简单的复制修改就可以创建多个联系人了.
 
下面就可以将多个联系人组成一个联系人组,
创建文件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                         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
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
#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
 
还等什么,
登陆[url]http://192.168.0.111/nagios/[/url]
来查看吧.
点左边的
Host Detail
再点
Service Detail
,
终于写完了第二部分
痛苦啊…..
不过,
不过,
不过,
难道仅仅就监控个主机死不死就满足了?
那一个个ping
也花不了多久嘛
ssh
开放了没?ftp
工作正常不?http
可以访问不?
磁盘用了多少了?
这些问题更有价值…..
咋办?
接着看呗.
本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/41430,如需转载请自行联系原作者
你可能感兴趣的文章
poj 1789 Truck History
查看>>
java synchronized详解
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
【JS学习】慕课网8-17编程练习 网页的返回与跳转
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
为什么要在下班后努力学习?你不知道的秘密...... ...
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
Spring Cloud 2.x系列之整合rocketMQ
查看>>
答疑解惑:Linux与Windows的那些事儿(2)
查看>>
Java的Socket网络编程以及多线程
查看>>
百万连接之路
查看>>
关于传输自环导致中兴2826交换机无法网管的故障案例
查看>>
Fsutil文件的具体用法
查看>>
7月第3周邮件通信网站综合排行Top10:163居首
查看>>
linux 笔记本的温度提示
查看>>
【转载】nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
查看>>
项目管理实践教程
查看>>
(转)DOTA新版地图6.78发布:大幅改动 增两位新英雄
查看>>