nagios监控的搭建

最近在研究云监控的相关工具,之前写过Ganglia的安装步骤,这回来记录下Nagios的安装步骤。 本文不讲解相关原理,若想了解请参考其他资料. 本文目的: 即使之前未触过nagios,也能按照文中步骤搭建自己的nagios监控集群.
云监控  nagios  nrpe

目录[-]

  • 前言
  • 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监控集群.

    @Author  duangr 

    @Website http://my.oschina.net/duangr/blog/183160

    1. Nagios简介

    Nagios是一个可运行在Linux/Unix平台之上的开源监视系统,可以用来监视系统运行状态和网络信息。Nagios可以监视所指定的本地或远程主机以及服务,同时提供异常通知功能。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

    nagios监控的搭建

    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

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

    • http://rpm.pbone.net/

    • http://mirrors.163.com/centos/6.4/os/x86_64/Packages/

    • http://mirrors.sohu.com/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

    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[check_users]=/usr/local/nagios/libexec/check_users -w $ARG1$ -c $ARG2$
    2 command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
    3 command[check_disk]=/usr/local/nagios/libexec/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
    4 command[check_procs]=/usr/local/nagios/libexec/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
    5 command[check_procs_args]=/usr/local/nagios/libexec/check_procs  $ARG1$
    6 command[check_swap]=/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
    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进程
    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                           [email protected] 
    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. 监控页面

    http://192.168.56.10/nagios

    nagios监控的搭建

    nagios监控的搭建

    9. 相关链接

    • 云监控

    • 云监控 Ganglia 安装步骤

    • Linux SendMail 使用外部SMTP服务发送邮件

    你可能感兴趣的:(nagios)