当前位置: 主页 > 环境部署 >

CentOS 5.5+Nginx+Nagios+pnp+QQ邮件及手机短信报警环境

时间:2013-06-01 12:54来源:www.linuxyw.com 作者:admin 点击:
本文由罗小波提供,转载请注明本文出处及作者信息 CentOS5.5+Nginx+Nagios+pnp+QQ邮件及手机短信报警 环境:两台centos5.532位系统,都已经搭建好了源码的lnmp平台,且测试协同工作已通过 n
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


 本文由罗小波提供,转载请注明本文出处及作者信息


CentOS 5.5+Nginx+Nagios+pnp+QQ邮件及手机短信报警

环境:两台centos5.5 32位系统,都已经搭建好了源码的lnmp平台,且测试协同工作已通过
nagios-server:IP:192.168.21.157
nagios-client:IP:192.168.21.258

一、nagios监控端安装,所需软件放在root目录
1. nagios安装
tar xvf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.3
useradd -m -s /bin/bash nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd
make
make all
make install
make install-init     # 生成init启动脚本
make install-config     # 安装示例配置文件
make install-commandmode     # 设置相应的目录权限
chmod o+rwx /usr/local/nagios/var/rw 

2. nagios插件安装
cd
tar xvf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-gourp=nagios --with-mysql=/usr/local/mysql && make && make install

3. nrpe安装
cd
tar xvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin 
make install-daemon 
make install-daemon-config
\cp src/check_nrpe /usr/local/nagios/libexec/
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
echo '/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d' >> /etc/rc.local

要重启nrpe进行就先杀掉进行,然后重启
kill `ps aux |grep nrpe |grep -v grep |awk '{print $2}'`
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
本机测试下:
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
结果类似如下图,说明nrpe工作正常
Nginx+Nagios+pnp+QQ

4. 配置
# 加入系统服务并设为开机自动
chkconfig --add nagios
chkconfig nagios on
chown nagios.nagios /usr/local/nagios/var/rw
# 测试配置文件是否正确
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
出现如下图的标识就表示配置正确


添加别名命令,方便测试配置文件
vim ~/.bashrc
在里面用alias 来自定义一个命令来代替,这里我用check
alias check='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
source ~/.bashrc
此时可以用check命令来检测配置文件了

# 取消用户认证(方便调试)
vi /usr/local/nagios/etc/cgi.cfg
找到use_authentication=1并把值改为0

修改联系人邮箱,修改为用于报警接收的邮件地址
vi /usr/local/nagios/etc/objects/contacts.cfg

定义check_nrpe命令
vi /usr/local/nagios/etc/objects/commands.cfg

define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

检测配置文件是否有误
check

启动服务
service nagios start

5. nginx 配置,Nginx fastcgi perl (pl、cgi)支持
安装FCGI模块
cd
tar zxvf FCGI-0.70.tar.gz
cd FCGI-0.70
perl Makefile.PL
make
make install
cd

安装 IO 和 IO::ALL模块
tar zxvf IO-1.25.tar.gz
cd IO-1.25
perl Makefile.PL
make
make install
cd

tar zxvf IO-All-0.41.tar.gz
cd IO-All-0.41
perl Makefile.PL
make
make install
cd

Perl脚本,软件包里已经附带了,只需解压并复制到相应路径,赋予执行权限即可
unzip perl-fcgi.zip
cp perl-fcgi.pl /usr/local/nginx/
chmod 755 /usr/local/nginx/perl-fcgi.pl

cgi启动/停止脚本 (www为nginx的运行用户)
vi /usr/local/nginx/start_perl_cgi.sh

#!/bin/bash
#set -x
dir=/usr/local/nginx

stop ()
{
#pkill  -f  $dir/perl-fcgi.pl
kill $(cat $dir/logs/perl-fcgi.pid)
rm $dir/logs/perl-fcgi.pid 2>/dev/null
rm $dir/logs/perl-fcgi.sock 2>/dev/null
echo "stop perl-fcgi done"
}

start ()
{
rm $dir/now_start_perl_fcgi.sh 2>/dev/null

chown nobody.root $dir/logs
echo "$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log -pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock" >>$dir/now_start_perl_fcgi.sh

chown nobody.nobody $dir/now_start_perl_fcgi.sh
chmod u+x $dir/now_start_perl_fcgi.sh

sudo -u nobody $dir/now_start_perl_fcgi.sh
echo "start perl-fcgi done"
}

