本文转自linux_study的博客
http://chenxizhuimeng.blog.51cto.com/2516314/510234
本文仅供自己参考,如果您有疑问请参考原博文,并请教原作者
一.Nagios简介
Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。
1)监控网络服务(HTTP、POP3、SMTP、PING、MySQL等)
2)监控主机资源(磁盘空间利用率、内存利用率、CPU负载等)
3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本
4)并行服务模式
5)轻松描述网络结构,并且能够区辨“宕机”和“主机不可达”
6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员6)当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式) ?可以通过飞信,等方式实现时,既可传递给管理员,可高效的保证服务器的维护。
7)自动日志滚动
8)支持以冗余方式进行主机监控
9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选
1)监控网络服务(HTTP、POP3、SMTP、PING、MySQL等)
2)监控主机资源(磁盘空间利用率、内存利用率、CPU负载等)
3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本
4)并行服务模式
5)轻松描述网络结构,并且能够区辨“宕机”和“主机不可达”
6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员6)当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式) ?可以通过飞信,等方式实现时,既可传递给管理员,可高效的保证服务器的维护。
7)自动日志滚动
8)支持以冗余方式进行主机监控
9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选
二.nagios组件
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个
可选的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作
都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。
而四个ADDON中(1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件
以实现对这些主机资源的监控(2)NSCA:用来让 被监控的远程Linux/Unix主机主动
将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)
(3)NSClient++:用来监控 Windows主机时安装在Windows主机上的组件
(4)NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,
以实现 这些数据的快速检索和处理这四个ADDON(附件)中,
NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,
而NSCA则需要同时安装在服务器端和客户端
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个
可选的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作
都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。
而四个ADDON中(1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件
以实现对这些主机资源的监控(2)NSCA:用来让 被监控的远程Linux/Unix主机主动
将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)
(3)NSClient++:用来监控 Windows主机时安装在Windows主机上的组件
(4)NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,
以实现 这些数据的快速检索和处理这四个ADDON(附件)中,
NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,
而NSCA则需要同时安装在服务器端和客户端
三.Nagios的安装与配置
1.安装前的准备
(1)解决安装Nagios的依赖关系:
Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
# yum -y install httpd gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-server
(2)所需要安装组件:
服务端所用的安装包为 nagios nagios-plugins ndoutils(非必须)
linux客户端 nrpe
windows客户端 NSClient++
linux客户端 nrpe
windows客户端 NSClient++
(3)
进行selinux设置,或者关闭selinux
进行selinux设置,或者关闭selinux
开始搭建:
(1)添加nagios运行所需要的用户和组:
(1)添加nagios运行所需要的用户和组:
# groupadd nagcmd
# useradd -m nagios
# usermod -a -G nagcmd nagios
把apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限:
# usermod -a -G nagcmd apache
2、编译安装nagios:
# tar zxf nagios-cn-3.2.3.tar.gz
# cd nagios-cn-3.2.3
# ./configure --with-command-group=nagcmd --enable-event-broker
# make all
# make install
# make install-init
# make install-config
# make install-commandmode
# make install
# make install-init
# make install-config
# make install-commandmode
为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
3、编译、安装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
4、配置并启动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
(4)配置selinux
如果您的系统开启了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
(5)通过web界面查看nagios:
http://your_nagios_IP/nagios
如果不能正常显示,或提示403 没有权限访问
解决如下,修改httpd的配置文件httpd.conf
用vi编辑/etc/httpd/conf/httpd.conf这个文件,在其中添加
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so 这是添加一个模块信息到apache里头去,是apache能支持php,并添加
AddType application/x-httpd-php .php 这是为了使apache能够支持以.php结尾的文件,也就是支持php
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so 这是添加一个模块信息到apache里头去,是apache能支持php,并添加
AddType application/x-httpd-php .php 这是为了使apache能够支持以.php结尾的文件,也就是支持php
在DirectoryIndex 后面添加 index.php
登录时需要指定前面设定的web认证帐号和密码。
登录时需要指定前面设定的web认证帐号和密码。
登录界面如下:
四.客户端的配置:
对于windows客户端:
1.被监控端安装NSClient++-0.3.8-Win32.msi
2.安装完成后修改配置文件NSC.ini把需要的库都打开
1.被监控端安装NSClient++-0.3.8-Win32.msi
2.安装完成后修改配置文件NSC.ini把需要的库都打开
3.在监控服务器上修改nagios配置文件nagios.cfg
去掉注释cfg_file=/usr/local/nagios/etc/objects/windows.cfg
定义windows.cfg
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.0.10 ; 你主机的IP
}
保存退出
去掉注释cfg_file=/usr/local/nagios/etc/objects/windows.cfg
定义windows.cfg
define host{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.0.10 ; 你主机的IP
}
保存退出
查看windows状态:
对于Linux客户端:
被监控端
先添加nagios用户
useradd nagios
为了安装nrpe,先安装nagios-plugins-1.4.15.tar.gz 插件
# 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用户
useradd nagios
为了安装nrpe,先安装nagios-plugins-1.4.15.tar.gz 插件
# 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
#yum install openssl-devel
#tar -zxvf nrpe-2.12.tar.gz
#cd nrpe-2.12.tar.gz
#./configure --enable-ssl --with-ssl-lib=/usr/lib/
#tar -zxvf nrpe-2.12.tar.gz
#cd nrpe-2.12.tar.gz
#./configure --enable-ssl --with-ssl-lib=/usr/lib/
#make all
#make install-plugin
#make install-daemon
#make install-daemon-config
#make install-plugin
#make install-daemon
#make install-daemon-config
4.配置nrpe信息
vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1 //允许监控的IP, 在这的ip可改为nagios服务器ip
vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1 //允许监控的IP, 在这的ip可改为nagios服务器ip
修改后保存退出。
检查:/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
检查:/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
linux服务端
3.安装NRPE
cd nagios-nrpe_2.8.1
yum -y install openssl-devel
3.安装NRPE
cd nagios-nrpe_2.8.1
yum -y install openssl-devel
./configure --enable-ssl --with-ssl-lib=/lib/
make all
make install-plugin
make install-plugin
4.commands.cfg定义外部构件nrpe
vim /usr/local/nagios/etc/objects/commands.cfg
#添加
#check nrpe
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
vim /usr/local/nagios/etc/objects/commands.cfg
#添加
#check nrpe
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
在/usr/local/nagios/etc/nagios.cfg 中添加一条
cfg_file=/usr/local/nagios/etc/objects/mylinux.cfg
定义 mylinux.cfg
define host{
use linux-server
host_name mylinux
alias mylinux
address 192.168.0.20(客户端IP既被监控的IP)
}
define service{
use generic-service
host_name mylinux
service_description check-swap
check_command check_nrpe!check_swap
}
define service{
use generic-service
host_name mylinux
service_description check-load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name mylinux
service_description check-disk
check_command check_nrpe!check_had1
}
define service{
use generic-service
host_name mylinux
service_description check-users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name mylinux
service_description otal_procs
check_command check_nrpe!check_total_procs
}
保存退出,重启服务:
定义 mylinux.cfg
define host{
use linux-server
host_name mylinux
alias mylinux
address 192.168.0.20(客户端IP既被监控的IP)
}
define service{
use generic-service
host_name mylinux
service_description check-swap
check_command check_nrpe!check_swap
}
define service{
use generic-service
host_name mylinux
service_description check-load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name mylinux
service_description check-disk
check_command check_nrpe!check_had1
}
define service{
use generic-service
host_name mylinux
service_description check-users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name mylinux
service_description otal_procs
check_command check_nrpe!check_total_procs
}
保存退出,重启服务:
如果重启不来,可能是定义的服务nagios没有装插件或不识别,把localhost.cfg的关于service的定义复制到新添加的文中,可以启动。
使用/usr/local/nagiso/libexec/check_nrpe -H 192.168.0.20(客户端ip)
测试是否可以连通监控
如果出现CHECK_NRPE: Error - Could not complete SSL handshake
查看客户机的防火墙是否允许5666端口通行,或者查看客户端的nrpe.cfg allowhosts的ip有没有服务器的ip
实验效果:
五.飞信报警
1.下载fention包,解压出来后
包括主程序fetion,库文件libACE_SSL-5.7.2.so libACE-5.7.2.so libcrypto.so.4 libssl.so.4
2.mv libACE_SSL-5.7.2.so libACE-5.7.2.so libcrypto.so.4 libssl.so.4 /usr/lib
3.chmod a+x fetion
./fetion --mobile 150xxxxxxxx --pwd 123456 --to 150xxxxxxxx --msg-tpye=0 --msg-utf8 $HOSTNAME
第一次发送会在当前目录下会生成一个150xxxxxxxx.jpg的图形验证码,将验证码输入,回车即可成功发送飞信。
发送成功界面如下: