Nagios监控MySQL服务及飞信报警
上面我们进行了相关主机监控的配置,但是我们只能通过查看nagios才能知道我们所监控主机的服务是否在线可用,这和我们在实际应用中的作用还有一定的差距,下面我们就来实现nagios的报警机制,即使我们不查看nagios,只要我们所监控的服务掉线了,nagios就给我们发飞信开提示我们。
我们通过监控本机的mysql服务的在线情况来实现这个实验:
nagios监控mysql服务器:
<!--[if !supportLists]-->1、 <!--[endif]-->建立专用数据库:
我们通过让nagios监控mysql服务中的一个特定的数据库的在线状态来实现对mysql服务在线状态的监控,
创建这个数据库,并对其进行相应的配置
mysql
mysql> create database nagios;
mysql> grant select on nagios.* to nagios@'%' identified by 'nagios';
mysql> flush privileges;
2、查看/var/www/nagios/libexec/check_mysql 这个二进制文件是否存在,如果存在就
继续下面的操作,如果不存在就重新编译安装nagios-plugins,具体方法在上一篇有关nagios的文章中,编译时一定要指明--with-mysql.
对check-mysql这个二进制文件进行测试,看是否能够读取数据库状态信息
/var/www/nagios/libexec/check_mysql -H 10.1.1.30 -u nagios -d nagios -p 123qweasd
Uptime: 970348 Threads: 1 Questions: 684584 Slow queries: 3 Opens: 672 Flush tables: 1 Open tables: 369 Queries per second avg: 0.705
如果输出上面的信息,则表示能够读取nagios这个数据库的状态
3、在定义监控命令的文件/var/www/nagios/etc/objects/command.cfg里增加插件命令:
vim /var/www/nagios/etc/objects/command.cfg
添加如下内容:
#check mysql
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagios -d nagios -p nagios
}
4、定义服务:
在/var/www/nagios/etc/objects/localhost.cfg 中添加如下内容
define service {
use local-service
host_name localhost
service_description msyql
check_command check_mysql 监控这个服务的命令
notifications_enabled 1 对这个服务开启监控
}
OK,我们可以到nagios的“servers”中查看是否监控到了这个服务,显示如下:
既然当服务掉线的时候要使用飞信报警,接下来就对飞信进行配置,来实现飞信报警机制
准备飞信的客户端和库文件:
fetion libACE-5.7.2.so libACE_SSL-5.7.2.so libcrypto.so.4 libssl.so.4
1、将飞信的客户端加入到/usr/bin/中,并添加执行权限
mv fetion /usr/bin
chmod +x /usr/bin/fetion
2、将飞信的库文件加入到系统的库文件中
mv lib* /usr/lib/
3、测试飞信能否成功发送信息:
fetion --mobile 15003880800 --pwd 123qweQWE(飞信密码) --to 15003880800(电话号码) --msg-tpye=0 --msg-utf8 $HOSTNAME
如果出现一大片的乱码信息,表示飞信连接成功,这一大片的乱码是飞信的验证码图片,这个验证码图片在图形界面下才能显示出来,只有第一次使用的时候才会用到验证码,这个图片的位置在/usr/bin下,我们输入相应的验证码即可。
测试成功之后,就继续进行
4、修改nagios的报警配置文件/var/www/nagios/etc/objects/ templates.cfg,修改报警机制,将email改成fetion
vim /var/www/nagios/etc/objects/templates.cfg 修改结果如下
define contact{
name generic-contact ; The name of this
contact template
service_notification_period 24x7 ; service notifications can be sent anytime
host_notification_period 24x7 ; host notifications can be sent anytime
service_notification_options w,u,c,r,f,s ; send notifications for all service states, flapping events, and scheduled downtime events
host_notification_options d,u,r,f,s ; send notifications for all host states, flapping events, and scheduled downtime events
service_notification_commands notify-service-by-fetion; send service notifications via email
host_notification_commands notify-service-by-fetion; send host notifications via email
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}
5、修改命令文件/var/www/nagios/etc/objects/commands.cfg
vim /var/www/nagios/etc/objects/commands.cfg 添加如下内容
define command{
command_name notify-service-by-fetion
command_line /usr/bin/fetion --mobile 15003880800 --pwd 123qweQWE --to 15003880800 --msg-tpye=0 --msg-utf8 $HOSTNAME
}
6、重启nagios服务
service nagios restart
到此为止我们我们对mysql服务的飞信报警,已经配置完成了,现在我们可以关闭mysql服务,看你是否收到了我们的nagios发送的飞信。
Nagios是一个强大的状态变化监控报警软件,其功能远远大于此,需要各位自己去探索他其他的功能了。