Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。

Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等


实验环境:

物理主机redhat7.0 内核版本 3.10.0-123.el7.x86_64

虚拟机redhat6.5 内核版本 2.6.32-431.el6.x86_64

服务器端: server1.example.com172.25.254.1

所需软件包:

gd-devel-2.0.35-11.el6.x86_64.rpm

nagios-cn-3.2.3.tar.bz2

nagios-plugins-2.1.1.tar.gz


1.编译nagios

(1).准备安装

[root@server1 mnt]# tar jxf nagios-cn-3.2.3.tar.bz2

[root@server1 mnt]# mv nagios-cn-3.2.3 /root/

[root@server1 mnt]# yum install gd-devel-2.0.35-11.el6.x86_64.rpm gcc -y ##为./configure做准备

(2).编译安装

[root@server1 mnt]# cd /root/nagios-cn-3.2.3/

[root@server1 nagios-cn-3.2.3]# ./configure

[root@server1 nagios-cn-3.2.3]# useradd -u 900 -M -d /usr/local/nagios nagios

[root@server1 nagios-cn-3.2.3]# make all

[root@server1 nagios-cn-3.2.3]# make

[root@server1 nagios-cn-3.2.3]# make install-init

*** Init script installed ***

[root@server1 nagios-cn-3.2.3]# make install-commandmode

*** External command directory configured ***

[root@server1 nagios-cn-3.2.3]# make install-config

*** Config files installed ***

[root@server1 nagios-cn-3.2.3]# make install-webconf

*** Nagios/Apache conf file installed ***

(3).修改登陆用户密码

[root@server1 nagios-cn-3.2.3]# cat /usr/local/nagios/etc/htpasswd.users##查看密码

nagiosadmin:gCWSDnqEHR45c

[root@server1 nagios-cn-3.2.3]# htpasswd /usr/local/nagios/etc/htpasswd.users nagiosadmin

New password:##更改密码

Re-type new password:

Updating password for user nagiosadmin

(4)启动服务

[root@server1 nagios-cn-3.2.3]# /etc/init.d/httpd start

Starting httpd: [ OK ]

[root@server1 nagios-cn-3.2.3]# /etc/init.d/nagios start

Starting nagios: done.

(5)浏览器访问:172.25.254.6/nagios,用户为nagiosadmin,密码为自己刚改的密码。



2.排除故障

可以看到刚安装的nagios不能监控到主机的状态,需要安装插件排除故障

(1)[root@server1 0722-监控-nagios]# cd /mnt/

[root@server1 mnt]# tar -zxf nagios-plugins-2.1.1.tar.gz

[root@server1 mnt]# mv nagios-plugins-2.1.1 /root/

[root@server1 mnt]# cd /root/nagios-plugins-2.1.1/

(2)编译插件

[root@server1 nagios-plugins-2.1.1]# yum install mysql-devel openssl-devel -y #编译所需软件包

[root@server1 nagios-plugins-2.1.1]# ./configure

*****************************************************************************************

config.status: creating po/Makefile

--with-apt-get-command:

--with-ping6-command: /bin/ping6 -n -U -w %d -c %d %s

--with-ping-command: /bin/ping -n -U -w %d -c %d %s

--with-ipv6: yes

--with-mysql: /usr/bin/mysql_config##不能为no,如果为no,则 yum install mysql-devel -y

--with-openssl: yes##不能为no,如果为no,则 yum install openssh-devel -y

--with-gnutls: no

--enable-extra-opts: yes

--with-perl: /usr/bin/perl

--enable-perl-modules: no

--with-cgiurl: /nagios/cgi-bin

--with-trusted-path: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

--enable-libtap: no

*****************************************************************************************

<2>make

<3>make install

(3)cd /usr/local/nagios/libexec/

<1>ll

<2>chown nagios.nagios *##更改所有文件的所属用户和所属组为nagios

<3>id apache

usermod -G nagios apache

id apache

*********************************************

[root@server6 libexec]# id apache

uid=48(apache) gid=48(apache) groups=48(apache),900(nagios)

*********************************************

(3).编辑配置文件

(3.1)

[root@server1 nagios-plugins-2.1.1]# vim /usr/local/nagios/etc/nagios.cfg

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

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

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

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

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

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

36

37 # Definitions for monitoring the local (Linux) host

38 #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

(3.2)

