络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与 *** 作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。
zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。[1]
2特点
zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
等等
Zabbix主要功能:
- CPU负荷
- 内存使用
-磁盘使用
- 网络状况
- 端口监视
- 日志监视。
基本知识准备: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
viewsystemviewincluded .1.3.6.1.2.1.1
viewsystemviewincluded .1.3.6.1.2.1.25.1.1
viewsystemviewincluded .1.3.6.1.4.1.2021
access notConfigGroup "" any noauthexact 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、baidu一大堆。限于自己的表述能力和打字速度就不在此复述了。
下面我登录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_namecheck-host-alive
command_line$USER1$/show_http nagios $HOSTADDRESS$ #添加一条命令,参数是团体名和主机地址,团体名,我直接用了nagios。为了可扩展性的考虑,大家也可以使用resources文件来定义。这里不再复述。
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)