最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每

个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到的数据主动推送给zabbix

server,zabbix server将数据存入数据库,并在WEB前端显示。

1.Zabbix主要功能和优劣势说明

1.1 Zabbix主要功能:

1)Application monitoring 应用监控

数据库/SSH/Apache/Nginx等应用程序的监控。

2)Server monitoring 服务器监控

CPU,内存,SWAP,磁盘空间,网卡流量的监控等,可以通过浏览器实时查看Graphs。

3)Network monitoring 网络设备监控

支持Cisco, Juniper, 3Com等网络设备,网络设备通过SNMP(SNMP (v1,v2,v3) devices)协议进行监控。

4)添加自定义监控,对于Zabbix无法满足的监控,可以添加自定义监控。

1.2 Zabbix 主要优势:

1)安装配置简单,支持多种语言,包括中文。

2)系统自带多种监控模板,可以直接使用。

3)支持分布式部署和WEB集中管理(通过WEB页面设置或查看报警结果)。

   4)自动发现主机和网络设备(discovery of file systems,network interfaceshosts and

netwrok devices)。

   5)WEB监控:可以监控WEB下载速度,返回码及响应时间。

6)提供实时和历史的监控分析数据。

   7)EMAIL报警,按照故障级别|服务器类型|业务类型发送EMAIL邮件到相关负责人。

1.3 Zabbix主要劣势:

1)需要在被监控机器上面安装agent。

2)All configuration information都存储在数据库里面,数据库是整个监控平台的瓶颈

2.Zabbix分布式部署需求分析

2.1软件需求

官方推荐的软件配置

   1)MySQL5.0.3 or laterRequired if MySQLis used as Zabbix back end database,InnoDB

engine isrequired.

   2)PHP 5.3.0 or later

   3)Apache 1.3.12 or later

2.2硬件需求

官方推荐的最小硬件配置

Zabbix监控和分布式部署实施方案_Zabbix3.Zabbix分布式部署实施

3.1分布式部署拓扑图

Zabbix监控和分布式部署实施方案_分布式_02


补充说明:

当proxy部署为主动模式(Active)时,Zabbix Server的负载最小。

 1)Server:负责把数据写入到数据库,然后通过Apache|Nginx +php在WEB前端显示。

 2)Proxy:帮助server采集被监控端的数据,并把采集到的数据主动传送给Server,proxy只负责数据收集。

 3)Database:所有的配置信息都存储在数据库里面,Zabbix server数据库和proxy数据库必须独立。

 4)Agent:agent的作用就是获取host数据,然后将收集到的数据发送给server(主动模式),或者是server主动来拿取数据(被动模式)。

 5)Email:通过Qmail|postfix的SMTP负责报警邮件的发送(故障邮件和故障恢复邮件)。

3.2 Zabbix分布式安装部署:

1)Mysql 数据库安装(参照:http://sfzhang88.blog.51cto.com/4995876/900846)

2)LNMP + Zabbix server 安装(参照:http://sfzhang88.blog.51cto.com/4995876/978686)

3)Zabbix proxy 安装(略)

4)Zabbix agent 安装

[root@www20 shell]# cat zabbix_agentd_install.sh
#!/bin/sh
#Create by sfzhang 2014.02.27
yum -y install net-snmp
yum -y install net-snmp-devel
BASE_DIR="/data/software"
TAR="zabbix-2.2.1.tar.gz"
tar -zxvf $BASE_DIR/$TAR -C$BASE_DIR
cd $BASE_DIR/zabbix-2.2.1
./configure--prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix --enable-agent
make && make install
groupadd zabbix
useradd zabbix -g zabbix
cpmisc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
chmod 700/etc/init.d/zabbix_agentd
chown zabbix.zabbix/etc/init.d/zabbix_agentd
sed -i "/BASEDIR=/s#/.*#/usr/local/zabbix#" /etc/init.d/zabbix_agentd
sed -i"s#bin/zabbix_agentd#sbin/zabbix_agentd#" /etc/init.d/zabbix_agentd
sed -i"s#Server=127.0.0.1#Server=192.168.161.129#"/etc/zabbix/zabbix_agentd.conf
sed -i"s#ServerActive=127.0.0.1#\#ServerActive=127.0.0.1#"/etc/zabbix/zabbix_agentd.conf
sed -i "/Hostname=/s#=.*#"=$HOSTNAME#""/etc/zabbix/zabbix_agentd.conf
sed -i"s#\#/tmp/zabbix_agentd.pid#/data/logs/zabbix_agentd.pid#"/etc/zabbix/zabbix_agentd.conf
sed -i"s#/tmp/zabbix_agentd.log#/data/logs/zabbix_agentd.log#"/etc/zabbix/zabbix_agentd.conf
sed -i "s#\#Timeout=3#Timeout=30#" /etc/zabbix/zabbix_agentd.conf
cat>>/etc/services<<EOF
#Zabbix services
zabbix-agent 10050/tcp#Zabbix Agent
zabbix-agent 10050/udp#Zabbix Agent
zabbix-trapper 10051/tcp#Zabbix Trapper
zabbix-trapper 10051/udp#Zabbix Trapper
EOF
/etc/init.d/zabbix_agentdstart

