一、Nagios服务器安装过程

1)配置服务器端IP地址

[root@localhost~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:0c:29:fe:39:A1

ONBOOT=yes

NETMASK=255.255.255.0

IPADDR=192.168.6.199

GATEWAY=192.168.6.1

TYPE=Ethernet


A,安装前准备

安装LAMP架构

[root@localhost~]# mount /dev/cdrom /media/


[root@localhost~]# vi /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-debuginfo]

name=Red Hat Enterprise Linux $releasever - $basearch – Debug

baseurl=file:///media/Server

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


[root@localhost~]#yum install gcc glibc glibc-common gd gd-devel php-gd

[root@localhost~]# yum -y install php* mysql* http*

[root@localhost~]# service httpd start

[root@localhost~]# service mysqld start

[root@localhost~]# chkconfig httpd on

[root@localhost~]# chkconfig mysqld on


[root@localhost~]# vim /var/www/html/index.php

<?php

phpinfo();

?>

访问http://192.168.6.199/

Nagios+pnp_pnp

2)安装Nagios

1)创建nagios程序用户、组

[root@localhost ~]# useradd -s /sbin/nologinnagios

[root@localhost ~]# mkdir/usr/local/nagios

[root@localhost ~]# chown -R nagios:nagios /usr/local/nagios/

[root@localhost ~]# chmod -R 755 /usr/local/nagios/


2)保证系统中sendmail服务器要开启

[root@localhost ~]# yum install sendmail

[root@localhost ~]# service sendmail status

sendmail (pid 3090) 正在运行...


B、编译安装Nagios

[root@localhost ~]# cd /aaa/

[root@localhost aaa]# tar zxf nagios-3.2.0.tar.gz

[root@localhost aaa]# cd nagios-3.2.0

[root@localhost nagios-3.2.0]# ./configure--prefix=/usr/local/nagios/

[root@localhost nagios-3.2.0]# make all ; make install ; make install-init ;make install-commandmode ; make install-config ;make install-webconf

[root@localhost nagios-3.2.0]# chkconfig --add nagios

[root@localhost nagios-3.2.0]# chkconfig nagios on

[root@localhost nagios-3.2.0]# chkconfig --list nagios

nagios 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭


C、安装Nagios插件

你可以从http://www.nagios.org官方网站上下载最新的nagios插件

[root@localhostaaa]# tar zxf nagios-plugins-1.4.14.tar.gz

[root@localhostaaa]# cd nagios-plugins-1.4.14

[root@localhostnagios-plugins-1.4.14]# ./configure --prefix=/usr/local/nagios/ ; make ;make install


D、安装Nagios的汉化包

[root@localhostaaa]# tar jxf nagios-cn-3.2.0.tar.bz2

[root@localhostaaa]# cd nagios-cn-3.2.0

[root@localhostnagios-cn-3.2.0]#./configure ; make all ; makeinstall


E、修改apache配置文件

[root@localhost~]# vi /etc/httpd/conf/httpd.conf

231 User

232 Group apache

391 DirectoryIndex index.phpindex.html index.html.var

992 #setting for nagios

993 ScriptAlias/nagios/cgi-bin "/usr/local/nagios/sbin"

994 <Directory"/usr/local/nagios/sbin">

995 AuthType Basic

996 Options ExecCGI

997 AllowOverride None

998 Order allow,deny

999 Allow from all

1000 AuthName "nagiosaccess"

1001 AuthUserFile/usr/local/nagios/etc/htpasswd

1002 Require valid-user

1003 </Directory>

1004 Alias /nagios"/usr/local/nagios/share"

1005 <Directory"/usr/local/nagios/share">

1006 AuthType Basic

1007 Options ExecCGI

1008 AllowOverride None

1009 Order allow,deny

1010 Allow from all

1011 AuthName "nagiosaccess"

1012 AuthUserFile/usr/local/nagios/etc/htpasswd

1013 Require valid-user

1014 </Directory>


创建apache目录的验证文件“/usr/local/nagios/etc/htpasswd

[root@localhost~]# htpasswd -c /usr/local/nagios/etc/htpasswd benet

New password:

Re-type new password:

Adding password for user benet


重启apache服务器并进行验证nagios登陆情况

[root@localhost~]# service httpd restart

停止 httpd [确定]

启动 httpd [确定]

Nagios+pnp_Nagios_02

Nagios+pnp_pnp_03

至此nagios服务器安装结束


二、Nagios服务器配置过程

Nagios的配置过程:主机,主机组,服务,服务组,联系人,联系人组,监控时间,监控命令等,配置文件及配置项之间相互关联,彼此引用。

Nagios配置的核心思想)

最重要的4点:

