monicazhang 发表于 2016-3-24 10:00:03

搭建nagios监控全平台

来自:网络


前言1. Nagios简介2. 相关环境3. 部署规划4. 代码获取5. 前提依赖5.1 主机环境检查(全部节点)6. 编译安装6.1 创建用户nagios(全部节点)6.2 安装nagios主程序(主节点安装)6.3 安装nagios插件(全部节点安装)6.4 安装NRPE(全部节点安装)6.4.1 被监控节点配置6.4.2 主节点配置6.5 安装Apache(主节点安装)6.6 安装PHP(主节点安装)6.7 使用apache 发布PHP的WEB7. 配置Nagios7.1 配置远程被监控节点7.1.1 修改配置文件7.1.2 重启xinetd服务7.1.3 校验配置7.2 配置监控服务主节点7.2.1 cgi.cfg(控制CGI访问的配置文件)7.2.2 nagios.cfg(nagios主配置文件)7.2.3 定义监控的主机组7.2.4 定义监控的主机7.2.4.1 本地主机监控配置7.2.4.2 远程主机监控配置7.2.4.3 邮件监控7.2.4.4 校验配置7.2.4.5 启动8. 监控页面9. 相关链接
最近在研究云监控的相关工具,之前写过Ganglia的安装步骤,这回来记录下Nagios的安装步骤。 本文不讲解相关原理,若想了解请参考其他资料. 本文目的: 即使之前未触过nagios,也能按照文中步骤搭建自己的nagios监控集群. 云监控nagiosnrpe                   nagios培训

目录[-] 前言 1. Nagios简介 2. 相关环境 3. 部署规划 4. 代码获取 5. 前提依赖 5.1 主机环境检查(全部节点) 6. 编译安装 6.1 创建用户nagios(全部节点) 6.2 安装nagios主程序(主节点安装) 6.3 安装nagios插件(全部节点安装) 6.4 安装NRPE(全部节点安装) 6.4.1 被监控节点配置 6.4.2 主节点配置 6.5 安装Apache(主节点安装) 6.6 安装PHP(主节点安装) 6.7 使用apache 发布PHP的WEB 7. 配置Nagios 7.1 配置远程被监控节点 7.1.1 修改配置文件 7.1.2 重启xinetd服务 7.1.3 校验配置 7.2 配置监控服务主节点 7.2.1 cgi.cfg(控制CGI访问的配置文件) 7.2.2 nagios.cfg(nagios主配置文件) 7.2.3 定义监控的主机组 7.2.4 定义监控的主机 7.2.4.1 本地主机监控配置 7.2.4.2 远程主机监控配置 7.2.4.3 邮件监控 7.2.4.4 校验配置 7.2.4.5 启动 8. 监控页面 9. 相关链接

前言 最近在研究云监控的相关工具,之前写过Ganglia的安装步骤,这回来记录下Nagios的安装步骤。 本文不讲解相关原理,若想了解请参考其他资料. 本文目的: 即使之前未触过nagios,也能按照文中步骤搭建自己的nagios监控集群. @Authorduangr@Website duangr/blog/183160 1. Nagios简介 Nagios是一个可运行在Linux/Unix平台之上的开源监视系统,可以用来监视系统运行状态和网络信息。Nagios可以监视所指定的本地或远程主机以及服务,同时提供异常通知功能。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。 uploads/space/2013/1210/221839_BrAa_1189023.jpg 2. 相关环境
Host Name
IP
OS

Arch

duangr-1
192.168.56.10
CentOS 6.4
x86_64

duangr-2
192.168.56.11
CentOS 6.4
x86_64

duangr-3
192.168.56.12
CentOS 6.4
x86_64

3. 部署规划



监控服务主节点(Master)
duangr-1

被监控从节点(Slave)
duangr-2, duangr-3

Nagios主节点需要安装:

[*]nagios
[*]nagios-plugin
[*]nrpe
[*]php
[*]apache
Nagios从节点需要安装:

[*]nagios-plugin
[*]nrpe
安装路径规划



nagios安装路径
/usr/local/nagios

php安装路径
/usr/local/php

apache安装路径
/usr/local/apache2

4. 代码获取

