安装Nagios来监控远程Windows主机和Linux主机

安装Nagios来监控远程Windows主机和Linux主机
Nagios程序简介

Nagios一般由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工做都是经过插件实现的,所以,Nagios和Nagios-plugins是服务器端工做所必须的组件。而四个ADDON中,NRPE用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控;NSCA用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到);NSClient++是用来监控Windows主机时安装在Windows主机上的组件;而NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理。这四个ADDON(附件)中,NRPE和NSClient++工做于客户端,NDOUtils工做于服务器端,而NSCA则须要同时安装在服务器端和客户端。

目前,Nagios只能安装在Linux系统主机上,其编译须要用到gcc。同时,若是打算使用web界面的管理工具的话,还须要有apache服务器和GD图形库的支持。


安装配置Nagios

安装前的准备工做

(1)解决安装Nagios的依赖关系:

Nagios基本组件的运行依赖于httpd、gcc和gd。能够经过如下命令来检查nagios所依赖的rpm包是否已经彻底安装:
# yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-devel mysql-server

说明:以上软件包您也能够经过编译源代码的方式安装,只是后面许多要用到的相关文件的路径等须要按照您的源代码安装时的配置逐一修改。此外,您还得按需启动必要
的服务,如httpd等。

(2)添加nagios运行所须要的用户和组:
# groupadd nagcmd
# useradd -G nagcmd nagios
# passwd nagios

把apache加入到nagcmd组,以便于在经过web Interface操做nagios时可以具备足够的权限:
# usermod -a -G nagcmd apache
若是源码编译安装的Apache配置文件中的用户可能不是apache,只把相应的用户加入nagcmd便可。

(3)若是您的系统开启了selinux服务,则默认为拒绝nagios web cgi程序的运行。您能够经过下面的命令来检查您的系统是否开启了selinux:
#getenforce

若是上面命令的结果显示开启了selinux服务,您能够经过下面的命令暂时性的将其关闭:
#setenforce 0

若是您想在之后彻底关闭selinux,能够经过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改成“disable”便可。

固然,您也能够经过如下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:
# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
# chcon -R -t httpd_sys_content_t /usr/local/nagios/share

下面就能够安装nagios软件了。所须要的软件有:
nagios-3.3.1.tar.gz
nagios-plugins-1.4.15.tar.gz
这里用的都是nagios的最新版本。

安装nagios:
# tar zxf nagios-3.3.1.tar.gz
# cd nagios-3.3.1
# ./configure --with-command-group=nagcmd --enable-event-broker
# make all
# make install
# make install-init
# make install-commandmode
# make install-config

为email指定您想用来接收nagios警告信息的邮件地址,默认是本机的nagios用户:
# vi /usr/local/nagios/etc/objects/contacts.cfg
email nagios@localhost #这个是默认设置

在httpd的配置文件目录(conf.d)中建立Nagios的Web程序配置文件:
# make install-webconf

建立一个登陆nagios web程序的用户,这个用户账号在之后经过web登陆nagios认证时所用:
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

以上过程配置结束之后须要从新启动httpd:
# service httpd restart

编译、安装nagios-plugins

nagios的全部监控工做都是经过插件完成的,所以,在启动nagios以前还须要为其安装官方提供的插件。

# tar zxf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

配置并启动Nagios

(1)把nagios添加为系统服务并将之加入到自动启动服务队列:
# chkconfig --add nagios
# chkconfig nagios on


(2)检查其主配置文件的语法是否正确:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

(3)若是上面的语法检查没有问题,接下来就能够正式启动nagios服务了:
# service nagios start

经过web界面查看nagios:
http://your_nagios_IP/nagios 登陆时须要指定前面设定的web认证账号和密码。如图所示是监控成功所显示的结果:


从图上能够看出全部的服务都是正常。
下面来用这个Nagios来监控远程主机。先来用此软件来监控|Windows主机

基于NSClinet++监控Windows主机

要想监控Windows服务器要先在Windows主机上安装上NSClinet++这个软件,在安装能够定义好让这个Nagios服务器来监控Windows主机。安装好完成后在Windows主机可查看12489端口,若是启动说明安装成功。
下面在配置Nagios来监控Windows主机。
在配置以前能够在命令行中来测试一下是否能监控Windows主机。方法是:
在nagios端使用以下命令测试:
check_nt -H <client ip> -p <port> -v <command> ...
# check_nt -H 192.168.35.20 -p 12489 -v CPULOAD -w 80 -c 90 -l 5,80,90
若是可以测试成功,下面就能够配置了。若是不能成功,在Windows上安装的软件没有安装好。

下面来配置Nagios的文件来监控Windows主机。

一、定义命令:
# vim /etc/nagios/object/command.cfg
  在这个配置文件中定义一个主机,对于Windows主机已经在配置文件中有一个定义了。能够直接运用
二、定义远程主机的服务
# vim /etc/nagios/object/name.cfg
在这里是使用的winhost.cfg
在这个配置文件中要定义的内容以下:
定义主机和服务:
define host{
use windows-server
host_name winhost
alias My Windows Host
address 192.168.35.20
}
define service{
use generic-service
host_name winhost
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION
}
define service{
use generic-service
host_name winhost
service_description Uptime
check_command check_nt!UPTIME
}
define service{
use generic-service
host_name winhost
service_description CPU Load
check_command check_nt!CPULOAD!-l 5,80,90
}
define service{
use generic-service
host_name winhost
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c 90
}
define service{
use generic-service
host_name winhost
service_description C:\ Drive Space
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}

