自定义nagios插件实现主动被动模式以及nagios基于mail的简单告警

nagios插件程序提供两个返回值:一个是插件的退出状态码,另一个是插件在控制台上打印的第一行数据。退出状态码可以被nagios主程序

作为判断被监控系统服务状态的依据,控制台打印的第一行数据可以被nagios主程序作为被监控系统服务状态的补充说明

会显示在管理页面里面。

为了管理nagios插件,nagios每查询一个服务的状态时,就会产生一个子进程,并且它使用来自该命令的输出和退出状态码来

确定具体的状态。nagios主程序可识别的状态码和说明如下:

OK            退出代码 0--表示服务正常的工作

warning       退出代码 1--表示服务处于告警状态

critical      退出代码 2--表示服务处于紧急,严重状态

unknown       退出代码 3--表示服务处于未知状态

[[email protected] services]# head -7 /usr/local/nagios/libexec/utils.sh

#! /bin/sh

STATE_OK=0

STATE_WARNING=1

STATE_CRITICAL=2

STATE_UNKNOWN=3

STATE_DEPENDENT=4

示例一:判断/etc/passwd文件是否变化,利用nrpe的被动模式

原理:利用md5sum进行指纹收集 md5sum /etc/passwd > /etc/passwd.md5

利用md5sum -c /etc/passwd.md5对指纹进行判别,出现OK则没有变化,反之则变化了

监控密码文件是否被更改:

先做指纹库

md5sum /etc/passwd > /etc/passwd.md5

在client上创建脚本vim /usr/local/nagios/libexec/check_passwd

#!/bin/bash

char=`md5sum -c /etc/passwd.md5 2>&1 |grep "OK"|wc -l`

if [ $char -eq 1 ];then

echo "passwd is OK"

exit 0

else

echo "passwd is changed"

exit 2

fi

######给脚本执行权限

chmod +x /usr/local/nagios/libexec/check_passwd

#####定义check_passwd命令

vim /usr/local/nagios/etc/nrpe.cfg

command[check_passwd]=/usr/local/nagios/libexec/check_passwd

#####重启nrpe服务

######在nagios主程序先手动抓取数据

[[email protected] libexec]# ./check_nrpe -H 192.168.1.11 -c check_passwd

passwd is OK

######在nagios主程序上定义service配置

vim /usr/local/nagios/etc/objects/services.cfg(主动模式和被动模式各自的services.cfg配置文件,各自分别管理)

define service{

use                     generic-service

host_name               client02

service_description     check_passwd

check_command           check_nrpe!check_passwd

}

然后在nagios服务端进行手动抓取数据:

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.11 -c check_passwd

出现数据,表明基本已经没有问题,重启服务,观察web平台页面,如下图:

自定义监控web url,用主动模式监控

[[email protected] ~]# curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"

HTTP/1.1 200 OK

[[email protected] ~]# curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"|wc -l

1

1、编写执行脚本

cd /usr/local/nagios/libexec

vim check_web_url

#!/bin/bash

char=`curl -I http://192.168.1.11/index.html 2>/dev/null|grep "OK"|wc -l`

if [ $char -eq 1 ];then

echo "the url is OK"

exit 0

else

echo "the url is wrong"

exit 2

fi

chmod +x check_web_url

2、添加check_web_url这个命令到commands.cfg配置文件中

############define command check_web_url##########

define command{

command_name     check_web_url

command_line     $USER1$/check_web_url

}

3、编辑servers.cfg文件

cd /usr/local/nagios/etc/services

vim web_url.cfg

define service{

use     generic-service

host_name       client02      监控的主机192.168.1.11在hosts.cfg有定义

service_description     web_url

check_period 24x7

check_interval 5

retry_interval 1

max_check_attempts 3

check_command      check_web_url    因为是主动模式

notification_period 24x7

notification_interval 30

notification_options  w,u,c,r

contact_groups admins

}

4、检测错误,重启服务

[[email protected] services]# /etc/init.d/nagios checkconfig

Running configuration check...

OK.

[[email protected] services]# /etc/init.d/nagios reload

Running configuration check...

Reloading nagios configuration...

done

成功截图:

看下整体监控效果:

实现邮件报警功能:

配置告警的步骤:

1、添加联系人和联系组contacts.cfg

define contact{

contact_name                    huang

use                             generic-contact      ---》这里使用的模板就是模板文件中的contact定义

alias                           Nagios Admin

email                           [email protected]

}

将定义的contact_name添加到一个新组中

新增联系组:

define contactgroup{

contactgroup_name       mail_users            这里可以定义邮件组,手机短信组,等等

alias                   Nagios Administrators

members                 huang

}

2、添加报警的命令commands.cfg,这里使用默认的命令,当然你也可以自己编写shell脚本或者其他语言脚本

3、调整联系人的默认模板

