nagios监控

nagios监控

了解nagios

Nagios对系统的监控是使用nrpe客户端来调用/usr/local/nagios/libexec目录下的脚本,然后将获取的数据返回给nagiox,那些脚本会返回不同的状态值。Nagios会根据这些状态值来判断服务状态是否状态以及是否需要告警。
0 :表示没有异常
1;WARNING表示会触发WANRING报警
2:表示紧急状态
3,:表示未知。
Nagios监控的服务;http,pop3,smtp,ping mysql
监控的主机资源:磁盘空间利用率,内存利用率,CPU负载等。

工作原理

Nagios通常由一个主程序(nagios).一个插件程序(nagios-plugins)和四个可选的ADDON(nrpe,nsca,nsclient++和ndoutils)组成。Nagios的监控工作都是通过插件实现的。因此,nagios和nagios-plugins是服务器端所必须的组件。而这四个ADDON中,nrpe用来监控在远端远程Linux主机上执行的脚本插件以实现对这些主机资源的监控;nsca用来让被监控的远程linux主机主动将监控信号消息发送给nagios服务器;nsclient++则用来监控windows主机。

监控流程

(1),nagios运行check_nrpe插件。我们要在nagios配合文件中告诉他要检测什么;
(2)check_nrpe插件会通过ssl连接到远程到远程的nrpe daemon
(3)Nrpe daemon会运行相应的nagios插件来检查本地资源或服务
Nrpe daemon会将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理
注意: nrpe daemon 需要nagios插件安装在远程被监控的linux 主机上,否则,daemon不能做任何的监控。别外他们之间的通信是加密的ssl,所以在编辑安装的时候要加上选项./configure --enable-ssl --with -ssl-lib=/lib/否则也会出错。

服务端的配置

编译所需的软件包

yum install httpd gcc  gd-devel perl-ExtUtils-Embed.x86_64 -y
yum install mysql-devel openssl-devel -y

nagios软件的安装

tar jxf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.3
./configure –enable-embedded-perl
make all
make install    ####make install用来安装nagios的主程序
Make install-init    ###通过make install-init命令可以在/etc/rc.d/inidt.d 目录下创建nagios启动脚本
Make install-commandmode   ##通过该命令来配置目录权限
Make install-confign   ##make install-config用来安装nagios示例配置文件的路径是/usr/lcoal/nagios/etc
make install-webconf

Nagios安装完成以后,目录对应的功能说明如下
bin;可执行的程序所在目录
etc: 配置文件所在目录
libexec :外部插件所在目录
share:网页文件所在目录

插件的配置

tar zxf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap –
enable-perl-modules
Make all
make install    ####make install用来安装nagios的主程序

nagios用户的建立

useradd -M -d /usr/local/nagios nagios
usermod -G nagios apeche

配置好以上步骤好,可以登陆页面172.25.15.34/nagios查看发现会让你输入用户名和密码
输入密码和用户就可以看到nagios的管理页面,此时看到的界面没有任何的监控个信息。(/etc/init.d/nagios start)

配置本机监控

[root@server2 objects]# pwd
/usr/local/nagios/etc/objects
cp localhost.cfg  hosts.cfg -p
cp localhost.cfg services.cfg -p   

对hosts.cfg 编辑。只留下host 把services部分删掉

 define host{
        use                     linux-server
        host_name               Manager
        alias                   Manager
        #parents                        MainSwitch
        address                 172.25.15.34
        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    #主机组并不是必须的,这是配合 nagios 的监控页面的显示
        alias           Linux Servers ; Long name of the group
        members         *     ; Comma separated list of hosts that belong to this group
        }

对services.cfg编辑,把host部分删掉

define servicegroup{
        servicegroup_name 系统负荷检查
        alias 负荷检查
        members Manager,进程总数,Manager,登录用户数,Manager,根分区,Manager,交换>空间利用率
        }
使用命令
/usr/local/nagios/bin/nagios  -v /usr/local/nagios/etc/nagios.cfg 检查配置是否有误

配置远程数据库的监控

给远程主机安装数据库
yum install mysql-server -y
mysql 主机上运行有 mysql 服务,在其上创建监控检测帐户

mysql> create database nagdb;
mysql> grant select on nagdb.* to nagdb@'172.25.15.2';
mysql> flush privileges;

在 nagios 主机上检测是否可以连接 mysql 主机上的 mysql 服务
/usr/local/nagios/libexec/check_mysql -H 172.25.15.2 -u nagdb -d nagdb
在 nagios 主机上添加对 mysql 服务监控的定义

Vim /usr/lcoal/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg  ###把这行注释调
Vim hosts.cfg
define host{
        use                     linux-server
        host_name               huihui4.example.com
        alias                   mysql
        parents                 Manager
        address                 172.25.15.2
        icon_image              server.gif
        statusmap_image         server.gd2
        2d_coords               400,200
        3d_coords               400,200,100
        }
Vim services.cfg
define service{
        use                             local-service         ; Name of service template to use
        host_name                       huihui4.example.com
        service_description             MYSQL
        check_command                   check_mysql!nagios!redhat!nagdb
        notifications_enabled           0
            }


                  
Vim commands.cfg
define command{
        command_name    check_mysql
        command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d  $ARG3$

检测无误后重起服务,测试

/etc/init.d/nagios restart
/usr/loca/nagios/libexec/check_mysql  -H 172.25.15.2 -u nagios -p redhat -d nagdb

配置其他客户机被监控

服务端
配置文件nagios.cfg中添加一下目录

cfg_file=/usr/local/nagios/etc/objects/hosts.cfg   ###上述步骤中我们已经做过了
cfg_file=/usr/local/nagios/etc/objects/services.cfg

配置nrpe
下载nrpe软件包并解压
./configure 编辑
Make all 安装
Make install-plugin
可以先检测一下在整合

usr/local/nagios/libexec/check_nrpe -H 172.25.15.2
usr/local/nagios/libexec/check_nrpe -H 172.25.15.2 -c check_users

编辑文件

Vim commands.cfg
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

Vim services.cfg
define service{
        use                             local-service        ; Name of service template to use
        host_name                       huihui4.example.com
        service_description             根分区
        check_command                   check_nrpe!check_disk
        }

define service{
        use                             local-service         ; Name of service template to use
        host_name                       huihui4.example.com
        service_description             登录用户数
        check_command                   check_nrpe!check_users
   
        }

注意:check_nrpe!check_users --check_nrpe传送的参数check_users到远程主机上执行的命令,此命令在远程主机配置文件中/usr/local/nagios/etc/nrpe.cfg中有定义
如果你定义了check_swap注意查看被监控机配置文件中nrpe.cfg是否有定义
重起服务/etc/init.d/nagios restart

被监控端

安装相应的软件包

 yum install gcc -y
 yum install openssl-devel -y   ###用于配合ssl加密
 yum install xinetd.x86_64 -y

安装nrpe服务使之能够通信

useradd nagios  ###建立nagios用户否则编辑的时候会有错误
 tar zxf nrpe-2.15.tar.gz 
cd nagios-plugins-2.0.3
./configure 
make install-plugin
make install-daemon
make install-daemon-config

配置nrpe信息

[root@huihui4 xinetd.d]# pwd
/etc/xinetd.d
[root@huihui4 xinetd.d]# vim nrpe 
only_from       = 172.25.15.34  ###只允许172.25.15.34连接
vim /etc/services 
nrpe            5666/tcp   ####添加端口
;
[root@huihui4 etc]# pwd
/usr/local/nagios/etc
[root@huihui4 etc]# vim nrpe.cfg 
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d ###检测nrpe文件是否正确
/etc/init.d/xinetd start
netstat -an | grep 5666 是否监听5666用于nrpe通信的端口

报错以后]
可以以邮件或微信进行报警

[root@server2 objects]# pwd
/usr/local/nagios/etc/objects
[root@server2 objects]# vim contacts.cfg 
 email                           1799720288@qq.com  ###报警以后传送给谁。

记得在邮箱把nagios@server2.example.com添加到白名单
切换到nagios用户给1799220288用户发邮件测试一下
[root@server2 objects]# su - nagios
-bash-4.1$ mail 1799220288@qq.com
Subject: ll
ll
.
EOT
监控时间和次数可以在下面文件中设置

root@server2 objects]# pwd
/usr/local/nagios/etc/objects
[root@server2 objects]# vim templates.cfg 

把数据库关闭进行测试看是否会报警

nagios微信报警系统的设置

下载微信公众平台的私有接口

yum install -y git
git clone https://github.com/lealife/WeiXin-Private-API

修改微信公众平台私有接口代码,以配合 nagios 报

cp -r WeiXin-Private-API /usr/local/nagios/libexec/weixin
chown -R nagios.nagios  /usr/local/nagios/libexec/weixin
cd /usr/local/nagios/libexec/weixin

修改 config.php 文件:

$G_CONFIG["weiXin"] = array(
'account' => '微信公众平台登录帐号',

填写你注册的微信订阅号的帐号和密码
'password' => '微信公众平台登录密码',

修改 test.php 文件,只保留如下几行即可:

<?php
require "config.php";
require "include/WeiXin.php";
$weiXin = new WeiXin($G_CONFIG['weiXin']);
$testFakeId = "$argv[1]"; #微信好友 ID 号,这里通过 nagios 传入
$msg = `cat /tmp/nagiosmsg; #要发送的报警信息,由 nagios 传入
print_r($weiXin->send($testFakeId, "$msg")); #给微信好友发送信息

可以先测试一下

整合nagios和微信公共平台私有接口
增加微信报警选项: 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-weixin
host_notification_commands notify-host-by-email,host-notify-by-weixin

增加调用命令: commands.cfg
修改 /usr/local/nagios/etc/objects/commands.cfg
在该文件的最后增加以下部分:

define command{
        command_name    notify-host-by-weixin
        command_line /usr/bin/printf  "***** Nagios *****

Notification Type: $NOTIFICATIONTYPE$
Host: $HOSTNAME$
State: $HOSTSTATE$
Address:$HOSTADDRESS$
Info: $HOSTOUTPUT$

Date/Time: $LONGDATETIME$
" > /tmp/nagiosmsg && /usr/bin/php /usr/local/nagios/weixin/test.php $CONTACTPAGER$ &> /dev/null
}

define command{
 command_name notify-service-by-weixin
  command_line /usr/bin/printf  "***** Nagios *****

Notification Type:$NOTIFICATIONTYPE$

Service: $SERVICEDESC$
Host: $HOSTALIAS$
Address:$HOSTADDRESS$
State: $SERVICESTATE$

Date/Time: $LONGDATETIME$

Additional Info:

$SERVICEOUTPUT$
" > /tmp/nagiosmsg && /usr/bin/php /usr/local/nagios/weixin/test.php $CONTACTPAGER$ &> /dev/null
}

修改联系人选项: contact.cfg
修改 /usr/local/nagios/etc/objects/contact.cfg
在 define contact{...} 部分增加如下一行
pager 2680049531 ###好友ID
4)重载nagios配置
/etc/init.d/nagios restart

原文地址:https://www.cnblogs.com/hanfei-1005/p/5694918.html