4 Zabbix WEB前端配置

4.1配置proxy代理

Zabbix监控和分布式部署实施方案_分布式_03



4.2添加Groups和hosts

   通常Groups按照频道或者是WEB,MYSQL,memcache等服务类型分组的,提供相同服务的服务器分为一组,便于后期的维护和管理。

4.3自定义监控模板,监控项和触发器。

5 zabbix主要功能展示。

5.1服务器监控

1)CPU负载监控

Zabbix监控和分布式部署实施方案_Zabbix_04

2)内存空间的监控

Zabbix监控和分布式部署实施方案_分布式_05

3) 磁盘空间的监控

Zabbix监控和分布式部署实施方案_监控_06

4)交换分区的监控

Zabbix监控和分布式部署实施方案_Zabbix_07

5) 网卡流量的监控

Zabbix监控和分布式部署实施方案_Zabbix_08    除此之外,还有服务器重启的监控,添加删除用户时的监控,主机存活状态的监控(ICMP ping协议)等。

5.2)应用程序的监控

   Zabbix有很多系统自带的模板,在添加主机的时候Link相关的模板即可。

Zabbix监控和分布式部署实施方案_Zabbix_09

   当停止主机的上面的SSH服务或者Apache服务的时候会产生报警。

Zabbix监控和分布式部署实施方案_Zabbix_10

5.3)WEB Monitoring

   Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度、返回码及响应时间。当返回码不为200的时候也可以产生报警。

Zabbix监控和分布式部署实施方案_分布式_11

5.4)Zabbix Screens

   Screen将多种信息放在一起展示,便于集中展示某个主机的监控信息。

Zabbix监控和分布式部署实施方案_Zabbix_12

5.5)Zabbix maps

   Zabbix的maps用来图形化显示监控设备的拓扑图,并且以不同的标记显示故障事件,通过该图表很直观的显示设备的整体情况。

Zabbix监控和分布式部署实施方案_Zabbix_13

5.6)Zabbix自定义监控

   在实际应用当中,好多监控系统都满足不了实际的需求,需要根据实际的需求添加自定义监控。比如说:监控应用服务器tuxedo排队,当队列大于2000的时候报警。监控apache,mysql链接数,当大于2000的时候报警等等,此时Zabbix需要借助scripts来完成。

实例:监控http和mysql ESTABLISHED和TIME_WAIT连接数,当大于100的时候报警,并在WEB页面实时查看连接数。

1)在要监控的服务器上面编写Shell/python脚本,取出ESTABLISHED和TIME_WAIT连接数。

[root@monitor scripts]# catcheckservices.sh
#!/bin/sh
#Create by sfzhang 2014.02.10
ARGS=1
if [ $# -ne "$ARGS"];then
echo "Please input one arguement";
fi
case $1 in
EST_80)
result=`netstat -anp | grep :80 | grep EST | wc -l`
echo$result
;;
TIME_OUT_80)
result=`netstat-anp | grep :80 | grep TIME_WAIT | wc -l`
echo$result
;;
EST_3306)
result=`netstat -anp | grep :3306 | grep EST | wc -l`
echo $result
;;
TIME_OUT_3306)
result=`netstat -anp | grep:3306 | grep TIME_WAIT | wc -l`
echo $result
;;
EST_11211)
result=`netstat -anp | grep :11211 | grep EST | wc -l`
echo $result
;;
TIME_OUT_11211)
result=`netstat -anp | grep:11211 | grep TIME_WAIT | wc -l`
echo $result
;;
*)
echo"Usage:$0(EST_80|TIME_OUT_80|EST_3306|TIME_OUT_3306|EST_11211|TIME_OUT_11211)"
;;
esac