case $1 in
stop)
stop
;;
start)
start
;;
restart)
stop
start
;;
esac 

把start_perl_cgi.sh文件中的nobody全部用www替换,当然如果你nginx的配置文件里面还是用的nobody,这里就不用修改了:
sed -i 's@nobody@www@g' /usr/local/nginx/start_perl_cgi.sh
chmod 755 /usr/local/nginx/start_perl_cgi.sh
# 启动脚本
/usr/local/nginx/start_perl_cgi.sh start
正常情况下在/usr/local/nginx/logs 下生成 perl-fcgi.sock 这个文件,如果没有生成,那就要检查下上面的步聚了.
ls /usr/local/nginx/logs/perl-fcgi.sock

nginx的cgi、perl支持到此完毕

6. 配置nginx,添加一个server,在nginx配置文件的“server{……}”前面一行插入下面内容
vim /usr/local/nginx/conf/nginx.conf

server {
    listen       88;
    server_name  localhost.localdomain;

    location / {
        root   /usr/local/nagios/share;
        index  index.html index.htm index.php;
    }

    location ~ .*\.(php|php5)?$
    {
      root /usr/local/nagios/share;
      fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_index index.php;
      include fcgi.conf;
    }

    location /nagios {
        alias /usr/local/nagios/share;
    }

    location /cgi-bin/images {
        alias /usr/local/nagios/share/images;
    }

    location /cgi-bin/stylesheets {
        alias /usr/local/nagios/share/stylesheets;
    }

    location /cgi-bin {
        alias /usr/local/nagios/sbin;
    }

    location ~ .*\.(cgi|pl)?$
    {
      gzip off;
      root   /usr/local/nagios/sbin;
      rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
      fastcgi_pass  unix:/usr/local/nginx/logs/perl-fcgi.sock;
      fastcgi_index index.cgi;
      include fcgi.conf;
      fastcgi_read_timeout   60;
    }
}

检测配置文件正确性,并重新载入nginx配置,启动nagios
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
service nagios start

此时,你可以打开浏览器进行查看下nagios的情况怎样,访问nagios-server的80端口,如下图
http://192.168.21.157:88/
Nginx+Nagios+pnp+QQ3
二、nagios被控端安装,所需软件都放在root目录下
yum install openssl-devel -y
1. nagios-plugins安装
groupadd nagios
useradd nagios -M -s /sbin/nologin -g nagios
tar xvf nagios-plugins-1.4.16.tar.gz 
cd nagios-plugins-1.4.16
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-gourp=nagios --with-mysql=/usr/local/mysql && make && make install
cd

2. nrpe安装
tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin 
make install-daemon 
make install-daemon-config

3. 配置启动
vi /usr/local/nagios/etc/nrpe.cfg
在 allowed_hosts 值后添加监控服务端的IP,本实验中服务端地址为:192.168.21.257,如下图
Nginx+Nagios+pnp+QQ5

启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
echo '/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d' >> /etc/rc.local

在服务端进行测试,命令如下,无报错且有返回信息就表示客户端nrpe正常工作
/usr/local/nagios/libexec/check_nrpe -H 192.168.21.158 -c check_users
Nginx+Nagios+pnp+QQ6

三、监控应用
本实验中的监控服务说明:

监控服务端本机:自己监控自己不需要配置nrpe,服务端的nrpe只用于获取客户端的nrpe传送过来的数据,在这里因为中文版的nagios已经默认有些配置,等会儿修改下直接用了
监控客户端:监控的服务有:mysql、nginx、memory、ip连接数、僵死的进程、磁盘空间、磁盘IO、登录用户数、进程总数、cpu负载、PING、SSH

这里我把本实验中的要监控的东西一次性配置完,不用在客户端服务端来回切换

客户端的配置:
解压脚本插件包、复制到nagios插件的libexec目录,覆盖掉原来的插件并赋予执行权限:
unzip libexec.zip
\cp libexec/* /usr/local/nagios/libexec
chmod -R +x /usr/local/nagios/libexec

在客户端上面要监控mysql,光用脚本还不行,要进行额外的设置
mysql -u root    本实验中mysql的root没有设置密码
添加mysql SQL语句
下面几句的大概意思是:创建一个空的数据库nagios,授权nagios这个用户从任何地方访问nagios这个数据库,刷新授权设置,查询下nagios这个用户是否创建成功,这个账号仅仅是nagios监控程序用来访问Mysql数据库所用,与其它帐号毫无关系。为了安全起见,nagios这个账号的权限应该特别低,仅仅有数据库的select权限即可。再进一步,我们创建一个空的数据库nagios,然后让nagios账号访问这个空库,就可以通过check_Mysql插件测试和监控Mysql数据库。
create database nagios;
grant select on nagios.* to nagios @'%' identified by '123456';
flush privileges;
select User,Password,Host from mysql.user;
如下图:
Nginx+Nagios+pnp+QQ7
添加mysql库到系统搜索库
vim /etc/ld.so.conf
/usr/local/mysql/lib
ldconfig

要监控磁盘io,还得安装sysstat这个工具包
yum install sysstat -y

配置客户端上面的nrpe
vim /usr/local/nagios/etc/nrpe.cfg      
修改的地方如下图,注意,配置中的IP改为本机的IP,同时还要注意,监控磁盘分区要自己先用命令在被监控机上面用命令查看分区是怎样的再配置
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_cpu.sh -w 80% -c 90%
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
command[check_sda2]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda2
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10% 
command[check_iostat]=/usr/local/nagios/libexec/check_iostat.sh -d sda -w 6 -c 10
command[check_mysql]=/usr/local/nagios/libexec/check_mysql -H 192.168.21.158 -u nagios -p 123456 -d nagios
command[check_nginx]=/usr/local/nagios/libexec/check_nginx.sh -u 192.168.21.158 -p /status -w 4000 -c 5000
command[check_mem]=/usr/local/nagios/libexec/check_memory.pl -f -w 20 -c 10
command[check_ip_conn]=/usr/local/nagios/libexec/ip_conn.sh 200 250
command[check_ssh]=/usr/local/nagios/libexec/check_tcp -p 22 -w 1.0 -c 10.0

配置完成后,重启nrpe
kill `ps aux |grep nrpe |grep -v grep |awk '{print $2}'`
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

服务端配置:
监控服务端本机的配置:
vim /usr/local/nagios/etc/objects/localhost.cfg   
修改里面的配置,最后修改完成的配置如下
define host{
        use                     linux-server
        host_name               localhost 
        alias                   localhost
        address                 127.0.0.1
        icon_image              server.gif
        statusmap_image         server.gd2
2d_coords 500,200
3d_coords 500,200,100
        }

define hostgroup{
        hostgroup_name  linux-servers ; The name of the hostgroup
        alias           Linux Servers ; Long name of the group
        members         *     ; Comma separated list of hosts that belong to this group
        }

define servicegroup{
servicegroup_name 全部联通性检查
alias 联通性检查 
      members localhost,PING,nagios-client,PING  
      }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       * 
        service_description             PING
       check_command check_ping!100.0,20%!500.0,60%
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             根分区 
       check_command check_local_disk!20%!10%!/
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             登录用户数
       check_command check_local_users!20!50
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             进程总数
       check_command check_local_procs!250!400!RSZDT
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             系统负荷
       check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             交换空间利用率
       check_command check_local_swap!20!10
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             SSH
       check_command check_tcp!22!1.0!10.0
       notifications_enabled 0
        }

服务器监控客户端的配置:
保存退出后复制这个文件一份,作为nagios-client的监控模版文件
cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/nagios-client.cfg
vim /usr/local/nagios/etc/objects/nagios-client.cfg   修改完成后的配置如下

define host{
        use                     linux-server
        host_name               nagios-client 
        alias                   nagios-client
        address                 192.168.21.158
        icon_image              server.gif
        statusmap_image         server.gd2
    2d_coords 500,200
    3d_coords 500,200,100
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       * 
        service_description             PING
    check_command check_ping!100.0,20%!500.0,60%
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             boot分区
    check_command check_nrpe!check_sda1
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             根分区
    check_command check_nrpe!check_sda2
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             登录用户数
    check_command check_nrpe!check_users
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             进总程数
    check_command check_nrpe!check_total_procs
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             CPU平均负载
    check_command check_nrpe!check_load
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             虚拟内存
    check_command check_nrpe!check_swap
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             SSH
    check_command check_nrpe!check_ssh
    notifications_enabled 0
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             僵死进程数
    check_command check_nrpe!check_zombie_procs
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             iostat
    check_command check_nrpe!check_iostat
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             mysql
    check_command check_nrpe!check_mysql
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             nginx
    check_command check_nrpe!check_nginx
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             memory
    check_command check_nrpe!check_mem
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       nagios-client
        service_description             IP连接数
    check_command check_nrpe!check_ip_conn
        }

在nagios.cfg文件中添加这个文件的路径,如下图
vim /usr/local/nagios/etc/nagios.cfg
Nginx+Nagios+pnp+QQ9
检查配置正确与否
check

重新启动nagios
service nagios restart

刷新监控页面,然后等待几分钟,等所有的“未决”变绿,如下图
Nginx+Nagios+pnp+QQ9

安装pnp图形支持
解压rrdtool
tar xvf rrdtool-1.4.5.tar.gz

以下绿色部分不是必须的:
编译安装支持中文的rrdtool

先让你的系统支持zh_CN.UTF-8:
编辑/etc/locale.gen文件,加入"zh_CN UTF-8";
然后运行/usr/sbin/locale-gen,这样就将"zh_CN.utf8"加入了系统支持里。
运行"locale -a"可以看到你的debian当前支持的语言:
C
en_US
en_US.iso88591
en_US.utf8
POSIX
zh_CN
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

编辑"rrdtool-1.4.5/src/rrd_graph.c"文件
查找"LC_TIME"字段,将
setlocale(LC_TIME,"");
setlocale(LC_CTYPE,"");
注释掉。
在后面加入
setlocale(LC_ALL,"zh_CN.utf8");
即可。

cd rrdtool-1.4.5
./configure --prefix=/usr/local/rrdtool --disable-python --disable-tcl
make
make install
cd

安装pnp4nagios
tar xvf pnp4nagios-0.6.19.tar.gz
cd pnp4nagios-0.6.19
./configure --with-rrdtool=/usr/local/rrdtool/bin/rrdtool 
make all
make install
make install-config
make install-init

然后把相关后缀带sample文件变更成无sample后缀]
cd /usr/local/pnp4nagios/etc
cp misccommands.cfg-sample misccommands.cfg
cp nagios.cfg-sample nagios.cfg
cp rra.cfg-sample rra.cfg
cd pages
cp web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands
cp check_all_local_disks.cfg-sample check_all_local_disks.cfg
cp check_nrpe.cfg-sample check_nrpe.cfg
cp check_nwstat.cfg-sample check_nwstat.cfg
配置Nagios来启用PNP
cd /usr/local/nagios/etc
vi nagios.cfg   打开这个文件,修改如下地方
enable_environment_macros=1    默认是开启了的 
 host_perfdata_command=process-host-perfdata  默认被注释了
service_perfdata_command=process-service-perfdata  默认开启
这里先把pnp4nagios执行数据收集的文件拷贝到nagios的libexec下,方便统一命令的执行路径.]
cp /usr/local/pnp4nagios/libexec/process_perfdata.pl /usr/local/nagios/libexec/
然后在commands.cfg里面添加如下(这里是同步模式设定方法)
cd /usr/local/nagios/etc/objects
vi commands.cfg
注意在这个文件里面可能已经存在这两个命令的配置了,就把原来的两个配置注释掉,然后添加下面两个命令配置
#process-host-perfdata' command definition 
define command{ 
        command_name    process-host-perfdata 
        command_line    $USER1$/process_perfdata.pl -d HOSTPERFDATA 
        }
#process-service-perfdata' command definition 
define command{ 
        command_name    process-service-perfdata 
        command_line    $USER1$/process_perfdata.pl 
        } 
在templates.cfg里面加入如下
vi templates.cfg
define host { 
   name       host-pnp 
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ 
   register   0 
}
define service { 
   name       svr-pnp 
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ 
   register   0 


然后在localhost.cfg和nagios-client.cfg两个文件中,主机后面添加host-pnp模版,服务后面添加svr-pnp模版,如下图
这个是在主机后面添加主机的pnp模版
Nginx+Nagios+pnp+QQ10
这个是在服务的后面添加服务的pnp模版,用逗号隔开
Nginx+Nagios+pnp+QQ11
检测配置文件是否有误
check
启动NPCD并让他以daemon的方式启动
/usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg
echo '/usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg' >> /etc/rc.local

配置nginx
vim /usr/local/nginx/conf/nginx.conf
在前面你添加进去那个server下添加内容如下
location /pnp4nagios {
        alias /usr/local/pnp4nagios/share;
        index index.php;
        try_files $uri $uri/ @pnp4nagios;
        }
location @pnp4nagios {
        fastcgi_pass   unix:/tmp/php-cgi.sock;
        fastcgi_index       index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include        fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/local/pnp4nagios/share/index.php;
        }

此时
检测下nginx配置文件是否有误
/usr/local/nginx/sbin/nginx -t
service nagios restart
/usr/local/nginx/sbin/nginx -s reload  
重启两个服务后,会在/usr/local/pnp4nagios/var/perldata/下面产生两个被监控的主机的pnp文件目录

如果有在php.ini中有配置过关闭不用的函数的配置,那么要修改下php.ini文件,去掉函数proc_open函数的关闭状态
vim /usr/local/php5/etc/php.ini
找到disable_functions = 后面找到proc_open项,删除之
service php-fpm restart   重启fpm
访问页面测试:点击在nagios的对应主机或服务旁的小太阳,出现如下图

按照提示把/usr/local/pnp4nagios/share目录下的install.php重命名
mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php.bak
刷新页面


利用QQ手机号邮箱帐号实现手机短信报警
设置方法:
登录到QQ邮箱界面,点击“设置”--“账户”,这个跳转页面中点击“手机号邮箱帐号”旁边的注册按钮,接下来按照提示操作就可以了,不多说,绑定你的手机号即可,不管是移动的还是联通的都可以。但是你要注意,配置的时候配置为仅仅这个手机号邮箱收到邮件时才发短信通知哦,不然你就惨了

申请号后,你的手机号邮箱帐号是以你的手机号开头的邮箱帐号,如:18666@qq.com
把这个地址填入到nagios的联系人中即可,修改如下图
vim /usr/local/nagios/etc/objects/contacts.cfg

配置mutt+msmtp作为邮件报警,不用sendmail发邮件,因为有时候sendmail发邮件会失败,且sendmail直接用本地帐号发邮件,有时候会被公网的邮件服务器当作垃圾邮件而发不出去邮件,具体过程如下

软件的安装
mutt大多数linux系统已经自带,命令路径为:/usr/bin/mutt
msmtp要自己安装,这里我把安装包放在root目录下
ar xvf msmtp-1.4.29.tar.bz2
cd msmtp-1.4.29
./configure --prefix=/usr/local/msmtp && make && make install
yum install ncurses-devel -y

配置
mkdir -p /usr/local/msmtp/etc 
vi /root/.msmtprc    //注意文件名前面有个“点" 

host smtp.163.com    //smtp地址 
tls off 
auth plain 
from xiaoboluo768@163.com    //从哪个邮件发出来 
user xiaoboluo768    //用户名 
password a#^*225*mgYjm21    //邮箱密码 

vi /root/.muttrc 

set sendmail="/usr/local/msmtp/bin/msmtp"    //msmtp的安装位置。根据自己的情况改 
set use_from=yes 
set from=xiaoboluo768@163.com    //用户名 
set envelope_from=yes 

vi /usr/local/msmtp/etc/msmtprc 

defaults 
account xiaoboluo768    //用户名 
host smtp.163.com    // smtp -IP 
from xiaoboluo768@163.com    //用户名 
auth login 
port 25 
tls off 
user xiaoboluo768@163.com    //用户名 
password a#^*225*mgYjm21    //密码 
account default:xiaoboluo768 
logfile /usr/local/msmtp/log/msmtp.log    //用户名 

以上3个文件就这样保存,请确保用户名、密码、stmp的正确性。再来: 
mkdir -p /usr/local/msmtp/log 
echo 'set sendmail="/usr/local/msmtp/bin/msmtp"' >>/etc/Muttrc 
echo "set use_from=yes" >>/etc/Muttrc 
echo 'set realname="xiaoboluo768@163.com"' >>/etc/Muttrc    //这里改成自己的邮箱 
echo 'set editor="vim"' >>/etc/Muttrc 

手动测试:命令如下
cd
echo 你好啊 >>aa
/usr/bin/mutt -s "你好" 18666@qq.com </root/aa
上举命令解释:-s为添加邮件标题,地址就不用说了,<符号后面的是邮件正文从aa文件中读取,其他选项:-a :添加附件,-c:添加抄送地址

如果不出意外,你的QQ邮件上面以及你的手机上面过几秒就有提醒,QQ邮箱上面的收件信息如下图,你可以看到邮件标题,发件人地址,收件人地址和邮件正文都是刚刚设置的

回去服务器上面,再来一下,看看再次接收有没有问题
echo 晚上来吃饭 >>aa
/usr/bin/mutt -s "你好,晚上来吃饭" 18666@qq.com </root/aa
手机和QQ邮箱过几秒再次收到邮件,再到QQ邮箱上面去查看,如下图

把这个配置到nagios上面去,本实验中修改命令配置文件即可
vim /usr/local/nagios/etc/objects/commands.cfg
直接把原来的邮件报警的两条命令中的/bin/mail修改为/usr/bin/mutt即可,如下图
Nginx+Nagios+pnp+QQ12
加快nagios的报警时间设置:
1.修改模版文件:
vim /usr/local/nagios/etc/objects/templates.cfg
修改所有normal_check_interval项的值为1,既发现故障后1分钟就报警
修改所有check_interval项的值为1,即正常情况下每分钟检查一次

修改所有notification_interval  的值为20分钟         #在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间

service nagios restart    重启nagios

在被监控机上面随便停掉一个服务,等待几分钟看看,是否会发送邮件到手机上面
如果成功收到,恭喜你,nagios的配置到此为止。
nagios的自动报警邮件内容如下:你可以看到邮件是nagios@aa.com发出的,又xiaoboluo768@163.com代发的,内容是服务器192.168.21.158这台服务器上面的mysql服务出现问题

服务恢复正常后,也是有短信和邮件信息收到的,QQ邮件恢复内容如下图
Nginx+Nagios+pnp+QQ13
不过,这个不足的是,短信太长的话,会被分割为多条发送。每月只能发10条短信

添加139邮箱,作为短信报警,免费,且无限量发,并且支持联通、移动、电信手机
浏览器打开:http://mw.mail.10086.cn/html/webmail/reg/  注册页面,如下图,输入手机号码,选择正确的验证码,点击下方的“免费获取短信验证码”按钮

在跳转的页面中,按照下图标识处操作

提示注册成功,点击刷新状态按钮

过一会儿,刷新按钮变为如下图标识的按钮,点击进行登录

在跳转的页面中对邮箱进行一些基本配置

进入邮箱后,设置邮件转发,如下图

在跳转的页面中按下图标识操作

关闭转发设置窗口,再次点击“设置”,在跳转的页面中设置邮件到达短信通知,如下图

在跳转的页面中做如下图所示的修改,完成后点击下面的“确定”按钮

返回到nagios服务器上面,修改联系人的配置文件,添加139邮箱地址作为联系人
vim /usr/local/nagios/etc/objects/contacts.cfg
添加一个新联系人,把新联系人添加到联系人组的配置中,如下图,上面大标记为整个新添加的内容,把前一个联系人的配置复制下来,修改一下即可,后面的标记为在联系人组中添加新的联系人

修改完成后重启nagios
service nagios restart
到被监控及上面停掉一个服务,过几分钟看看是否会发送短信和邮件,如果配置正确,短信和邮件都能收到,下图是邮件截图

重启被监控机被关闭的服务,过几分钟后,有会有恢复正常的邮件和短信发到,下图是正常后的邮件截图


附:nagios的声音报警,本实验中不是必须的,注意,3.2.3的版本可能做不出来,推荐用3.2.1的版本,这个版本有人做出来的,我没有做,下面是配置过程
一、开启报警
#vi /usr/local/nagios/etc/cgi.cfg 将如下内容前面的注释去掉
#host_unreachable_sound=hostdown.wav
#host_down_sound=hostdown.wav
#service_critical_sound=critical.wav
#service_warning_sound=warning.wav
#service_unknown_sound=warning.wav
#normal_sound=noproblem.wav
我自己搞的时候只上传了连两个声音,所以,开启的声音如下图
Nginx+Nagios+pnp+QQ
二、上传报警声音文件
    之所以上传音频文件到nagios服务器是因为新版的nagios并没有这些报警所需的音频文件,因此我们需要自己设置,我们可以从网上下载一些自己喜欢的wav格式的音乐作为报警,然后将其重命名后放置到/usr/local/nagios/share/media目录下
chown nagios.nagios *
chmod 777 *
ll
Nginx+Nagios+pnp+QQ

三、测试
    我们停掉一台被监控的服务器,然后访问http://localhost/nagios,配置完声音报警后首次打开网页时浏览器会提示让安装一个插件,安装完之后这个时候我们就应该能听到声音报警了
Nginx+Nagios+pnp+QQ




 

转载请注明linux系统运维
http://www.linuxyw.com/linux/bushu/20130601/531.html

------分隔线----------------------------
  • 上一篇:没有了
  • 下一篇:没有了
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容