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

最近在研究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 interfaces                  ,                      hosts 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              硬件需求      

官方推荐的最小硬件配置  

wKioL1MO3dPCC61QAAFTb7sgKEg606.jpg              3.Zabbix              分布式部署实施      

     3.1              分布式部署拓扑图      

               wKioL1MO3mWTO2OBAAGBuFcZYVQ871.jpg                    

补充说明:  

当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.27yum -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_DIRcd $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 serviceszabbix-agent 10050/tcp#Zabbix Agentzabbix-agent 10050/udp#Zabbix Agentzabbix-trapper 10051/tcp#Zabbix Trapperzabbix-trapper 10051/udp#Zabbix TrapperEOF
/etc/init.d/zabbix_agentdstart

 

     4 Zabbix WEB              前端配置      

     4.1              配置proxy代理      

               wKiom1MO4ByzCAfDAAIn-y9XOAo584.jpg                    

     4.2              添加Groups和hosts      

通常Groups按照频道或者是WEB,MYSQL,memcache等服务器类型分组的,提供相同服务的服务器分为一组。  

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

     5 zabbix              主要功能展示。      

     5.1              服务器监控      

1    )CPU负载监控  

wKiom1MO4QOA7w7ZAAOXQJ1tSQM794.jpg      

2    )内存空间的监控  

wKioL1MO4UDiaibCAAN1UIxVtbQ695.jpg      

3    ) 磁盘空间的监控  

wKioL1MO4YPA-5rEAADjAq75jFo687.jpg      

4    )交换分区的监控  

wKioL1MO4byhddWhAADLw1ANY60750.jpg      

5    ) 网卡流量的监控  

wKioL1MO4fWw4HKGAAP9zMiwES8263.jpg      

除此之外,还有服务器重启的监控,添加删除用户时的监控,主机存活状态的监控(ICMP ping协议)等。  

     5.2              )应用程序的监控      

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

wKioL1MO4jKCn-QgAAMfK1vGjlk799.jpg      

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

wKiom1MO4mOwN88BAAD4jVhNQJQ676.jpg      

     5.3              )WEB Monitoring      

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

wKioL1MO4mrxNLAGAAQZ6RYbORU303.jpg      

     5.4              )Zabbix Screens      

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

wKiom1MO4v-wUHrsAAXqOAYol0s286.jpg      

     5.5              )Zabbix maps      

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

wKiom1MO426yLlkOAAChGOcZNU8116.jpg      

     5.6              )Zabbix自定义监控      

在实际应用当中,好多监控系统都满足不了实际的需求,需要根据实际的需求添加自定义监控。比如说:监控应用服务器tuxedo排队, 当队列大于100的时候报警。监控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.10ARGS=1if [ $# -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 $2  

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

wKioL1MO5BHycEkgAAC6YaiQlQE551.jpg      

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

wKiom1MO5HrSortYAAK-SIUkoMk358.jpg      

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

wKiom1MO5UDTVknFAACixKB1xCw455.jpg      

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

wKioL1MO5X6jZgirAALiMp_pLxM521.jpg      

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

wKiom1MO5XihYG-tAAF47LrhYNY051.jpg      

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

wKiom1MO5ceQypyHAAHaNTf6EOw995.jpg      

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

wKiom1MO5rHBxSBPAAMO2b16MXc555.jpg      

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

Http    连接情况:  

wKioL1MO5xOwooGWAASCP7onyQw682.jpg      

Mysql    连接情况:  

wKioL1MO54STU0yRAAQxxbAu4hc157.jpg      

     5.7              )Zabbix discovery      

1.Network discovery  

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

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

wKioL1MO6ACgAo5XAAI5tB5e03w318.jpg      

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

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

wKiom1MO6FPS-zRIAAI7B1ZwVyM207.jpg      

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

wKioL1MO6Fyh39XLAAI4PdtmSGs724.jpg      

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

wKioL1MO6N3wCpOzAAPLZ5Fp6a4621.jpg      

     2.Zabbix              Low-level discovery            

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

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

wKioL1MO6VXBLZTsAAHEV7UTXuQ153.jpg      

     5.8)Zabbix              报警邮件机制      

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

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

wKioL1MO6ZOwR8i6AAJLQq_4Eog735.jpg      

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

       wKiom1MO6dHRg7m5AADG3UbBcq0057.jpg            

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即可。      
     

wKiom1MO6znBW4bBAANeWU7ISK0083.jpg      

5.10    )Zabbix 报表功能  

     附录:      

1)    官方在线文档:  

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


转自:http://dl528888.blog.51cto.com/2382721/1334573

你可能感兴趣的:(linux,proxy,zabbix)