第一:要定义监控哪些主机、主机组(hosts.cfg),服务,服务组(services.cfg)

第二:要定义这个监控项需要通过什么命令实现(commands.cfg)

第三:要定义监控的时间段(timeperiods.cfg)

最后:要定义主机或服务出现问题时要通知的联系人或联系人组(contacts.cfg)

所有的模板都在objects目录下,包括主机、服务、命令、时间、联系人、模板模块

1)定义hosts.cfg文件(监控哪些主机、主机组(hosts.cfg))

[root@localhost~]# cd /usr/local/nagios/etc/objects/

[root@localhostobjects]# ls ../

cgi.cfg hosts.cfg nagios.cfg services.cfg

commands.cfg htpasswd objects templates.cfg

contacts.cfg localhost.cfg resource.cfg timeperiods.cfg

[root@localhostobjects]# vi hosts.cfg 此文件默认没有,自动创建

define host{

use linux-server

host_name web

alias benet-web

address 192.168.6.199

}

define host{

use linux-server

host_name mysql

alias benet-mysql

address 192.168.6.200

}

define hostgroup{

hostgroup_name sa-servers

alias sa servers

members web,mysql

}


2)定义services.cfg(监控哪些服务,服务组(services.cfg))

[root@localhostobjects]# vi services.cfg 此文件默认没有,自动创建

################- benet web -##########################

define service{

use local-service

host_name web

service_description PING

check_command check_ping!100.0,20%!500.0,60%

}

define service{

use local-service

host_name web

service_description SSH

check_command check_ssh

}

define service{

use local-service

host_name web

service_description SSHD

check_command check_tcp!22

}

define service{

use local-service

host_name web

service_description http

check_command check_http

}

#####################- MYSQL -##########################

define service{

use local-service

host_name mysql

service_description PING

check_command check_ping!100.0,20%!500.0,60%

}

define service{

use local-service

host_name mysql

service_description SSH

check_command check_ssh

}

define service{

use local-service

host_name mysql

service_description ftp

check_command check_ftp

}

define service{

use local-service

host_name mysql

service_description mysqlport

check_command check_tcp!3306

}

注意:hosts.cfgservices.cfg两个文件默认在/usr/local/nagios/etc并不存在,需要手动创建。

Check_ping!100.0,20%!500.0,60%

命令!告警延时,丢包率!严重告警延时,丢包率。

Check_ssh!22!10

命令!端口!连接超时时间


3)定义contacts.cfg(定义主机或服务出现问题时要通知的联系人或联系人组)

[root@localhostobjects]# vi contacts.cfg

35 email root@localhost ;


4)定义cgi.cfg

[root@localhostetc]# cd /usr/local/nagios/etc/

[root@localhostetc]# vi cgi.cfg

107 default_user_name=benet

119 authorized_for_system_information=nagiosadmin,benet

131 authorized_for_configuration_information=nagiosadmin,benet

144 authorized_for_system_commands=benet

157 authorized_for_all_services=nagiosadmin,benet

158 authorized_for_all_hosts=nagiosadmin,benet

171 authorized_for_all_service_commands=nagiosadmin,benet

172 authorized_for_all_host_commands=nagiosadmin,benet


5)定义nagios.cfg

[root@localhost~]# vim /usr/local/nagios/etc/nagios.cfg

19log_file=/usr/local/nagios/var/nagios.log

30 cfg_file=/usr/local/nagios/etc/objects/hosts.cfg

31cfg_file=/usr/local/nagios/etc/objects/services.cfg

32cfg_file=/usr/local/nagios/etc/objects/commands.cfg

33cfg_file=/usr/local/nagios/etc/objects/contacts.cfg

34 cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg

35cfg_file=/usr/local/nagios/etc/objects/templates.cfg


三、Nagios的运行和维护

1)验证nagios主配置文件的语法正确性

[root@localhostetc]# /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 thepre-flight check


2)启动与停止nagios

[root@localhostetc]# service nagios start

Starting nagios:This account is currently not available.

done.

[root@localhostetc]# service nagios status

nagios (pid 5106) is running...

[root@localhostetc]# service nagios stop

Stopping nagios: .done.

[root@localhostetc]# service nagios restart

Running configuration check...done.

Stopping nagios: No lock file found in/usr/local/nagios//var/nagios.lock

Starting nagios:This account is currently not available.

done.

Nagios+pnp_pnp_04


四、Nagios性能分析图表的实现

1)安装PNP支持包rrdtool工具

[root@localhostaaa]# tar zxf rrdtool-1.4.5.tar.gz

[root@localhostaaa]# cd rrdtool-1.4.5

[root@localhostrrdtool-1.4.5]#./configure--prefix=/usr/local/rrdtool ; make ; make install

