nagios安装配置 nagios的安装配置
wget http://downloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz?use_mirror=nchc
wget http://nchc.dl.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
实验环境:nagios监控服务器为192.168.1.240
主机名为nagios
nagios被监控服务器为192.168.1.208
主机名为apache
用到的软件包:httpd-2.2.6.tar.gz、imagepak-base.tar.gz、mysql-5.1.22-rc-linux-i686-icc-glibc23.tar.gz、nagios-2.9.tar.gz、nagios-plugins-1.4.9.tar.gz、nrpe-2.12.tar.gz、perl-stable.tar.gz、php-5.2.4.tar.bz2、pnp-latest.tar.gz、rrdtool-1.0.50.tar.gz
在监控服务器上进行下面的操作:
1.安装nagios主程序
1)解压缩:
tar -zxvf nagios-2.9.tar.gz
cd nagios-2.9
./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include
2)创建用户并且设定权限:
groupadd nagios
useradd -g nagios nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
make all
make install //来安装主程序,CGI和HTML文件
make install-init //在/etc/rc.d/init.d安装启动脚本
make install-commandmode //来配置目录权限
make install-config //来安装示例配置文件,安装的路径是/usr/local/nagios/etc[/color].
3)验证是否安装成功:
切换目录到/usr/local/nagios,看是否存在 etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。
bin Nagios执行程序所在目录,nagios文件即为主程序
etc Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件
sbin Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
share Nagios网页文件所在的目录
var Nagios日志文件、spid 等文件所在的目录
var/archives Empty directory for the archived logs
/var/rw Empty directory for the external command file
2.安装插件
1)解压缩:
tar -zxvf nagios-plugins-1.4.9.tar.gz
cd nagios-plugins-1.4.9
./configure --prefix=/usr/local/nagios/
make
make install
ls /usr/local/nagios/libexec/
会显示安装的插件文件,即所有的插件都安装在libexec这个目录下 注意:要是没有这个插件目录需要用下面的命令把插件复制过来
cp /usr/local/nagios-plugins/libexec /usr/local/nagios/
2)将apache的运行用户加到nagios组里面 :
从httpd.conf中过滤出当前的apache运行用户
grep ^User /usr/local/apache2/conf/httpd.conf
我的是daemon,下面将这个用户加入nagios组
usermod -G nagios daemon
3)修改apache配置:
修改apache的配置文件,增加nagios的目录,并且访问此目录需要进行身份验证
vi /usr/local/apache2/conf/httpd.conf,在最后增加如下内容 :
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd //用于此目录访问身份验证的文件
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd //用于此目录访问身份验证的文件
Require valid-user
</Directory>
4)增加验证用户:
也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户nagiosadmin:密码为123456
#/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nagios
5)查看认证文件的内容:
[root@localhost conf]# less /usr/local/nagios/etc/htpasswd
nagios:OmWGEsBnoGpIc //前半部分是用户名test,后面是加密后的密码
到这里nagios的安装也就基本完成了,你可以通过web来访问了.
http://192.168.1.240/nagios 会弹出对话框要求输入用户名密码,就可以进入nagios的主页面了
但是可以发现什么也点不开,因为nagios还没启动呢!下面的工作就是修改配置文件,增加要监控的主机和服务
3.典型配置
nagios要用起来,就必须修改配置文件,增加要监控的主机和服务才行.在具体做这个动作之前,下面的概念必须要了解.
1)预备知识 :
在Nagios里面定义了一些基本的对象,一般用到的有:
联系人 contact 出了问题向谁报告?一般当然是系统管理员了
监控时间段 timeperiod 7X24 小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机 Host 所需要监控的服务器,当然可以是监控机自己
监控命令 command nagios发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务 Service 例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
注意:多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组
2)将示例配置文件复制为真实配置文件名:
cd /usr/local/nagios/etc
把这里.cfg-sample文件配置文件模板,全部重命名为.cfg
3)修改配置文件:
修改nagios的主配置文件nagios.cfg
vi nagios.cfg
cfg_file=/usr/local/nagios/etc/localhost.cfg //在前面加
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系人组配置文件路径
cfg_file=/usr/local/nagios/etc/commands.cfg //命令配置文件路径
cfg_file=/usr/local/nagios/etc/host.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //服务器组配置文件
cfg_file=/usr/local/nagios/etc/templates.cfg //模板配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径
cfg_file=/usr/local/nagios/etc/services.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等一干文件,怎么办?稍后手动创建它们。
4)然后检查配置文件是否出错
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
出现Total Warnings: 0
Total Errors: 0 //这样表示配置文件没有错误
5)修改CGI脚本控制文件cgi.cfg
#vi cgi.cfg
第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。
先确保use_authentication=1。
接下来修改default_user_name=nagiosadmin // (前面创建的用户名) ,再后面的修改在下表列出:
authorized_for_system_information=nagiosadmin //后面跟的都是用户名
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
6)配置各种配置文件
定义监控时间段,创建配置文件timeperiods.cfg :
# 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
# 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 service_notify-by-email
host_notification_commands host-notify-by-email
email jason@sohu.com
pager 1391119xxxx
}
创建了一个名为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中定义的,作用是给联系人发邮件
host_notification_commands host-notify-by-email
同上,主机出问题时采用的也是发邮件的方式通知联系人
email 很明显,联系的人email地址
Pager //电话[/color
下面就可以将多个联系人组成一个联系人组,创建文件contactgroups.cfg :
# vi contactgroups.cfg
define contactgroup{
contactgroup_name sagroup //联系人组的名称,同样不能空格
alias System Administrators //别名
members test
//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
}
定义被监控主机,创建文件hosts.cfg :
# vi hosts.cfg
define host{
host_name nagios //被监控主机的名称,最好别带空格
alias nagios //别名
address 192.168.1.240 //被监控主机的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 //指定什么情况下提醒
}
通过简单的复制修改就可以定义多个主机了.我们在这加上另外一台机器
与联系人可以组成联系人组一样,多个主机也可以组成主机组:
创建文件hostgrops.cfg
# vi hostgroups.cfg
define hostgroup{
hostgroup_name linux-servers //主机组名称
alias linux-servers //别名
members nagios,apache
//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}
下面是最关键的了,用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过commands.cfg文件中定义的命令.
例如我们现在有一个监控项目是监控一台机器的web服务是否正常, 我们需要哪些元素呢?最重要的有下面三点:首先是监控哪台机,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人?
定义监控的项目,也叫服务,创建services.cfg :
# vi services.cfg
define service{
host_name nagios //被监控的主机,hosts.cfg中定义的
service_description check-host-alive //这个监控项目的描述,这个会在web页面中出现
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 //通知的时间段
notification_options w,u,c,r //在监控的结果是wucr时通知联系人
contact_groups sagroup //联系人组,是contactgroups.cfg中定义的
}
这样整个的配置过程就结束了.虽然功能很简单,但是已经为以后扩展打下了良好的基础.
在运行nagios之前首先做测试
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
看到下面这些信息就说明没问题了
Total Warnings: 0
Total Errors: 0
作为守护进程后台启动nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
登陆http://192.168.1.240/nagios
4. 使用命令和插件监控更多信息
我们已经增加了二个监控项目,分别监控nagios,apache这二台主机是否存活.
nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展现给我们,同时提供相应的报警功能(这个报警的功能也是由插件完成的)
所有的这些插件是一些实现特定功能的可执行程序,默认安装的路径是/usr/local/nagios/libexec
这些程序都是可以独立执行的,使用方法可以通过”命令名 –h”来查看
例如,我们查看check_disk这个插件的用法则可以使用check_disk –h
# ./check_disk -h
check_disk (nagios-plugins 1.4.9) 1.91
Copyright (c) 1999 Ethan Galstad <[email]nagios@nagios.org[/email]>
Copyright (c) 1999-2006 Nagios Plugin Development Team
<[email]nagiosplug-[email]devel@lists.sourceforge.net[/email][/email]>
This plugin checks the amount of used disk space on a mounted file system
and generates an alert if free space is less than one of the threshold values
Usage: check_disk -w limit -c limit [-p path | -x device] [-t timeout][-m] [-e] [-W limit] [-K limit] [-v] [-q] [-E]
输出的资料十分详细给出了这个插件的功能,使用方法,参数意义等,对于每一个插件都是这样.所以当你不懂某个插件怎么使用时就好好读读吧.从上面的输出可以看到check_disk这个插件是用来检查磁盘使用情况的.
我现在来独立执行它,例如查看根分区的使用情况,执行
# ./check_disk -w 10% -c 5% /
命令的含义是检查分区/的使用情况,若剩余10%以下,为警告状态(warning),5%以下为严重状态(critical),
执行后我们会看到下面这条信息
DISK WARNING - free space: / 487 MB (6% inode=78%);| /=7449MB;7524;7942;0;8361
说明当前是warning的状态,空闲空间只有6%了.如果nagios收到这些状态结果就会采取报警等措施了
我们在定义某个监控项目时,所用的监控命令都是来自commands.cfg的,这和这些插件有什么关系?想到了吧,commands.cfg中定义的监控命令就是使用的这些插件.举个例子,之前我们已经不止一次用到了check-host-alive这个命令,打开commands.cfg就可以看到这个命令的定义,如下:
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
}
command_name check-host-alive
这句话的意思是定义的命令名是check-host-alive,也就是我们在services.cfg中使用的名称
执行的操作是
$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
其中$USER1$是在resource.cfg文件中定义的,代表插件的安装路径.就如我们上面看到的那样$USER1$=/usr/local/nagios/libexec,至于$HOSTADDRESS$,则默认被定义为监控主机的地址.
简单的说,我们在services.cfg中定义了对dbpi执行check-host-alive命令,实际上就是执行了
/usr/local/nagios/libexec/ check_ping -H dbpi的ip地址 -w 3000.0,80% -c 5000.0,100% -p 1
实际上check-host-alive只是这一长串命令的简称而已,而在services.cfg中都是使用简称的.
在commands.cfg中定义了很多这样的命令简称.基本上我们常用的监控项目都包含了,例如ftp,http,本地的磁盘,负载等等.
我们再看一个命令,check_local_disk定义如下
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$的值,
简单的一句话就是
services.cfg定义监控项目用某个命令
↓
这个命令必须在commands.cfg中定义
↓
定义这个命令时使用了libexec下的插件
如果命令不带$ARG1$就可以在services.cfg中直接使用,如果带了使用时就带上参数,以!相隔
5.用NRPE监控LINUX上的”本地信息”
本节的目的,对系统为linux的主机apcahe进行如下监控:磁盘容量,登陆用户数,http,ftp,mysql的状况,其他功能自己可以自定义配置
对于像磁盘容量,cpu负载这样的”本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力.毕竟没得到被控主机的适当权限是不可能得到这些信息的.为了解决这个问题,nagios有这样一个附加组件----NRPE.用它就可以完成对linux类型主机”本地信息”的监控.
所以我们按照图示在监控主机(nagios)和被监控主机上安装相应的软件
在被监控主机上
1)增加用户
useradd nagios
2)安装nagios插件
tar -zxvf nagios-plugins-1.4.9.tar.gz
cd nagios-plugins-1.4.9
编译安装
./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios
make
make install
这一步完成后会在/usr/local/nagios/下生成两个目录libexec和share
# ls /usr/local/nagios/
libexec share
修改目录权限
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
3)安装nrpe
解压缩
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
编译
./configure
make all 接下来安装NPRE插件,daemon和示例配置文件
安装check_nrpe这个插件
make install-plugin 之前说过监控机需要安装check_nrpe这个插件,被监控机并不需要,我们在这里安装它是为了测试的目的
安装deamon
make install-daemon
安装配置文件
make install-daemon-config
现在再查看nagios目录就会发现有4个目录了
# ls /usr/local/nagios/
bin etc libexec share
查看NRPE的监控命令
vi nrpe.cfg
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
注意:其他命令需要自行添加
我们可以很容易知道上面这5行定义的命令分别是检测登陆用户数,cpu负载,hda1的容量,僵尸进程,总进程数.各条命令具体的含义见插件用法(执行”插件程序名 –h”)
在运行nagios的监控主机上
之前已经将nagios运行起来了,现在要做的事情是:
– 安装check_nrpe插件
– 在commands.cfg中创建check_nrpe的命令定义,因为只有在commands.cfg中定义过的命令才能在services.cfg中使用
创建对被监控主机的监控项目
安装check_nrpe插件
# tar -zxvf nrpe-2.8.1.tar.gz
# cd nrpe-2.8.1
# ./configure
# make all
# make install-plugin
在commands.cfg中增加对check_nrpe的定义
vi /usr/local/nagios/etc/commands.cfg
在最后面增加如下内容
# 'check_nrpe ' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
意义如下
command_name check_nrpe 定义命令名称为check_nrpe,在services.cfg中要使用这个名称.
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
这是定义实际运行的插件程序.这个命令行的书写要完全按照check_nrpe这个命令的用法.不知道用法的就用check_nrpe –h查看
更多阅读
nagios安装配置 nagios的安装配置
wget http://downloads.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz?use_mirror=nchcwget http://downloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz?use_mirror=nchcwget http://nchc.
如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题 win7应用程序并行错误
用VS2008写的程序,运行的时候出现“应用程序无法运行,因为应用程序的并行配置不正确”问题。上网搜索,得到如下解决方案:1.方法一:在类似C:Program FilesMicrosoft Visua
防务小知识:航母战斗群的标准配置
航母战斗群的标准配置虽然航母能投射大量的空中武力,但是舰母本身的防御能力薄弱。所以需要其它舰艇,包括水面与水下舰艇提供保护。航母战斗群的分工可以看成航母执行任务,而其它舰艇保护航母。 航母战斗群各有不同,不过现在一个美
Windows7出现:应用程序无法启动,因为应用程序的并行配置不正确
在Win7中运行某些软件时,突然提示出错信息“应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具。”查看win7应用程序事件日
Imail邮件服务器的配置 james邮件服务器配置
公司安排我去研究Imail,研究了半个月,被告知我们不用Imail邮件服务器,原因是Imail是用.Net写的,我们要的是用JAVA写的开源的邮件服务器,郁闷至及,把一些心得写在这里,希望不白费我这半个月以来的浪费掉的脑细胞:配置Imial邮件服务器