define contact{

name                            generic-contact

service_notification_period     24x7

host_notification_period        24x7

service_notification_options    w,u,c,r,f,s

host_notification_options       d,u,r,f,s

service_notification_commands   notify-service-by-email

host_notification_commands      notify-host-by-email    如果定义了手机,这里可以加上notify-host-by-email,notify-host-by-pager,这里使用邮件告警,所以无需设置

register                        0

}

4、在hosts、services配置文件中添加报警联系人及报警组

然后修改模板中service、host的定义,将

contact_groups                  admins改为

contact_groups                  mail_users

当然也可以不在模板中定义,在hosts、services配置文件中各自定义不同的报警方式和报警组

实验:

将网站目录下面的index.html文件mv到tmp目录下,使他warning并触发告警

mv /var/www/html/index.html /tmp

可以看见web平台出现warning状态,查看nagios日志如图:

然后查看邮件,发现没有收到告警邮件,看日志发现是找不到mail命令,于是

yum -y install mailx

由于定义的services告警参数:

service_notification_options    w,u,c,r,f,s,表示监控恢复正常也会触发邮件于是将index.html重新放到网站目录下

mv /tmp/index.html /var/www/html

稍微过几分钟可以发现监控正常,查看nagios日志

再次查看邮件,如下:

简单基于mail告警功能实现

新建菜鸟学习交流群:584498750

时间: 2024-08-06 13:47:04

自定义nagios插件实现主动被动模式以及nagios基于mail的简单告警的相关文章

NAGIOS插件pnp4nagios安装

NAGIOS插件pnp4nagios安装注:nagios版本nagios4.0.8 1.下载安装 pnp4nagios-0.6.25.tar.gz wget http://sourceforge.net/projects/pnp4nagios/files/PNP-0.6/pnp4nagios-0.6.25.tar.gz yum -y install rrdtool perl-Time-HiRes perl-File-Tail rrdtool rrdtool-perl php-gd tar zxv

关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题

关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列, Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. N

关于nagios系统下使用shell脚本自定义监控插件的编写

在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列. 所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态.安装完成后,在nagios主目录

Nagios插件化之ganglia插件

架构: nagios跟ganglia一样可以都是监控软件,但是两个也有不同之处,Ganglia的优势在于实时对监控集群中的机器的各项指标,比如CPU.内存.磁盘.温度等数据,汇总成各种图形化界面,并提供可调用数据.而在出现问题的时候报警提示功能,相对较弱. Nagios的优势在于出现问题之时可以提供强大的报警提示功能,但是在时间监控上,功能比较弱,即使使用NRPE插件也不足以提供强大的机器监控,所以此处将两者结合起来.实现监控.报警功能. 环境介绍: 1.服务器中已经安装好了Ganglia,安装

nagios 插件ndoutils 安装配置

nagios 插件ndoutils 安装配置 原文地址:http://www.cnblogs.com/caoguo/p/5022645.html # Nagios install ndoutils # 安装ndoutils插件 [[email protected] ~]# yum install -y mysql-devel perl-DBD-MySQL [[email protected] ~]# wget http://nchc.dl.sourceforge.net/project/nagi

Ubuntu安装NRPE(Nagios插件)报:Cannot find ssl headers解决方法!

Linux系统:Ubuntu 12.04 Nagios Linux客户端需要安装NRPE进行数据收集,如果在Ubuntu系统下安装过程中遇到下面的错误提示:checking for SSL libraries... configure: error: Cannot find ssl libraries 那么可能是缺少sudo apt-get install opensslsudo apt-get install libssl-dev 如果nrpe-2.15# ./configure   还是一样

nagios插件检查超时

线上获取交换机数据自己写的插件,由于交换端口几百个,通过snmp获取的时候相当慢,超过60秒,这几天交换机负载稍高,可能需要更长时间,然后发现nagios这几天交换机的数据断续相当厉害,nagios的log中显示此台交换机获取数据的插件各种超时,于是看nagios.cfg的配置文件,发现了service_check_timeout=60,整个人都不好了.... 切记,切记,自己编写的nagios插件执行时间过长的时候一定要改这个参数,血淋淋的教训 service_check_timeout=30

nagios插件性能数据格式

nagios的插件分为两个部分: GPING OK – rtt min/avg/max/mdev = 0.897/0.897/0.897/0.000 ms|time=0.897ms;20;40;; ok=1 cpu_user:OK-0% cpu_system:OK-0% cpu_idle:WARNING-99>70%  | cpu_user=0%;120;90; cpu_system=0%;100;70;  cpu_idle=99%;100;70; 其中性能数据为|后面的斜体部分,格式如下: '

nagios插件ndoutile

cmake安装./bootstrap ; make ; make install mysql安装cmake \   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   -DDEFAULT_CHARSET=utf8 \   -DDEFAULT_COLLATION=utf8_general_ci \   -DWITH_INNOBASE_STORAGE_ENGINE=