安装rrdtool时候的报错:configure:error:Pleasefix thelibrary issues listed above and try again

解决办法:

yum -y install cairo-devel libxml2-devel pangopango-devel

如果上面执行后无果,请执行下面操作:

yum install cgiliblibart_lgpl-develpango-devel* cairo-devel* libxml2-devel

如果上面执行后无果,请执行下面操作:

yum -y install zlib libpng freetypelibart_lgpllibart_lgpl-devel libxml* pango*

通常编辑安装文件时,出现make无法安装,这其实是configure编译时出现了问题。

问题分析思路:先不要make,步骤分开进行,先configure编译,这样容易发现是哪一步出现的错误,并解决


2)安装PNP

[root@localhost rrdtool-1.4.5]# cd /aaa/

[root@localhost aaa]# tar zxf pnp-0.4.13.tar.gz

[root@localhost aaa]# cd pnp-0.4.13

[root@localhost pnp-0.4.13]# ./configure --with-nagios-user=nagios--with-nagios-group=nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata; make all ; make install ; make install-config ; make install-init


3)配置PNP

A,创建默认配置文件

[root@localhost pnp-0.4.13]# cd /usr/local/nagios/etc/pnp/

[root@localhost pnp]# cp process_perfdata.cfg-sampleprocess_perfdata.cfg

[root@localhost pnp]# cp npcd.cfg-sample npcd.cfg

[root@localhost pnp]# cp rra.cfg-sample rra.cfg

[root@localhost pnp]# chown -R nagios:nagios/usr/local/nagios/etc/pnp/

[root@localhost pnp]# chmod -R 755 /usr/local/nagios/etc/pnp/

必须设置这个权限,不然web界面执行控制命令会出错

chown -R nagios.nagios/usr/local/nagios/var/rw

chmod -R 777/usr/local/nagios/var/rw


B,修改process_perfdata.cfg

[root@localhostpnp]# vi /usr/local/nagios/etc/pnp/process_perfdata.cfg

44 LOG_LEVEL = 2


4)修改Nagios主配置文件

A,增加小太阳图标

[root@localhostpnp]# cd /usr/local/nagios/etc/objetcs

[root@localhostetc]# vi templates.cfg

define host{

name hosts-pnp

register 0

action_url /nagios/pnp/index.php?host=$HOSTNAME$

process_perf_data 1

}

define service{

name services-pnp

register 0

action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$

process_perf_data 1

}


B、修改nagios.cfg

找到如下几行去掉注释

[root@localhostobjects]# cd ..

[root@localhostetc]# vi nagios.cfg

833 process_performance_data=1

845 host_perfdata_command=process-host-perfdata

846 service_perfdata_command=process-service-perfdata


C、修改commands.cfg

[root@localhost~]# vim /usr/local/nagios/etc/objects/commands.cfg

227 # 'process-host-perfdata' commanddefinition

228 define command{

229 command_name process-host-perfdata

230 command_line /usr/local/nagios/libexec/process_perfdata.pl

231 }

232

233

234 #'process-service-perfdata' command definition

235 define command{

236 command_name process-service-perfdata

237 command_line /usr/local/nagios/libexec/process_perfdata.pl

238 }


D、修改hosts.cfg文件和services.cfg文件

[root@localhost~]# vi /usr/local/nagios/etc/objects/hosts.cfg

define host{

use linux-server,hosts-pnp

host_name web

alias benet-web

address 192.168.6.199

}

define host{

use linux-server,hosts-pnp

host_name mysql

alias benet-mysql

address 192.168.6.200

}

define hostgroup{

hostgroup_name sa-servers

alias sa servers

members web,mysql

}

[root@localhost~]# vi /usr/local/nagios/etc/objects/services.cfg

################- benet web -##########################

define service{

use local-service,services-pnp

host_name web

service_description PING

check_command check_ping!100.0,20%!500.0,60%

}

define service{

use local-service,services-pnp

host_name web

service_description SSH

check_command check_ssh

}

注意项:别心急看小太阳数据,等会儿就有了。

Nagios+pnp_pnp_05

访问http://localhost/nagios/pnp

Nagios+pnp_pnp_06

点击小太阳,出现对主机或服务的监控页面

Nagios+pnp_pnp_07

五,利用插件扩展Nagios的监控功能

下面我们通过在nagios服务端和客户端安装NRPE插件来搭建一个更加完善的Nagios监控系统。


1)配置nagios客户端(即远端被监控主机192.168.6.200

A)安装Nagios插件

登陆192.168.6.200客户端

[root@localhost~]# cd /aaa/

[root@localhostaaa]# useradd -s /sbin/nologin nagios

