nagios监控脚本
⑴ 监控常用的应用软件有什么
常用的有:
1.cactio
实际上cacti不是监控工具,而是个依赖于SNMP的数据采集和数据呈现的工具。但是很多人喜欢用来当监控(因为其功能可以很好的完成这个工作)
功能:数据采集、 保存数据[SQL, txt].
数据展示(rrdtool 绘图)。
数据分析和报警(很一般)。
2. nagios。
功能:数据报警(报警功能是Nagios的特色功能) [ 故障触发,故障恢复都可以。
依赖分析报警(能自动的识别到关键设备的故障,关联设备不会报警)。
数据采集(采集的数据是弱项,他只关心警戒位,只关心正常与否的状态,状态转换时可以实现报警,所以它采集的数据不需要保存),当然也有插件弥补这个不足,如PNP4Nagios。
3. zabbix (php)(推荐)
Nagiostcacti整合互相弥补不足!I
nagios和 cacti不适合超大规模的监控、由于大规模的带宽和网络限制,会导致监控的延迟等问题,所以有很多是 nagios+ cacti整合,但是依然不适合在大规模的环境中,不适合分布式部署, Nagios在大规模中就会出现延迟,失
去 Nagios本事的特色。
那么 zabbix同时整合了 cacti和 Nagios特点的工具,而且还具有了前两者不具有的工具,支持分布式等等。
4. 补充工具:
netdata:托管在github上的一款类型zabbix的开源监控工具https:/
/github. com/firehol/netdata
open- falcon:小米公司开源的企业级监控工具(python)(推荐)
Ganglia类似于 zabbix,大型分布式监控系统
开源监控工具对比http://www.oschina.net/news/67525/monitoring-tools
5. 监控软件数据采集的方式
SNMP 协议。
agent 代理的方式去采集数据。
shell 脚本api 接口
6. 数据展示方式
php html app
7. 数据告警
mail,msm,微信,电话,钉钉机器人
⑵ zabbix怎样通过snmp监控网络设备端口
基本知识准备:
1、SNMP(简单网络管理协议)
2、一些脚本知识,可以编写任意一种脚本。
3、知道Nagios怎么用。
好啦,现在开始:
1、编写一个可以输出本机Nginx并发连接数的脚本,输出结果为连接数。我这里脚本比较简单,只是看看已经链接80端口的。当然也可以自己编写更精确的脚本。
[root@webserver2 scripts]# cat showhttp.sh
#!/bin/bash
echo `netstat -nat | grep -i "80" | wc -l`
2、配置snmp,如何安装我就不说的,自己去弄呗。
yum install net-snmp* 我是这么安装的。
看下我的snmp配置文件:
[root@webserver2 ~]# grep -v '^#' /etc/snmp/snmpd.conf | grep -v '^$'
com2sec notConfigUser default public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1.3.6.1.4.1.2021
access notConfigGroup "" any noauth exact systemview none none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
exec .1.3.6.1.4.1.2021.51 showhttp /bin/bash /root/scripts/showhttp.sh
然后重载下snmp的配置文件。
/etc/init.d/snmpd reload
使用snmpwalk测试下,能不能通过snmp来获取数据。
[root@webserver2 ~]# snmpwalk -v 1 -c public 192.168.137.102 .1.3.6.1.4.1.2021.51
UCD-SNMP-MIB::ucdavis.51.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.2.1 = STRING: "showhttp"
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: "/bin/bash /root/scripts/showhttp.sh"
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "7"
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.103.1 = ""
[root@webserver2 ~]# snmpwalk -v 1 -c public 192.168.137.102 showhttp
showhttp: Unknown Object Identifier (Sub-id not found: (top) -> showhttp)
[root@webserver2 ~]# snmpwalk -v 1 -c public 192.168.137.102 .1.3.6.1.4.1.2021.51.101.1
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "5"
至此位置,snmp就配置好了。至于原理,google、一大堆。限于自己的表述能力和打字速度就不在此复述了。
下面我登录nagios的监控机,来监控这台机器的http连接数量。
2、首先安装nagios,这里跳过。
3、先写个如下脚本,获取被监控的设备的snmp值。
[root@webserver2 libexec]# cat show_http
#!/bin/bash
OID='.1.3.6.1.4.1.2021.51.101.1'
IPADDRESS=$2
COMMUNITY=$1
if [[ -z $IPADDRESS ]] || [[ -z $COMMUNITY ]]; then
echo "Mabe ... ...Usage: show_http <COMMUNITY> <IPADDRESS>"
exit 4
fi
counts=`snmpwalk -v 1 -c $COMMUNITY $IPADDRESS $OID 2>/dev/null | awk -F'"' '{print $2}'`
if [ -z $counts ]; then
echo "Mabe snmpd is down OR ipaddress error OR community fault."
exit 4
fi
if [ $counts -ge 200 ]; then
echo "Cirtical - connection - $counts"
exit 2
elif [ $counts -ge 100 ]; then
echo "Warning - connection - $counts"
exit 1
else
echo "OK - connection - $counts"
exit 0
fi
3、最nagios进行一些配置:
define command{
command_name check-host-alive
command_line $USER1$/show_http nagios $HOSTADDRESS$ #添加一条命令,参数是团体名和主机地址,团体名,我直接用了nagios。为了可扩展性的考虑,大家也可以使用resources文件来定义。这里不再复述。
}