運維監控利器Zabbix
1 zabbix綜述
1.1什麼是zabbix
zabbix是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。
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,FreeBSD,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主要特點和功能
2 Zabbix的安裝和配置
2.1 安裝Zabbix
1.安裝必要的軟件和庫
安裝mysql的頭文件及庫文件、net-snmp、curl、gcc、make
1 2 3 4 5 | yum install mysql-devel.x86_64 yum install net-snmp.x86_64 net-snmp-devel.x86_64 net-snmp-utils.x86_64 yum install curl.x86_64 curl-devel.x86_64 yum install gcc.x86_64 libgcc.i386 libgcc.x86_64 yum install make |
2.編譯安裝zabbix
從zabbix的官網下載源代碼,進行解壓縮(略)
編譯安裝zabbix,注意:連同agent一起編譯
1 2 | #./configure -prefix=/app/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl |
創建zabbix用戶
1 | useradd -d /home/zabbix -p zabbix zabbix |
進入 zabbix 解壓縮後的目錄,創建 zabbix 數據庫
1 4 5 6 7 8 | mysql -uroot -pXXXX create database zabbix; quit; cat create/schema/mysql.sql | mysql -uroot -pXXXX zabbix cat create/data/data.sql | mysql -uroot -pXXXX zabbix cat create/data/p_w_picpaths_mysql.sql | mysql -uroot -pXXXX zabbix |
修改/etc/services,加入以下行
1 2 3 7 | zabbix-agent 10050/tcp Zabbix Agent zabbix-agent 10050/udp Zabbix Agent zabbix-trapper 10051/tcp Zabbix Trapper zabbix-trapper 10051/udp Zabbix Trapper |
修改 zabbix 的配置文件
創建配置文件目錄,並將源代碼中的配置文件模板拷貝到新創建的配置文件目錄中。
1 2 | mkdir /etc/zabbix cp misc/conf/* /etc/zabbix |
根據自己的實際情況修改zabbix_server.conf、zabbix_agentd.conf、zabbix_agent、zabbix_trapper.conf,如數據庫的用戶名和密碼等:
1 2 | DBUser=root DBPassword=XXXX |
由於 zabbix 使用 fping 替代了ping 作爲 icmp 的工具,所以要安裝 fping
可以從 http://fping.sourceforge.net/ 上下載 fping 的源代碼,解壓編譯安裝。
進入 fping 解壓後的源代碼目錄
1 2 | ./configure make install |
修改/etc/zabbix/zabbix_server.conf
1 | FpingLocation=/usr/local/sbin/fping |
拷貝zabbix服務器的frontendphp 程序到 http server 的主目錄下
1 | cp -r frontend/php/* /var/www/html |
3.配置zabbix server
啓動進程
1 2 | /app/zabbix/sbin/zabbix_server /app/zabbix/sbin/zabbix_agentd |
注:客戶端在部署時,除了zabbix的編譯安裝和創建zabbix用戶之外、只要修改/etc/zabbix/zabbix_agentd.conf裏對應的server相關信息即可,如下所示:
1 2 3 4 | #Server=127.0.0.1 Server=XXX.XXX.XXX.XXX #Hostname=Zabbix server Hostname=XXX |
使用瀏覽器登陸到 zabbix server
http:///index.php,會出現如下配置服務器界面
一路 next 進入配置檢查頁面,會發現PHP max execution 和PHP Timezone 兩項檢查失敗,如下:
修改 /etc/php.ini ,修改以下兩項後,重啓httpd
1 2 | max_execution_time = 300 date.timezone = Asia/shanghai |
然後在頁面上點擊 retry ,檢查成功
next 進入下一頁面,檢查 mysql 連接
填寫 mysql 連接參數,TestConnection ,成功
一路 next,出現如下頁面
點擊 save configuration file ,將文件上傳至/var/www/html/conf/zabbix.conf.php,點擊 retry ,即可成功。
之後,一路 next ,進入登陸頁面
使用瀏覽器登陸到 zabbix server,別忘了修改C:\Windows\System32\drivers\etc下的hosts文件
1 | XXX.XXX.XXX.XXX XXXXXXXXXX |
3 Zabbix相關監控設置
3.1 報警觸發器設置
當監控項中的觸發器達到你設置的報警值之後,需要執行操作來發送郵件等動作。具體設置:
1:打開zabbix的系統配置---操作---- 選擇事件源爲觸發器------create action:
3.2 Zabbix中常用的key介紹
Zabbix的key可以理解爲zabbix的命令,執行這個key可以得到相應的結果。
1:監控端口:net.tcp.port[3306]
/usr/local/zabbix/bin/ -s[IP] -knet.tcp.port[3306] 返回1爲此IP的端口3306存在,0爲不存在
2:監控進程:proc.num[mysqld]
/usr/local/zabbix/bin/zabbix_get –s[IP] -kproc.num[mysqld] 返爲此ip中mysqld的進程數量
/usr/local/zabbix/bin/zabbix_get –s[IP] -kproc.num[] 返回值爲此IP中所有的進程數量
3:查看CPU核數:system.cpu.num 返回值爲服務器CPU的核數
4:查看系統的系統啓動時間和當前時間:system.boottime、system.localtime返回值爲系統啓動時間和當前時間,爲時間戳格式
5:查看系統的簡單信息:system.uname返回值爲對應IP的系統信息,類似於linux系統的uname -a命令
6:查看windowns系統當前網卡的進出流量:
net.if.out[{HOST.NAME},bytes]、net.if.in[{HOST.NAME},bytes]和linux系統的key:net.if.out[eth0,bytes]、net.if.in[eth0,bytes]一樣
/usr/local/zabbix/bin/zabbix_get –s[IP] -knet.if.in[IP,bytes] 返回值爲該IP的進流量,此值爲計數值,單位爲bytes,減去上次取得值,除以時間間隔爲此段時間內的平均流量;同理可得出口流量。
7:查看系統內存大小:vm.memory.size[total],返回值單位bytes
8:查看文件的大小: vfs.file.size[file]
如: vfs.file.size[/var/log/syslog] 返回的是/var/log/syslog的大小,單位是:bytes
9:查看文件是否存在:vfs.file.exists[file]
文件如果存在返回0,不存在返回1
10:查看文件的MD5:vfs.file.md5sum[file]
查看小文件的MD5,返回爲MD5值(好像只有2.0以上的版本有這個key)
11:自動發現網卡並監控流量和自動發現分區及分區掛載情況的兩個key:net.if.discovery,vfs.fs.discovery,windows和linux監控模板中都有這模板(2.0以上版本),應用即可
以上是常用的key,其實監控服務器無非就是內存、硬盤佔用、CPU負載、流量、服務器和端口等情況。如果要監控其他的可以自定義key來實現,我比較親睞自定義key,寫個腳本、或者在/etc/zabbix/zabbix_agentd.conf裏寫一段自定義key來返回,得到自己想要的監控結果。
zabbix在這塊做的非常好,擴展性很強,支持各種腳本來實現自定義的key。要啓用
自定義key,需要在客戶端的配置文件中啓用UnsafeUserParameters=1參數,然後在配置文件的最下面來定義key,如:
UserParameter=free.disk,/usr/local/zabbix/bin/disk.py
free.disk爲key的名字,/usr/local/zabbix/bin/disk.py爲服務器端調用free.disk這個key時執行的腳本,其結果就是free.disk的返回值。腳本可以是任何可以運行的腳本語言
3.3 創建監控模板和監控項
其實在zabbix服務器端安裝完成之後,就有許多自帶的監控模板,基本上可以滿足大衆化的監控需求,不過其中有許多是沒有必要的監控項或是自己不感興趣的,比較冗餘,所以要做好監控的話,還是自定義模板和監控項,這個監控模板可以修改zabbix系統自帶的,也可以自己創建。以下爲自己創建監控模板。
1.創建監控模板:
打開zabbix的系統配置---模板----create template:
填寫模板名字和模板所在組保存即可。
2.創建監控項:
打開zabbix的系統配置---模板---選擇對應模板中的監控項---createitem:
3.創建監控項的觸發器:
打開zabbix的系統配置---模板---選擇對應模板中的觸發器---create trigger:
4.添加主機並應用模板
添加主機有兩種方法,一個是手動添加,一個是通過zabbix的自動發現來自動添加主機。
1)手動添加主機
做完以上的設置,添加主機就是很簡單的事情了。打開zabbix的系統配置---主機—createhost:
2)通過自動發現自動添加主機:
打開zabbix的系統配置---自動發現—create discovery rule:
添加完主機如下圖,可用性爲綠色是正常,紅色爲不可監控(主要是網絡不通或是沒有安裝zabbix客戶端),灰色爲正在檢測zabbix的狀態:
2.4 FAQ/Q&A
在CentOS系統中,安裝zabbix進行configure時會遇到以下4個主要問題:
1) configure error: MySQL library notfound,the problem is not installed mysql-devel
#yum install mysql-devel
2) configure error: Jabber library notfound, the problem is not installed jabber lib
#wgethttp://iksemel.googlecode.com/files/iksemel-1.4.tar.gz
#tar zxvf iksemel-1.4.tar.gz
#cd iksemel-1.4
#configure
#make
#make install
之後指定jabber目錄,#./configure --with-jabber=/usr/local/XXXX……
3) configure error: Not found curlLibrary
#yum install curl-devel
4) configure error : Not found NET-SNMPlibrary
#yum install net-snmp-devel