[root@localhostaaa]# tar zxf nagios-plugins-1.4.14.tar.gz

[root@localhostaaa]# cd nagios-plugins-1.4.14

[root@localhostnagios-plugins-1.4.14]# ./configure ; make ;make install

[root@localhostnagios-plugins-1.4.14]# chown nagios:nagios /usr/local/nagios/

[root@localhostnagios-plugins-1.4.14]# chown -R nagios.nagios /usr/local/nagios/libexec/


B)安装NRPE插件

[root@localhostaaa]# cd /aaa/

[root@localhostaaa]# tar zxf nrpe-2.12.tar.gz

[root@localhostaaa]# cd nrpe-2.12

[root@localhostnrpe-2.12]# ./configure ; make all ; make install-plugin ; make install-daemon; make install-daemon-config


C)修改NRPE配置文件

[root@localhostnrpe-2.12]# vi /usr/local/nagios/etc/nrpe.cfg

79 allowed_hosts=192.168.1.1 #nagios服务器地址

44 server_address=192.168.233.204 #客户机本机地址

192.168.6.199:指定nagios服务器地址


D)启动NRPE

[root@localhostnrpe-2.12]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

[root@localhostnrpe-2.12]# netstat -antl |grep 5666

tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN

E)测试NRPE

[root@localhostnrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1

NRPE v2.12

如果出现NRPE v2.12表明NRPE已经正常工作


定义让nagios服务器监控我本机上的内容(当前用户数,CPU,内存,硬盘等信息)

[root@localhostlibexec]# vi /usr/local/nagios/etc/nrpe.cfg

199 command[check_users_1]=/usr/local/nagios/libexec/check_users -w5 -c 10

200command[check_load_1]=/usr/local/nagios/libexec/check_load -w 15,10,5 - c 30,25,20

201command[check_sda1_1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10 % -p /dev/sda1

202command[check_zombie_procs_1]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z

203command[check_total_procs_1]=/usr/local/nagios/libexec/check_procs -w 1 50 -c 200

重启NRPE

[root@localhost~]# ps -elf |grep nrpe

5 S nagios 22379 1 0 75 0 - 1243 - 17:59 ? 00:00:00 /usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d

0 R root 22586 4247 0 78 0 - 1039 - 18:09 pts/0 00:00:00 grep nrpe

[root@localhost~]# kill -9 22379

[root@localhost~]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d


2,配置nagios服务器端

登陆nagios服务器端:192.168.6.199

1)安装NRPE插件

[root@localhostetc]# cd /aaa/

[root@localhostaaa]# tar zxf nrpe-2.12.tar.gz

[root@localhostaaa]# cd nrpe-2.12

[root@localhostnrpe-2.12]# ./configure ; make ; make install-plugin


2)测试插件能否取得与客户端192.168.6.200的联系

[root@localhost nrpe-2.12]#/usr/local/nagios/libexec/check_nrpe -H 192.168.6.200

NRPE v2.12

出现NRPE v2.12就证明成功联系上客户端


3)定义一个check_nrpe监控命令

[root@localhostnrpe-2.12]# vi /usr/local/nagios/etc/objects/commands.cfg

define command{

command_namecheck_nrpe

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c$ARG1$

}


4)添加远程主机监控项

[root@localhostnrpe-2.12]# vi /usr/local/nagios/etc/objects/services.cfg

define service{

use local-service

host_name mysql

service_description users

check_command check_nrpe!check_users_1

}

define service{

use local-service

host_name mysql

service_description load

check_command check_nrpe!check_load_1

}

define service{

use local-service

host_name mysql

service_description disk

check_command check_nrpe!check_sda1_1

}

define servicegroup{

servicegroup_name servergroup

alias server-group

members web,PING,web,SSH,web,SSHD,web,http,mysql,users,mysql,load,mysql,disk

}

6)测试并重新启动nagios服务

[root@localhost~]# service nagios restart

Nagios+pnp_pnp_08

Nagios+pnp_Nagios_09

测试中出现的错误

安装好nagios打开网页出现下面问题

The requested URL /nagios/cgi-bin/statusmap.cgiwas not found on this server

解决方案,确定安装下面的包。

1.安装

gd-devel

回到nagios安装时解压开的目录

#make devclean

# ./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include

接下来

#./configure --with-command-group=nagios

#make all; make install; make install-init; make install-config;make install-commandmode; make install-webconf

重新回到你的nagiossbin目录查看几个cgi脚本有没有生成。

因为没有配置yum源,所以自以为上面的lib库应该都安装了。然后直接重新编译安装。后来发现还是不行。没办法,配置yum源,发现第一个gd库就没装了。一个个查,一个个装。从头到位从新配置。最后搞定....看来还是要耐心点。错误