轉角遇到Zabbix:企業(yè)級分布式系統(tǒng)監(jiān)控部署
【編者按】Zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網絡監(jiān)視功能的企業(yè)級的開源解決方案。借助Zabbix,可以減輕運維人員們繁重的服務器管理任務,實現(xiàn)業(yè)務系統(tǒng)的持續(xù)運行。本文中,作者張世鋒結合公司的實際機房分布在多個城市的案例,總結了Zabbix分布式部署實施方案的全過程。
最近在研究Zabbix監(jiān)控,由于機房分布在多個城市,因此采用zabbix proxy做為監(jiān)控方案,在每個節(jié)點部署zabbix proxy,由zabbix proxy收集agentd數據,然后將采集到的數據主動推送給zabbix server,zabbix server將數據存入數據庫,并在WEB前端顯示。
一、Zabbix主要功能和優(yōu)劣勢說明
1、Zabbix主要功能:
1)Application monitoring 應用監(jiān)控
數據庫/SSH/Apache/Nginx等應用程序的監(jiān)控。
2)Server monitoring 服務器監(jiān)控
CPU,內存,SWAP,磁盤空間,網卡流量的監(jiān)控等,可以通過瀏覽器實時查看Graphs。
3)Network monitoring 網絡設備監(jiān)控
支持Cisco, Juniper, 3Com等網絡設備,網絡設備通過SNMP(SNMP (v1,v2,v3) devices)協(xié)議進行監(jiān)控。
4)添加自定義監(jiān)控,對于Zabbix無法滿足的監(jiān)控,可以添加自定義監(jiān)控。
2、Zabbix 優(yōu)勢:
1)安裝配置簡單,支持多種語言,包括中文。
2)系統(tǒng)自帶多種監(jiān)控模板,可以直接使用。
3)支持分布式部署和WEB集中管理(通過WEB頁面設置或查看報警結果)。
4)自動發(fā)現(xiàn)主機和網絡設備(discovery of file systems,network interfaces,hosts and netwrok devices)。
5)WEB監(jiān)控:可以監(jiān)控WEB下載速度,返回碼及響應時間。
6)提供實時和歷史的監(jiān)控分析數據。
7)EMAIL報警,按照故障級別|服務器類型|業(yè)務類型發(fā)送EMAIL郵件到相關負責人。
3、Zabbix 劣勢:
1)需要在被監(jiān)控機器上面安裝agent。
2)All configuration information都存儲在數據庫里面,數據庫是整個監(jiān)控平臺的瓶頸。
二、Zabbix分布式部署需求分析
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、硬件需求
官方推薦的最小硬件配置:
#p#
三、Zabbix分布式部署實施
1、分布式部署拓撲圖
補充說明:
當proxy部署為主動模式(Active)時,Zabbix Server的負載最小。
1)Server:負責把數據寫入到數據庫,然后通過Apache|Nginx +php在WEB前端顯示。
2)Proxy:幫助server采集被監(jiān)控端的數據,并把采集到的數據主動傳送給Server,proxy只負責數據收集。
3)Database:所有的配置信息都存儲在數據庫里面,Zabbix server數據庫和proxy數據庫必須獨立。
4)Agent:agent的作用就是獲取host數據,然后將收集到的數據發(fā)送給server(主動模式),或者是server主動來拿取數據(被動模式)。
5)Email:通過Qmail|postfix的SMTP負責報警郵件的發(fā)送(故障郵件和故障恢復郵件)。
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
 
