nagios:

cacti默认是以邮件发送警告信息的,虽然可以安装插件以实现其他方式进行告警,但不是他的强项,nagios有着强大的报警机制,下面是部署方法:
 
 
 
  
  1. # yum install httpd gcc make gd-devel perl-ExtUtils-Embed #安装编译所需要的软件包  
  2. # useradd nagios #运行nagios服务的用户  
  3. # usermod -G nagios apache #将apache用户加入到nagios组中,因为nagios程序通过apache发布与修改,而httpd程序的执行用户是apache,所以需要让apache有权限修改查看nagios文件  
  4. # tar jxf nagios-cn-3.2.3.tar.bz2  
  5. # cd nagios-cn-3.2.3  
  6. # ./configure --enable-embedded-perl    
  7. # make all  
  8. # make install  
  9. # make install-init  
  10. # make install-commandmode  
  11. # make install-config  
  12. # make install-webconf  
 安装nagios插件:
 
 
 
  
  1. # yum install mysql-devel openssl-devel -y #安装编译所需的安装包  
  2. # tar zxf nagios-plugins-1.4.15.tar.gz   
  3. # cd nagios-plugins-1.4.15  
  4. # ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap --enable-perl-modules  
  5. # make  
  6. # make install  
配置nagios
 
 
  
  1. # vi /usr/local/nagios/etc/nagios.cfg #nagios 配置  
  2. cfg_file=/usr/local/nagios/etc/objects/hosts.cfg  
  3. #新建 hosts.cfg 文件,存放主机与主机组定义  
  4. cfg_file=/usr/local/nagios/etc/objects/services.cfg #新建 services.cfg 文件,存放服务与服务组定义  
  5. #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg  #注释 localhost.cfg 文件  
注意,这里软件装好的时候默认时读取licalhost.cfg这个文件中的被监控的主机与服务的设置,我们把它注释掉,新加入两个文件,分别管理被监控的主机、主机组与被监控的服务与服务组
 
编辑被监控主机与主机组的文件:
 
 
 
  
  1. # cd /usr/local/nagios/etc/objects  
  2. # vim /usr/local/nagios/etc/objects/hosts.cfg  
  3.   
  4. define host{  
  5.         use                     linux-server  
  6.         host_name               监控主机  
  7.         alias                   nagios 服务器  
  8.         address                 127.0.0.1  
  9.         icon_p_w_picpath              web.gif  
  10.         statusmap_p_w_picpath         web.gd2  
  11.         2d_coords               100,300  
  12.         3d_coords               100,300,100  
  13.         }  
  14.   
  15. define hostgroup{               ;主机组不是必须的  
  16.         hostgroup_name  linux-servers   
  17.         alias           Linux Servers           
  18.         members         *      
  19.         }  
编辑被监控服务的时候因为内容很多,所以可以拷贝原来的localhost.cfg文件进行一些修改来使用:
 
 
  
  1. # cp localhost.cfg services.cfg  
 对services.cfg进行修改,在vi编辑器中的命令模式下用d1G去掉servicegroup以上的hosts部分,并用:%s/田朝阳家用机/监控主机/g命令将文件中用于被监控的主机全部改为刚刚在hosts文件中设置的主机,并在servicegroup部分做如下修改,其他不变:
 
 
 
 
 
  
  1. define servicegroup{  
  2.         servicegroup_name 系统负荷检查  
  3.         alias 负荷检查  
  4.         members 监控主机,进程总数,监控主机,登录用户数,监控主机,根分区,监控主机,>交换空间利用率  
  5.         }  
  6.   
  7. define servicegroup{  
  8.         servicegroup_name 全部联通性检查  
  9.         alias 联通性检查  
  10.         members 监控主机,PING  
  11.         }  
使用命令
 
 
 
  
  1. # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin  
修改nagios管理员的登录密码,注意必须是nagiosadmin,否则可以登录但是无法查看状态
 
使用命令
 
 
  
  1. /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg  
 校验配置文件语法的正确性,没有错误的话
 
 
  
  1. service nagios start   
  2. service httpd start   
用nagios监控 mysql 主机
 
在mysql服务器端创建一个监控检测账户,只给select权限,不需要密码:
 
 
  
  1. mysql> create database nagdb;  
  2. mysql> grant select on nagdb.* to nagdb@'192.168.0.86' ;  
  3. mysql> flush privileges;  
在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务
 
  
  1. /usr/local/nagios/libexec/check_mysql -H 192.168.0.36 -u nagdb -d nagdb 
  2. Uptime: 73 Threads: 1 Questions: 7 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 
  3. Queries per second avg: 0.95 
 
在 nagios 主机上添加对 mysql 服务监控的定义

 

vi /usr/local/nagios/etc/objects/hosts.cfg 添加如下行


 

 
   
  1. define host{  
  2.         use                     linux-server      
  3.         host_name               mysql主机  
  4.         alias                   mysql 服务器    
  5.         address                 192.168.0.32  
  6.         icon_p_w_picpath              server.gif  
  7.         statusmap_p_w_picpath         server.gd2  
  8.         2d_coords               500,200  
  9.         3d_coords               500,200,200  
  10.         }  

 

