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