zabbix是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。php
zabbix能監視各類網絡參數,保證服務器系統的安全運營;並提供柔軟的通知機制以讓系統管理員快速定位/解決存在的各類問題。html
zabbix由2部分構成,zabbix server與可選組件zabbix agent。mysql
zabbix server能夠經過SNMP,zabbix agent,ping,端口監視等方法提供對遠程服務器/網絡狀態的監視,數據收集等功能,它能夠運行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平臺上。linux
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)等系統之上。sql
zabbix server能夠單獨監視遠程服務器的服務狀態;同時也能夠與zabbix agent配合,能夠輪詢zabbix agent主動接收監視數據(agent方式),同時還可被動接收zabbix agent發送的數據(trapping方式)。數據庫
另外zabbix server還支持SNMP (v1,v2),能夠與SNMP軟件(例如:net-snmp)等配合使用。windows
安裝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 |
從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 |
啓動進程
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 |
當監控項中的觸發器達到你設置的報警值以後,須要執行操做來發送郵件等動做。具體設置:
1:打開zabbix的系統配置---操做---- 選擇事件源爲觸發器------create action:
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的返回值。腳本能夠是任何能夠運行的腳本語言
其實在zabbix服務器端安裝完成以後,就有許多自帶的監控模板,基本上能夠知足大衆化的監控需求,不過其中有許可能是沒有必要的監控項或是本身不感興趣的,比較冗餘,因此要作好監控的話,仍是自定義模板和監控項,這個監控模板能夠修改zabbix系統自帶的,也能夠本身建立。如下爲本身建立監控模板。
打開zabbix的系統配置---模板----create template:
填寫模板名字和模板所在組保存便可。
打開zabbix的系統配置---模板---選擇對應模板中的監控項---createitem:
打開zabbix的系統配置---模板---選擇對應模板中的觸發器---create trigger:
添加主機有兩種方法,一個是手動添加,一個是經過zabbix的自動發現來自動添加主機。
1)手動添加主機
作完以上的設置,添加主機就是很簡單的事情了。打開zabbix的系統配置---主機—createhost:
2)經過自動發現自動添加主機:
打開zabbix的系統配置---自動發現—create discovery rule:
添加完主機以下圖,可用性爲綠色是正常,紅色爲不可監控(主要是網絡不通或是沒有安裝zabbix客戶端),灰色爲正在檢測zabbix的狀態:
在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