3)在Zabbix_agentd.conf里面添加UserParameter,格式如下,对于Zabbix来说,脚本其实就是一个插件。

UserParameter=checkservices.sh[*],/etc/zabbix/scripts/checkservices.sh $1

重启agentd服务器,然后在zabbix server用zabbix_get就可以取到值。

Zabbix监控和分布式部署实施方案_分布式_14

4)要监控的服务器有多台的时候,最简单的方法是先编写一个Templates(模板),在Link到要监控的服务器上面。

Zabbix监控和分布式部署实施方案_分布式_15

5)给新添加的模板Linux_service_templates添加Applications。

Zabbix监控和分布式部署实施方案_监控_16

6)给新添加的模板Linux_service_templates添加Items(监控项)。下面是添加http ESTABLISHED监控条目。

Zabbix监控和分布式部署实施方案_Zabbix_17

7)给新添加的模板Linux_service_templates添加Triggers(触发器)。下面是添加 http
ESTABLISHED触发器
,当连接数大于2000的时候报警,故障级别为High。

Zabbix监控和分布式部署实施方案_Zabbix_18

8)要在WEB前端实时查看http的连接情况,必须配置Graph。在一个Graph里面可以添加多个Item数据。

Zabbix监控和分布式部署实施方案_Zabbix_19

9)要查看Graphs在要监控的主机上面Link刚才的模板Linux_service_templates。

Zabbix监控和分布式部署实施方案_分布式_20



10)在WEB前端查看实时连接情况。

Http连接情况:

Zabbix监控和分布式部署实施方案_Zabbix_21

Mysql连接情况:

Zabbix监控和分布式部署实施方案_Zabbix_22

5.7)Zabbix discovery

1.Network discovery

   Zabbix network discovery能自动发现网络中存活的主机,可用通过proxy代理或者Zabbix server 发现网络中存活的主机,并按照Actions里面定义的条件自动添加到Zabbix监控里面。

1)首先:添加Discovery rule,可以通过proxy代理或者zabbix server添加rule。

Zabbix监控和分布式部署实施方案_分布式_23

2)然后create Actions,指定Actions的Conditions,必须具备下列条件才能自动添加,Discover

rule :规则为 Local network,system.uname的值中包含Linux,Zabbix agentd服务必须正常运行。

Zabbix监控和分布式部署实施方案_监控_24

3) 配置Actions的operations,将Actions里面符合条件的主机添加到shwww组里面并Link要监控的模板。

Zabbix监控和分布式部署实施方案_监控_25

4)查看Discover自动发现的主机自动添加到Zabbix里面。

Zabbix监控和分布式部署实施方案_分布式_26

2.Zabbix Low-level discovery

   Zabbis Low-level discovery 可以自动创建监控项,触发器和图像的方法。Zabbix可以自动发现主机上面的文件系统或者网络接口,不需要对每个文件系统和网络接口手动创建监控项,触发器和图像。Zabbix 还可以自动删除不需要的监控项,比如:上例当中的,当agentd宕机超过24小时的时候可以自动删除监控,只需在action里面配置即可。

实例:监控服务器上面所有TCP端口,就可以通过Low-level discovery轻松实现。

Zabbix监控和分布式部署实施方案_分布式_27

5.8)Zabbix报警邮件机制

1)基于业务类型发送报警邮件

   当数据库服务器出问题时发给DBA组,当系统出问题时发给System组。

Zabbix监控和分布式部署实施方案_分布式_28

2)基于故障级别或者时间发送邮件

Zabbix监控和分布式部署实施方案_监控_29


5.9)Zabbix资产管理

   Zabbix可以自动收集主机的hostname,OS,cpu信息,MAC等信息。需要在添加主机的时候开启Host inventory Automatic功能,并按照官方手册(https://www.zabbix.com/documentation/doku.php?id=2.0/manual/config/hosts/inventory)添加Item即可。

Zabbix监控和分布式部署实施方案_Zabbix_30

5.10)Zabbix 报表功能


附录:

1)官方在线文档:

https://www.zabbix.com/documentation/2.2/manual/introduction