define service{
use generic-service
host_name winhost
service_description W3SVC
check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
}

define service{
use generic-service
host_name winhost
service_description Explorer
check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
}

这样一个主机和服务就定义完成了。
下面要在nagios.cfg中去加入这个远程主机。
# vim /etc/nagios/nagios.cfg
在相应的位置加入:
像以下的行:
cfg_file=/etc/nagios/objects/windows.cfg

作完相应的配置后就能够检测一下所作的是否有错误:
# /usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
 若是没有什么错误 就能够在服务端对这个远程主机进行监控了。在浏览器打开网页就看到如图所示:


到此就把一个远程的Windows服务器监控起来了。也能够定义不一样的服务。

下面来定义如何来监控远程的Linux主机。

基于NRPE监控远程Linux主机

NRPE简介

Nagios监控远程主机的方法有多种,其方式包括SNMP、NRPE、SSH和NCSA等。这里介绍其经过NRPE监控远程Linux主机的方式。

NRPE(Nagios Remote Plugin Executor)是用于在远端服务器上运行检测命令的守护进程,它用于让Nagios监控端基于安装的方式触发远端主机上的检测命令,并将检测结果输出至监控端。而其执行的开销远低于基于SSH的检测方式,并且检测过程并不须要远程主机上的系统账号等信息,其安全性也高于SSH的检测方式。

安装配置被监控端

1)先添加nagios用户
# useradd -s /sbin/nologin nagios

2)NRPE依赖于nagios-plugins,所以,须要先安装之

# tar zxf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make all
# make instal

3)安装NRPE

# tar -zxvf nrpe-2.12.tar.gz
# cd nrpe-2.12.tar.gz
# ./configure --with-nrpe-user=nagios \
--with-nrpe-group=nagios \
--with-nagios-user=nagios \
--with-nagios-group=nagios \
--enable-command-args \
--enable-ssl
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config

4)配置NRPE

# vim /usr/local/nagios/etc/nrpe.conf

log_facility=daemon
pid_file=/var/run/nrpe.pid
server_address=172.16.100.11
server_port=5666
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=192.168.35.11
command_timeout=60
connection_timeout=300
debug=0

上述配置指令能够作到见名知义,所以,配置过程当中根据实际须要进行修改便可。其中,须要特定说明的是allowed_hosts指令用于定义本机所容许的监控端的IP地址。

5)启动NRPE

# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d

为了便于NRPE服务的启动,能够将以下内容定义为/etc/init.d/nrped脚本:

#!/bin/bash
# chkconfig: 2345 88 12
# description: NRPE DAEMON

NRPE=/usr/local/nagios/bin/nrpe
NRPECONF=/usr/local/nagios/etc/nrpe.cfg

case "$1" in
start)
echo -n "Starting NRPE daemon..."
$NRPE -c $NRPECONF -d
echo " done."
;;
stop)
echo -n "Stopping NRPE daemon..."
pkill -u nagios nrpe
echo " done."
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 start|stop|restart"
;;
esac
exit 0

在监控端上的配置:

1)安装NRPE

# tar -zxvf nrpe-2.12.tar.gz
# cd nrpe-2.12.tar.gz
# ./configure --with-nrpe-user=nagios \
--with-nrpe-group=nagios \
--with-nagios-user=nagios \
--with-nagios-group=nagios \
--enable-command-args \
--enable-ssl
# make all
# make install-plugin

2)定义如何监控远程主机及服务:

若是但愿上面的command定义更具备通用性,那么上面的定义也能够修改成以下:
# vim /etc/nagios/objects/commands.cfg

定义监控远程Linux主机的命令:
define command
{
command_name check_nrpe
command_line $USER1$/check_nrpe –H "$HOSTADDRESS$" -c $ARG1$
}

定义远程Linux主机的swap资源:
define service
{
use generic-service
host_name linuxserver1,linuxserver2
hostgroup_name linux-servers
service_description SWAP
check_command check_nrpe!check_swap
normal_check_interval 30
}

# vim /etc/nagios/objects/linhost.cfg
添加以下内容:
define host{
use linux-server ; Inherit default values from a template
host_name linhost
alias My Linux Host ; A longer name associated with the host
address 192.168.35.12 ; IP address of the host
}


define service{
use generic-service
host_name linhost
service_description CHECK USERS
check_command check_nrpe!check_users
}


define service{
use generic-service
host_name linhost
service_description Load
check_command check_nrpe!check_load
}

define service{
use generic-service
host_name linhost
service_description SDA1
check_command check_nrpe!check_sda1
  }

define service{
use generic-service
host_name linhost
service_description Zombie
check_command check_nrpe!check_zombie_procs
}
define service{
use generic-service
host_name linhost
service_description Total procs
check_command check_nrpe!check_total_procs
}

这样一个Linux主机就定义完成了。下面要把这个Linux加入到nagios.cfg中。
# vim /etc/nagios/nagios.cfg
在相应的位置上添加以下行便可
cfg_file=/etc/nagios/objects/linhost.cfg

作完以后从新启动nagios服务就能够监控一个远程的Linux主机了。
在浏览器中以下图所示:

这个主机刚刚接入,等待几分钟后就可心查看各服务的状况了。

好了,Nagiosr的监控就先写到这里了,在下一篇中要用到联系人了。所要用到的是飞信机器人这个工具。想一想这个飞信机器人仍是蛮好玩的。