四、Zabbix WEB前端配置
1、配置proxy代理
2、添加Groups和hosts
通常Groups按照頻道或者是WEB,MYSQL,memcache等服務類型分組的,提供相同服務的服務器分為一組,便于后期的維護和管理。
3、自定義監(jiān)控模板,監(jiān)控項和觸發(fā)器
#p#
五、zabbix主要功能展示
1、服務器監(jiān)控
1)CPU負載監(jiān)控
2)內存空間的監(jiān)控
3) 磁盤空間的監(jiān)控
4)交換分區(qū)的監(jiān)控
5) 網卡流量的監(jiān)控
除此之外,還有服務器重啟的監(jiān)控,添加刪除用戶時的監(jiān)控,主機存活狀態(tài)的監(jiān)控(ICMP ping協(xié)議)等。
2、應用程序的監(jiān)控
Zabbix有很多系統(tǒng)自帶的模板,在添加主機的時候Link相關的模板即可。
當停止主機的上面的SSH服務或者Apache服務的時候會產生報警。
3、WEB Monitoring
Web Monitoring是用來監(jiān)控web程序的,可以監(jiān)控到web程序的下載速度、返回碼及響應時間。當返回碼不為200的時候也可以產生報警。
4、Zabbix Screens
Screen將多種信息放在一起展示,便于集中展示某個主機的監(jiān)控信息。
5、Zabbix maps
Zabbix的maps用來圖形化顯示監(jiān)控設備的拓撲圖,并且以不同的標記顯示故障事件,通過該圖表很直觀的顯示設備的整體情況。
#p#
六、Zabbix自定義監(jiān)控
在實際應用當中,好多監(jiān)控系統(tǒng)都滿足不了實際的需求,需要根據實際的需求添加自定義監(jiān)控。比如說:監(jiān)控應用服務器tuxedo排隊,當隊列大于2000的時候報警。監(jiān)控apache,mysql鏈接數,當大于2000的時候報警等等,此時Zabbix需要借助scripts來完成。
實例:監(jiān)控http和mysql ESTABLISHED和TIME_WAIT連接數,當大于100的時候報警,并在WEB頁面實時查看連接數。
1、在要監(jiān)控的服務器上面編寫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
 
2、在Zabbix_agentd.conf里面添加UserParameter,格式如下,對于Zabbix來說,腳本其實就是一個插件。
- UserParameter=checkservices.sh[*],/etc/zabbix/scripts/checkservices.sh $1 $2
 
重啟agentd服務器,然后在zabbix server用zabbix_get就可以取到值。
3、要監(jiān)控的服務器有多臺的時候,最簡單的方法是先編寫一個Templates(模板),在Link到要監(jiān)控的服務器上面。
4、給新添加的模板Linux_service_templates添加Applications。
5、給新添加的模板Linux_service_templates添加Items(監(jiān)控項)。下面是添加http ESTABLISHED監(jiān)控條目。
6、給新添加的模板Linux_service_templates添加Triggers(觸發(fā)器)。下面是添加 http ESTABLISHED觸發(fā)器,當連接數大于2000的時候報警,故障級別為High。
7、要在WEB前端實時查看http的連接情況,必須配置Graph。在一個Graph里面可以添加多個Item數據。
8、要查看Graphs在要監(jiān)控的主機上面Link剛才的模板Linux_service_templates。
9、在WEB前端查看實時連接情況。
Http連接情況:
Mysql連接情況:
#p#
七、Zabbix discovery
1、Network discovery
Zabbix network discovery能自動發(fā)現(xiàn)網絡中存活的主機,可用通過proxy代理或者Zabbix server 發(fā)現(xiàn)網絡中存活的主機,并按照Actions里面定義的條件自動添加到Zabbix監(jiān)控里面。
1)首先:添加Discovery rule,可以通過proxy代理或者zabbix server添加rule。
2)然后create Actions,指定Actions的Conditions,必須具備下列條件才能自動添加,Discover
rule:規(guī)則為 Local network,system.uname的值中包含Linux,Zabbix agentd服務必須正常運行。
3) 配置Actions的operations,將Actions里面符合條件的主機添加到shwww組里面并Link要監(jiān)控的模板。
4)查看Discover自動發(fā)現(xiàn)的主機自動添加到Zabbix里面。
2、Zabbix Low-level discovery
Zabbis Low-level discovery 可以自動創(chuàng)建監(jiān)控項,觸發(fā)器和圖像的方法。Zabbix可以自動發(fā)現(xiàn)主機上面的文件系統(tǒng)或者網絡接口,不需要對每個文件系統(tǒng)和網絡接口手動創(chuàng)建監(jiān)控項,觸發(fā)器和圖像。Zabbix 還可以自動刪除不需要的監(jiān)控項,比如:上例當中的,當agentd宕機超過24小時的時候可以自動刪除監(jiān)控,只需在action里面配置即可。
實例:監(jiān)控服務器上面所有TCP端口,就可以通過Low-level discovery輕松實現(xiàn)。
八、Zabbix報警郵件機制
1、基于業(yè)務類型發(fā)送報警郵件
當數據庫服務器出問題時發(fā)給DBA組,當系統(tǒng)出問題時發(fā)給System組。
2、基于故障級別或者時間發(fā)送郵件
九、Zabbix資產管理
Zabbix可以自動收集主機的hostname,OS,cpu信息,MAC等信息。需要在添加主機的時候開啟Host inventory Automatic功能,并按照官方手冊添加Item即可。
十、Zabbix 報表功能
附錄:
1、官方在線文檔:
https://www.zabbix.com/documentation/2.2/manual/introduction













































 
 
 

 
 
 
 