vi /usr/local/nagios/etc/objects/services.cfg 添加如下行

 
 
   
  1. define service{ 
  2.         use                             local-service         ; Name of service template to use 
  3.         host_name                       mysql主机 
  4.         service_description             mysql服务 
  5.         check_command                   check_mysql 
  6.         service_groups                  mysql服务组 
  7.         notifications_enabled           0 
  8.         } 
  9.  
  10. define servicegroup{ 
  11.         servicegroup_name mysql服务组 
  12.         alias mysql服务器 
  13.         } 
vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行
 
 
   
  1. # 'check_mysql' command definition 
  2. define command{ 
  3.         command_name    check_mysql 
  4.         command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u nagdb -p nagdb 
  5.         } 
 
 
   
  1. # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
  2. # /etc/init.d/nagios reload
 
Nagios 通过 NRPE 监控远程主机系统状况
 
刚刚时监控了一个远程主机提供的服务的状态,如果要监控远程主机的状态,如内存,磁盘占用等情况的话就需要用NRPE了,简单来说NRPE的工作原理是在远程主机端不安装nagios,只安装NRPE插件,插件中包含了check_mysql,check_disk等命令,在远程主机端执行这些命令以收集远程主机信息包从在远程主机的NRPE中,而nagios主机只需要执行check_nrpe命令连接远程主机的NRPE,并通过SSL加密通道传输主机数据,下面时实现方法:
远程主机设定
 
 
   
  1. yum install openssl openssl-devel gcc
  2. useradd nagios 
  3. tar xzf nagios-plugins-1.4.15.tar.gz 
  4. cd nagios-plugins-1.4.15 
  5. ./configure --with-nagios-user=nagios --with-nagios-group=nagios 
  6. make 
  7. make install 
  8. yum install xinetd -y 
  9. tar zxf nrpe-2.12.tar.gz 
  10. cd nrpe-2.12 
  11. ./configure 
  12. make all 
  13. make install-plugin 
  14. make install-daemon 
  15. make install-daemon-config 
  16. make install-xinetd 
 
 
   
  1. vi /etc/xinetd.d/nrpe 修改如下行 
  2. only_from = 192.168.0.71 #nagios 主机 ip 地址 
  3. vi /etc/services 添加如下行 
  4. nrpe 5666/tcp  #nrpe 服务监听端口 
  5. vi /usr/local/nagios/etc/nrpe.cfg 修改如下行 
  6. command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p / #根分区监测 
  7. service xinetd restart 
  8. netstat -antlp |grep 5666 #看到如下输出说明 NRPE 正常启动,并确保防火墙允许此端口
  9. tcp 0 0 :::5666  :::* LISTEN 26359/xinetd 
 监控主机设定
 
 
   
  1. tar zxf nrpe-2.12.tar.gz 
  2. cd nrpe-2.12 
  3. ./configure --with-nagios-user=nagios --with-nagios-group=nagios 
  4. make all 
  5. make install-plugin 
 
 
   
  1. /usr/local/nagios/libexec/check_nrpe -H 192.168.0.36 
  2. NRPE v2.12 #看到这个说明可以使用了
 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$ -c $ARG1$ 
  5.         } 
$ARG1$表示第一个参数
 
 vi /usr/local/nagios/etc/objects/services.cfg 添加如下行
 
 
   
  1. define service{ 
  2.         use     generic-service 
  3.         host_name       mysql主机 
  4.         service_description CPU Load 
  5.         check_command   check_nrpe!check_load 
  6.         } 
  7. define service{ 
  8.         use     generic-service 
  9.         host_name       mysql主机 
  10.         service_description     Current Users 
  11.         check_command           check_nrpe!check_users 
  12.         } 
  13. define service{ 
  14.         use     generic-service 
  15.         host_name       mysql主机 
  16.         service_description      / Free Space 
  17.         check_command           check_nrpe!check_disk 
  18.         } 
  19. define service{ 
  20.         use     generic-service 
  21.         host_name       mysql主机 
  22.         service_description     Total Processes 
  23.         check_command   check_nrpe!check_total_procs 
  24.         } 
  25. define service{ 
  26.         use     generic-service 
  27.         host_name       mysql主机 
  28.         service_description     Zombie Processes 
  29.         check_command   check_nrpe!check_zombie_procs 
  30.         } 
 
 
   
  1. /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
  2. service nagios reload 
 
 Nagios 整合飞信
 
 nagios可以通过短信发出告警,在企业中有专门的短信平台,此处我们拿飞信做实验,但是在生产环境中不推荐。
 
 http://www.it-adv.net/ 下载 fetion 主程序与支持库