[*]nagios-4.0.2.tar.gz
[*]nagios-plugins-1.5.tar.gz
[*]nrpe-2.15.tar.gz
[*]httpd-2.2.23.tar.gz
[*]php-5.4.10.tar.gz
5. 前提依赖
5.1 主机环境检查(全部节点)
1
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel


2
gcc-4.4.7-3.el6.x86_64


3
glibc-2.14.1-6.x86_64


4
glibc-common-2.14.1-6.x86_64


5
gd-2.0.35-11.el6.x86_64


6
package gd-devel is not installed


7
package xinetd is not installed


8
openssl-devel-1.0.0-27.el6.x86_64



若有缺失,请先安装. 可通过如下几个镜像网站下载相关安装包:

[*]
[*]centos/6.4/os/x86_64/Packages/
[*]centos/6.4/os/x86_64/Packages/
安装后再次检查如下:
1
# rpm -q gcc glibc glibc-common gd gd-devel xinetd openssl-devel


2
gcc-4.4.7-3.el6.x86_64


3
glibc-2.14.1-6.x86_64


4
glibc-common-2.14.1-6.x86_64


5
gd-2.0.35-11.el6.x86_64


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


7
xinetd-2.3.14-38.el6.x86_64


8
openssl-devel-1.0.0-27.el6.x86_64



6. 编译安装
6.1 创建用户nagios(全部节点)
1
useradd nagios -d /usr/local/nagios


2
passwd nagios   (密码自定义)



6.2 安装nagios主程序(主节点安装)

1
tar -zxf nagios-4.0.2.tar.gz


2
cd nagios-4.0.2


3
./configure --prefix=/usr/local/nagios      


4
make all


5
make install && make install-init && make install-commandmode && make install-config



将nagios添加为服务
1
chkconfig --add nagios


2
chkconfig nagios off


3
chkconfig --level 35 nagios on


4
chkconfig --list nagios   


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



6.3 安装nagios插件(全部节点安装)

1
tar -zxf nagios-plugins-1.5.tar.gz


2
cd nagios-plugins-1.5


3
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios      


4
make && make install



如果出现mysql相关的编译错误,是mysql的默认安装路径被修改导致的,调整with-mysql后重新make
1
./configure --prefix=/usr/local/nagios--with-mysql=/usr/local/mysql


2
make && make install



6.4 安装NRPE(全部节点安装)

1
tar -zxf nrpe-2.15.tar.gz


2
cd nrpe-2.15


3
./configure --enable-command-args


4
make all


5
make install-plugin



下面步骤只需要在被监控节点执行
1
make install-daemon && make install-daemon-config && make install-xinetd



6.4.1 被监控节点配置
如果是被监控节点,需要配置NRPE已守护进程运行(通过xinetd来运行) 1、更改/etc/xinetd.d/nrpe文件,设置允许nagios主节点服务器连接
1
vi /etc/xinetd.d/nrpe


2
only_from       = 127.0.0.1 192.168.56.10



2、在/etc/services结尾增加:
1
nrpe      5666/tcp       # NRPE



3、增加对参数的支持
1
vi /usr/local/nagios/etc/nrpe.cfg


2
dont_blame_nrpe=1



4、启动xinetd
1
service xinetd restart



5、验证nrpe是否监听
1
netstat -at | grep nrpe



6、测试nrpe是否正常运行
1
/usr/local/nagios/libexec/check_nrpe -H localhost


2
NRPE v2.15



6.4.2 主节点配置 如果是监控服务主节点,在全部被监控节点NRPE配置完成后,可以依次做下检测
1
/usr/local/nagios/libexec/check_nrpe -H 192.168.56.11


2
NRPE v2.15


3
/usr/local/nagios/libexec/check_nrpe -H 192.168.56.12


4
NRPE v2.15



6.5 安装Apache(主节点安装)

1
tar -zxf httpd-2.2.23.tar.gz


2
cd httpd-2.2.23


3
./configure --prefix=/usr/local/apache2


4
make && make install



6.6 安装PHP(主节点安装)

1
cd /export/home/tools/soft/php


2
tar -zxf php-5.4.10.tar.gz


3
cd /php-5.4.10


4
./configure --prefix=/usr/local/php--with-apxs2=/usr/local/apache2/bin/apxs


5
make&& make install