[root@server1 nagios-plugins-2.1.1]# cd /usr/local/nagios/etc/objects/

[root@server1 objects]# cp -p localhost.cfg hosts.conf

[root@server1 objects]# cp -p localhost.cfg services.cfg

[root@server1 objects]# cp -p localhost.cfg hosts.cfg

(3.3)

[root@server1 objects]# vim hosts.cfg

###############################################################################

# Define a host for the local machine


define host{

use linux-server ; 给网络设备用的

host_name 监控主机

alias MainSwitch

address 127.0.0.1

icon_p_w_picpath switch.gif

statusmap_p_w_picpath switch.gd2

2d_coords 100,200

3d_coords 100,200,100

}

###############################################################################

#

# HOST GROUP DEFINITION

#

###############################################################################

###############################################################################


# Define an optional hostgroup for Linux machines


define hostgroup{

hostgroup_name linux-servers ; The name of the hostgroup

alias Linux Servers ; Long name of the group

members * ; Comma separated list of hosts that belong to this group

}

###############################################################################

(3.4)[root@server1 objects]# vim services.cfg

define servicegroup{

servicegroup_name 系统状态检查

alias 系统概况

}

define service{

use local-service ; Name of service template to use

host_name *

service_description PING

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

}

define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description 根分区

check_command check_local_disk!20%!10%!/

}

define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description 登录用户数

check_command check_local_users!20!50

}


# Define a service to check the number of currently running procs

# on the local machine. Warning if > 250 processes, critical if

# > 400 users.


define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description 进程总数

check_command check_local_procs!250!400!RSZDT

}

define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description 系统负荷

check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0

}

define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description 交换空间利用率

check_command check_local_swap!20!10

}

define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description SSH

check_command check_tcp!22!1.0!10.0

notifications_enabled 0

}

define service{

use local-service ; Name of service template to use

host_name 监控主机

service_description HTTP

check_command check_http

notifications_enabled 0

}


(3.5)[root@server1 objects]# /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

(3.6)

[root@server1 objects]# /etc/init.d/nagios reload

Running configuration check...done.

Reloading nagios configuration...done


浏览器刷新浏览:172.25.254.1/nagios

3.加个mysql服务

[root@server1 ~]# yum install mysql-server -y

[root@server1 ~]#/etc/init.d/mysqld restart

[root@server1 ~]#mysql

> show databases;

> grant select on test.* to nagios@localhost identified by 'redaht';

[root@server1 ~]#cd /usr/local/nagios/libexec

[root@server1 libexec]# ./check_mysql -H localhost -u nagios -p westos

Uptime: 12566 Threads: 10 Questions: 207453 Slow queries: 0 Opens: 130 Flush tables: 1 Open tables: 42 Queries per second avg: 16.509|Connections=421c;;; Open_files=80;;; Open_tables=42;;; Qcache_free_memory=0;;; Qcache_hits=0c;;; Qcache_inserts=0c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=0c;;; Qcache_queries_in_cache=0;;; Queries=207453c;;; Questions=207453c;;; Table_locks_waited=5c;;; Threads_connected=10;;; Threads_running=1;;; Uptime=12566c;;;


*********************************************************************************

[root@server1 libexec]cd /usr/local/nagios/etc/objects

[root@server1 objects] vim command.cfg

*********************************************************************************

212 # 'check_mysql' command definition

213 define command{

214 command_name check_mysql

215 command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$

216 }

*********************************************************************************

[root@server1objects] vim hosts.cfg

*********************************************************************************

14 # Define a host for the mysql on server4.example.com

15 define host{

16 use linux-server

17 host_name server4.example.com

18 alias mysql

19 # parents MainSwitch

20 address 127.0.0.1

21 icon_p_w_picpath server.gif

22 statusmap_p_w_picpath server.gd2

23 2d_coords 400,100##2D坐标位置

24 3d_coords 400,200,100##3D坐标位置

25 }

*********************************************************************************

[root@server1objects] vim services.cfg

*********************************************************************************

109 ################check_mysql##########################

110 define service{

111 use local-service ; Name of service template to use

112 host_name server4.example.com

113 service_description mysql

114 check_command check_mysql!nagios!westos

115 notifications_enabled 0

116 }

*********************************************************************************

[root@server1objects]/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg##检查

(4)浏览器刷新浏览:172.25.254.1/nagios

可以看到多了一个Mysql监控