>> 使用说明 <<
以下参数提供登录用的账号密码(三种方式,手机号-密码 飞信号-密码 文件--索引)
--mobile=[手机号]
--sid=[飞信号]
--pwd=[密码]
--config=[文件名]
--index=[索引号]
登录手机号
登录飞信号
登录密码
存储手机号、密码的文件。
索引
以下参数提供接收者
--to=[手机号/飞信号/URI] 接收消息的手机号/飞信号/URI.如果知道对方 URI,则只需自己在对方
好友列表,无需对方在自己好友列表就能发送,支持多个号码,中间用,逗号分隔
--msg-utf8=[信息] 发送的消息,UTF8 编码
--msg-gb=[信息]
发送的消息,GB 编码
--file-utf8=[文件 utf8 格式] 发送文件内容
--file-gb=[文件 gb 格式]
发送文件内容
--msg-type=[0/1/2] 发送消息类型:普通消息 长消息 智能短信
--query-cmcc-no
查询移动公司手机段
以下为可选项
--debug
显示调试信息
--hide
隐身登录
--exit-on-verifycode
服务器需要进行图形验证时,程序退出(1)或者等待用户手工输入识别信息(程序默认)
--proxy-ip=http
--proxy-port=http
代理 ip
代理端口
(机器人需要 HTTP CONNECT 代理,大家常用的 ccproxy 是支持的)
>> 举例 <<
linux 下,请使用如下命令:
LD_LIBRARY_PATH=. ./fetion --mobile=手机号 --pwd=密码 --to=接收者手机号 --msg-utf8=测试
LD_LIBRARY_PATH=. ./fetion --sid=飞信号 --pwd=密码 --to=接收者手机号 --msg-utf8=测试
LD_LIBRARY_PATH=. ./fetion --config=sample.conf --index=1 --to= 接收者手机号 --msg-utf8=测试
发送消息中如果需要换行,请用 \n
// 以下为 sample.conf 内容,文件内容中, #号为注释行
# This config file is for fetion robot tool.
# Usage demo: ./fetion --config=/etc/fetion.conf --index=1
# ID Mobile Password
1 13677098080 123456
新版提示:
1. 使用复杂的密码(数字+字母+符号),将不会弹出图形验证码(我测试时是这种表现)。
2. 第一次使用机器人时,即使是复杂密码,也可能会弹出图形验证码,以后将不再提示。
3. 如果您是使用其它程序调用本程序,请在运行时,指定--exit-on-verifycode=1,否则,程序将无限期等待。当您以该参数运行机器人时,当弹出图形验证码时,程序将以退出码 29 结束( 在 linux 中,通过$?获取,在 windows 中,通过 %ERRORLEVEL% 获取)
4. 请确保目录权限可写.
 
 
 1) 安装飞信
cp fetion /usr/local/fetion
chown -R nagios /usr/local/fetion
tar zxf linuxso_20101113.tar.gz -C /usr/lib
注:由于发行版本不同,可能会覆盖您机器中的核心库,导致严重系统问题,在解压之前确保没有文件重复
创建运行 fetion 的脚本: fetion.sh
vi /usr/local/nagios/libexec/fetion.sh
/usr/local/fetion/fetion --mobile=136xxxxxxx --pwd=yakexi --to="$1" --msg-utf8="$2" > /dev/null
chown nagios.nagios /usr/local/nagios/libexec/fetion
chmod +x /usr/local/nagios/libexec/fetion
执行 fetion.sh 脚本看是否可以发送信息
注: 第一次调用飞信脚本时会要求你输入验证码,在飞信程序所在的 /usr/local/fetion 目录下会生成以你手机号命名的 png 图片文件,上面存放着验证码。
2) 增加 fetion 报警选项: templates.cfg
修改 /usr/local/nagios/etc/objects/templates.cfg
在 define contact{...} 部分,将以下两行:
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
改为:
service_notification_commands notify-service-by-email,service-notify-by-fetion
host_notification_commands notify-host-by-email,host-notify-by-fetion
3) 增加调用脚本: commands.cfg
修改 /usr/local/nagios/etc/objects/commands.cfg 在该文件的最后增加以下部分:
##### host-notify-by-fetion command definition
define command{
command_name host-notify-by-fetion
command_line $USER1$/fetion.sh $CONTACTPAGER$ "$NOTIFICATIONTYPE$ alert -Host
$HOSTNAME$ is $HOSTSTATE$"
}
##### service-notify-by-fetion command definition
define command{
command_name service-notify-by-fetion
command_line $USER1$/fetion.sh $CONTACTPAGER$ "$NOTIFICATIONTYPE$:
$HOSTalias$/$SERVICEDESC$ is $SERVICESTATE$"
4) 修改联系人选项: contact.cfg
修改 /usr/local/nagios/etc/objects/contact.cfg
在 define contact{...} 部分增加如下一行
pager 136xxxxxxxx ;
#接收飞信信息的手机号码
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#校验后重新载入 nagios 配置
/etc/init.d/nagios reload