6.7 使用apache 发布PHP的WEB                   nagios实施 vi /usr/local/apache2/conf/httpd.conf
01
....


02
Listen 80


03
....


04
<IfModule dir_module>


05
    DirectoryIndex index.html index.php


06
    AddType application/x-httpd-php .php


07
</IfModule>


08
....


09
#setting for nagios


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


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


12
   AuthType Basic


13
   Options ExecCGI


14
   AllowOverride None


15
   Order allow,deny


16
   Allow from all


17
   AuthName "Nagios Access"


18
   AuthUserFile /usr/local/nagios/etc/htpasswd


19
   Require valid-user


20
</Directory>


21
Alias /nagios "/usr/local/nagios/share"


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


23
   AuthType Basic


24
   Options None


25
   AllowOverride None


26
   Order allow,deny


27
   Allow from all


28
   AuthName "nagios Access"


29
   AuthUserFile /usr/local/nagios/etc/htpasswd


30
   Require valid-user


31
</Directory>



为web访问时添加用户名和密码(此处用户名为admin,可自定义)
1
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd admin



启动apache
1
/usr/local/apache2/bin/apachectl start



访问页面:    http://192.168.56.10/nagios/ 7. 配置Nagios
7.1 配置远程被监控节点                      监控软件 7.1.1 修改配置文件

1
# su - nagios


2
$ vi /usr/local/nagios/etc/nrpe.cfg



修改为如下配置内容:
1
command=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$


2
command=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$


3
command=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$


4
command=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$


5
command=/usr/local/nagios/libexec/check_procs$ARG1$


6
command=/usr/local/nagios/libexec/check_swap -w $ARG1$ -c $ARG2$



以上监控命令功能:

[*]check_users                  监控登陆用户数
[*]check_load                     监控CPU负载
[*]check_disk                      监控磁盘的使用
[*]check_procs                   监控进程数量,状态包括 RSZDT
[*]check_swap                  监控SWAP分区使用
7.1.2 重启xinetd服务
配置完上述命令后,重启 xinetd服务
1
service xinetd restart



7.1.3 校验配置 检查监控命令配置是否ok
1
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users-a 5 10


2
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load   -a 15,10,5 30,25,20


3
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk    -a 20% 10% /


4
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_procs -a 200 400 RSZDT


5
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_swap-a 20% 10%



7.2 配置监控服务主节点 7.2.1 cgi.cfg(控制CGI访问的配置文件) (使用 nagios 用户) vi /usr/local/nagios/etc/cgi.cfg 修改如下内容,为admin用户增加权限:
1
default_user_name=admin


2
authorized_for_system_information=nagiosadmin,admin


3
authorized_for_configuration_information=nagiosadmin,admin


4
authorized_for_system_commands=nagiosadmin,admin


5
authorized_for_all_services=nagiosadmin,admin


6
authorized_for_all_hosts=nagiosadmin,admin


7
authorized_for_all_service_commands=nagiosadmin,admin


8
authorized_for_all_host_commands=nagiosadmin,admin



7.2.2 nagios.cfg(nagios主配置文件)
(使用 nagios 用户) vi /usr/local/nagios/etc/nagios.cfg
1
#cfg_file=/export/home/nagios/etc/objects/localhost.cfg      (注释掉)


2
cfg_dir=/export/home/nagios/etc/servers



主配置文件声明了监控脚本的存储路径为 ./servers, 默认没有此目录,需要手工创建 nagios 会读取 servers 目录下面后缀为.cfg的全部文件作为配置文件
1
cd /usr/local/nagios/etc


2
mkdir servers


3
cd servers



7.2.3 定义监控的主机组
声明一个监控的主机组,将主机环境中提到的三台主机全部加入监控 vi /export/home/nagios/etc/servers/group.cfg 新文件,内容如下:
1
define hostgroup{


2
   hostgroup_name      duangr-server


3
   alias               duangr Server


4
   members             duangr-1,duangr-2,duangr-3


5
}



解释下上面的配置:

[*]hostgroup_name:    主机组的名称,可随意指定
[*]alias:                        主机组别名,可随意指定
[*]members:                主机组成员,多个主机名称之前使用逗号分隔.另外主机名称必须与 define host 中host_name 一致.
主机的定义,后面会说到. 7.2.4 定义监控的主机
下面开始定义具体的主机 7.2.4.1 本地主机监控配置 先定义本地主机 duangr-1 vi /export/home/nagios/etc/servers/duangr-1.cfg 新文件,内容如下:
01
define host{


02
       use                        linux-server


03
       host_name                  duangr-1


04
       alias                        duangr-1


05
       address                      192.168.56.10


06
       }


07



08
define service{


09
       use                           local-service


10
       host_name                     duangr-1


11
       service_description             Host Alive


12
       check_command                   check-host-alive


13
       }


14
define service{


15
       use                           local-service
nagios配置

16
       host_name                     duangr-1


17
       service_description             Users


18
       check_command                   check_local_users!20!50


19
       }


20
define service{


21
       use                           local-service


22
       host_name                     duangr-1


23
       service_description             CPU


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


25
       }


26
define service{


27
       use                           local-service


28
       host_name                     duangr-1


29
       service_description             Disk Root


30
       check_command                   check_local_disk!20%!10%!/


31
       }


32
define service{


33
       use                           local-service


34
       host_name                     duangr-1


35
       service_description             Disk Home


36
       check_command                   check_local_disk!20%!10%!/export/home


37
       }


38
define service{


39
       use                           local-service


40
       host_name                     duangr-1


41
       service_description             Zombie Procs


42
       check_command                   check_local_procs!5!10!Z


43
       }


44
define service{


45
       use                           local-service


46
       host_name                     duangr-1


47
       service_description             Total Procs


48
       check_command                   check_local_procs!250!400!RSZDT


49
       }


50
define service{


51
       use                           local-service


52
       host_name                     duangr-1


53
       service_description             Swap Usage


54
       check_command                   check_local_swap!20!10


55
       }



说明下,由于是此主机也是监控服务主节点所在主机,因此可以使用check_local_* 的相关命令来进行监控.               开源监控软件这个文件中已经将常用的监控项配置进去. 7.2.4.2 远程主机监控配置 再定义远程主机duangr-2和duangr-3 定义远程主机的监控之前,需要先定义check_nrpe命令 vi /usr/local/nagios/etc/objects/commands.cfg 在文件的最后面添加如下内容:
1
# 'check_nrpe' command definition


2
define command{


3
       command_name    check_nrpe


4
       command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$


5
       }


6
define command{


7
       command_name    check_nrpe_args


8
       command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ -a $ARG2$


9
       }



定义duangr-2主机的监控配置 $ vi /usr/local/nagios/etc/servers/duangr-2.cfg 新文件,内容如下:
001
define host{


002
       use                     linux-server


003
       host_name               duangr-2


004
       alias                   duangr-2


005
       address               192.168.56.11


006
       }


007



008
define service{


009
       use                           local-service


010
       host_name                     duangr-2


011
       service_description             Host Alive


012
       check_command                   check-host-alive


013
       }


014
define service{


015
       use                           local-service


016
       host_name                     duangr-2


017
       service_description             Users


018
       check_command                   check_nrpe_args!check_users!5 10


019
       }


020
define service{


021
       use                           local-service


022
       host_name                     duangr-2


023
       service_description             CPU


024
       check_command                   check_nrpe_args!check_load!15,10,5 30,25,20


025
       }


026
define service{


027
       use                           local-service


028
       host_name                     duangr-2


029
       service_description             Disk Root


030
       check_command                   check_nrpe_args!check_disk!20% 10% /


031
       }


032
define service{


033
       use                           local-service


034
       host_name                     duangr-2


035
       service_description             Disk /export/home


036
       check_command                   check_nrpe_args!check_disk!20% 10% /export/home


037
       }


038
define service{


039
      use                           local-service


040
      host_name                     duangr-2


041
      service_description             Procs Zombie


042
      check_command                   check_nrpe_args!check_procs!5 10 Z


043
      }


044
define service{


045
      use                           local-service


046
      host_name                     duangr-2


047
      service_description             Procs Total


048
      check_command                   check_nrpe_args!check_procs_args!"-w400 -c600"


049
      }


050
define service{


051
       use                           local-service


052
       host_name                     duangr-2


053
       service_description             Swap Usage


054
       check_command                   check_nrpe_args!check_swap!20% 10%


055
       }


056



057
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


058
;;下面是一些常用进程的监控,主要是云平台相关进程


059
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


060
;; 监控crond进程


061
define service{


062
       use                           local-service


063
       host_name                     duangr-2


064
       service_description             PS: crond


065
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Ccrond"


066
       }


067
;; 监控zookeeper进程


068
define service{


069
       use                           local-service


070
       host_name                     duangr-2


071
       service_description             PS: QuorumPeerMain


072
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.quorum.QuorumPeerMain"


073
       }


074
;;监控storm的从节点进程


075
define service{


076
       use                           local-service


077
       host_name                     duangr-2


078
       service_description             PS: supervisor


079
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -adaemon.supervisor"


080
       }


081
;; 监控storm的主节点进程


082
define service{


083
       use                           local-service


084
       host_name                     duangr-2


085
       service_description             PS: nimbus


086
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -adaemon.nimbus"


087
       }


088
;; 监控MetaQ进程


089
define service{


090
       use                           local-service


091
       host_name                     duangr-2


092
       service_description             PS: MetaQ


093
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -ametamorphosis-server-w"


094
       }


095
;; 监控Redis进程


096
define service{


097
       use                           local-service


098
       host_name                     duangr-2


099
       service_description             PS: redis-server


100
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Credis-server"


101
       }


102
;; 监控hadoop主节点NameNode进程


103
define service{


104
       use                           local-service


105
       host_name                     duangr-2


106
       service_description             PS: NameNode


107
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.namenode.NameNode"


108
       }


109
;; 监控hadoop主节点SecondaryNameNode进程
nagios安装
110
define service{


111
       use                           local-service


112
       host_name                     duangr-2


113
       service_description             PS: SecondaryNameNode


114
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.namenode.SecondaryNameNode"


115
       }


116
;; 监控hadoop主节点ResourceManager进程


117
define service{


118
       use                           local-service


119
       host_name                     duangr-2


120
       service_description             PS: ResourceManager


121
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.resourcemanager.ResourceManager"


122
       }


123
;; 监控hadoop从节点DataNode进程


124
define service{


125
       use                           local-service


126
       host_name                     duangr-2


127
       service_description             PS: DataNode


128
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.datanode.DataNode"


129
       }


130
;;监控hadoop从节点NodeManager进程


131
define service{


132
       use                           local-service


133
       host_name                     duangr-2


134
       service_description             PS: NodeManager


135
       check_command                   check_nrpe_args!check_procs_args!"-c1:1 -Cjava -aserver.nodemanager.NodeManager"


136
       }



说明下,由于duangr-2是远程主机,因此使用check_nrpe_args命令来监控. 这个文件中已经将常用的监控项配置进去, 同时还包含了hadoop、storm、zookeeper、metaq、redis的相关进程监控,主要的监控思路是判断进程是否存在。
定义duangr-3主机的监控配置 vi duangr-3.cfg内容与duangr-2.cfg类似,只需要修改 host_name 、alias、 address即可. 7.2.4.3 邮件监控 定义监控人邮件地址 vi /usr/local/nagios/etc/objects/contacts.cfg
1
define contact{


2
       contact_name                  nagiosadmin             ; Short name of user


3
       use                           generic-contact         ; Inherit default values from generic-contact template (defined above)


4
       alias                           Nagios Admin            ; Full name of user


5
       email                           yourname@domain.com


6
                                                               ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******


7
       }



除了配置监控邮件的接收人外,还要确保:

[*]本主机与邮件服务器互通
[*]本主机SendMail可以使用外部SMTP服务发送邮件
7.2.4.4 校验配置
1
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg



7.2.4.5 启动

1
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg



nagios已经是一个服务,也可以执行如下操作:
1
service nagios start/stop/restart/status



8. 监控页面
[ ttp://192.168.56.10/nagios]http://192.168.56.10/nagios uploads/space/2013/1210/235900_dZhw_1189023.jpg uploads/space/2013/1210/235901_C9Eq_1189023.jpg

想做Nagios, Zabbix,Cacti,iTop各种交流的,可以进入开源监控工具Nagios交流QQ群号 :476809427

页: [1]
查看完整版本: 搭建nagios监控全平台