What is Zabbix
Zabbix是一個開源軟體基于WEB界面的提供分布式系統監視以及網 絡監視功能的企業級的開源解決方案。Zabbix能監視各種網絡參數,保證伺服器系統的安全營運;并提供靈活的通知機制以讓系統管理者快速定位/解決存在的各種問題。
Zabbix支援使用MySQL、PostgreSQL、Oracle、IBM DB2資料庫,資料存儲。有着強大的資料采集能力,可以從網絡擷取幾乎無限類型的資料,具有分布式監控功能,能擴充到非常大的環境,高性能實時監控成千上萬的伺服器,虛拟機和網絡裝置,還具有可視化功能,能将收集的資料進行分析,繪成圖表友善使用者檢視。
Zabbix官網:www.zabbix.com
Zabbix社群平台:www.zabbix.org
實驗一、使用zabbix監控一台主機的網卡速率與cpu工作情況。
實驗環境:Centos6.5+Zabbix2.2+MySQL5.5
Server1.tuchao.com 192.168.1.90 — Zabbix-server
admin1.tuchao.com 192.168.1.201 — Zabbix-agent
admin2.tuchao.com 192.168.1.202 — MySQL-Server
首先準備好資料庫admin2.tuchao.com 192.168.1.202
MySQL安裝(略)
授權zabbix庫給使用者。
grant all on zabbix.* to ‘tuchao’@’192.168.1.90’ identified by ‘123456’;
flush privileges;
安裝配置 Zabbix-Server Server1.tuchao.com
https://www.zabbix.com/documentation/2.2/manual/installation/install //官方源碼編譯安裝文檔
http://www.zabbix.com/download.php //官方下載下傳頁面
yum install zabbix-2.2.6-1.el6.i386.rpm zabbix-get-2.2.6-1.el6.i386.rpm zabbix-server-2.2.6-1.el6.i386.rpm zabbix-server-mysql-2.2.6-1.el6.i386.rpm zabbix-web-2.2.6-1.el6.noarch.rpm zabbix-web-mysql-2.2.6-1.el6.noarch.rpm
編輯主配置檔案 /etc/zabbix/zabbix_server.conf
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=192.168.1.202
DBName=zabbix
DBUser=tuchao
DBPassword=123456
zabbix_web 配置檔案 /etc/httpd/conf.d/zabbix.conf //裡面定義了通過什麼路徑通路zabbix-web界面。
初始化資料庫,zabbix-server-mysql 安裝包,提供了三個腳本。
<a href="http://s3.51cto.com/wyfs02/M01/48/68/wKiom1QHyTDQPih0AANrxaoikHo192.jpg" target="_blank"></a>
使用mysql用戶端連接配接到,MySQL-server,建立庫,導入腳本。
mysql -utuchao -p123456 -h192.168.1.202
create database zabbix;
use zabbix
source /usr/share/doc/zabbix-server-mysql-2.2.6/create/schema.sql
source /usr/share/doc/zabbix-server-mysql-2.2.6/create/images.sql
source /usr/share/doc/zabbix-server-mysql-2.2.6/create/data.sql
修改php預設時區
vim /etc/php.ini
date.timezone= Asia/Shanghai
啟動zabbix服務,啟動httpd服務。
/etc/init.d/zabbix-server start
/etc/init.d/httpd start
使用浏覽器通路http://192.168.1.90/zabbix/,進入管理界面。
添加一個主機。
找到configuration—hosts—create host
<a href="http://s3.51cto.com/wyfs02/M01/48/6A/wKioL1QHyajgmbJzAAL2mD-CWMQ971.jpg" target="_blank"></a>
定義一個items 用于監控網卡流入的速率
<a href="http://s3.51cto.com/wyfs02/M02/48/68/wKiom1QHyc_ykgDTAAO7eHRMMhI765.jpg" target="_blank"></a>
定義一個items 用于監控網卡流出的速率
<a href="http://s3.51cto.com/wyfs02/M00/48/68/wKiom1QHyguST3r_AAJ_zxMu_D0158.jpg" target="_blank"></a>
定義一個items 用于監控CPU中斷次數
<a href="http://s3.51cto.com/wyfs02/M00/48/6A/wKioL1QHykKg9ix8AAJ2tAsaEP8817.jpg" target="_blank"></a>
定義一個items 用于監控CPU上下文切換的次數
<a href="http://s3.51cto.com/wyfs02/M02/48/6A/wKioL1QHynXx46MOAAJ26o5eihc961.jpg" target="_blank"></a>
定義完成後,我們可以通過Monitoring — latest data,檢視狀态以及圖表。
接下來我們使用Graphs将兩個相關的item圖表,繪制成一張圖顯示。
Configuration—Hosts—Graphs—Create graph
<a href="http://s3.51cto.com/wyfs02/M00/48/6A/wKioL1QHysDA114kAAH_4C9GkeM435.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/48/6A/wKioL1QHyuGyvneoAAIJXNaLbUc415.jpg" target="_blank"></a>
我們再使用Screen将兩張定義好的圖,拼在同一屏顯示。
Configuraton—Screens—Create screen
<a href="http://s3.51cto.com/wyfs02/M02/48/6A/wKioL1QHywawAzeEAADg5d42fOg306.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/48/68/wKiom1QHyxjy02zBAAN-SxAT1nA183.jpg" target="_blank"></a>
實驗二、通過監控網卡的流量,實作一次完整的觸發報警。
自定義一個宏Administration-General-Macros
<a href="http://s3.51cto.com/wyfs02/M00/48/86/wKioL1QJNDLz5v6PAAK_hhKDT6w124.jpg" target="_blank"></a>
給admin1定義一個觸發器(Triggers)
Configuration-Hosts-triggers-Create trigger
<a href="http://s3.51cto.com/wyfs02/M00/48/84/wKiom1QJNHOgP61VAAE-eo7SqvI758.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/48/86/wKioL1QJNJ_AhnUyAAHU-BV3kNk344.jpg" target="_blank"></a>
這時候我們再去看 monitoring-Graphs
<a href="http://s3.51cto.com/wyfs02/M01/48/84/wKiom1QJNNeR728iAAOx38o_E5I366.jpg" target="_blank"></a>
建立媒介用于通知功能 Administration-Media types-Create media type
<a href="http://s3.51cto.com/wyfs02/M00/48/84/wKiom1QJR7DzZOIcAADr9PHVkdM911.jpg" target="_blank"></a>
修改使用者通信媒介 Administration-users-Admin-Media
<a href="http://s3.51cto.com/wyfs02/M01/48/86/wKioL1QJR-LCliOPAADypSlVAIk796.jpg" target="_blank"></a>
定義action
Configuration-Actions-Create action
Action:
<a href="http://s3.51cto.com/wyfs02/M01/48/85/wKiom1QJSBbjVfVlAAJcCCHeqqc151.jpg" target="_blank"></a>
Conditions:
<a href="http://s3.51cto.com/wyfs02/M01/48/86/wKioL1QJSFCwEpWnAAHr2ynpu4U448.jpg" target="_blank"></a>
Operations:
<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJSH7iTusUAAMrXcQ0gaU651.jpg" target="_blank"></a>
添加報警更新
<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJSI7xavkHAANUaHfoNT4612.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJSNOwevttAAHD3rhHMt0427.jpg" target="_blank"></a>
儲存配置後,我們來到Monitoring-Graphs檢視
<a href="http://s3.51cto.com/wyfs02/M00/48/85/wKiom1QJSQTSBfRsAAE3tnQSyWU555.jpg" target="_blank"></a>
目前流量指數是正常的,并沒有過線。我們檢視Monitoring-triggers,也可以看到狀态OK。
<a href="http://s3.51cto.com/wyfs02/M01/48/85/wKiom1QJSU6j_DrTAANm5Asz6mc608.jpg" target="_blank"></a>
這時我們對伺服器做壓力測試
<a href="http://s3.51cto.com/wyfs02/M01/48/87/wKioL1QJShyikYTcAAEkruc7ZOg325.jpg" target="_blank"></a>
這裡我們可以看出流量已經嚴重超标,觸發器也标紅色顯示有故障了。
<a href="http://s3.51cto.com/wyfs02/M00/48/87/wKioL1QJSj-QvZCoAAKP2jjDHjA845.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/48/85/wKiom1QJSn7S_6q-AAMmyaAQOoo510.jpg" target="_blank"></a>
我們把壓力測試關掉,讓伺服器流量恢複正常。
<a href="http://s3.51cto.com/wyfs02/M01/48/87/wKioL1QJSruylQiyAALyt6DOCZk064.jpg" target="_blank"></a>
實驗三、使用自定義帶參數的key,監控系統狀态。
Syntax
UserParameter=key[*],command
編輯/etc/zabbix/zabbix_agentd.conf。
UserParameter=memory.usage[*],/bin/cat/proc/meminfo |awk '/^$1:/{print $$2}'
如果指令自身有$的話就要寫成$$,不然就會認為是傳遞給key的參數。
可以在zabbix-server端使用指令測試
zabbix_get-s 192.168.1.201 -k "memory.usage[MemTotal]"
zabbix_get-s 192.168.1.201 -k "memory.usage[MemFree]"
<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJS_6TjU34AAEQ0mVOaCs933.jpg" target="_blank"></a>
實作使用一個key通過傳遞不同的參數實作定義多個item,假如我們要監控主機的MemTotal、MemFree、Cache、Buffer。
接下來定義Item 這裡用MemFree做示範:
<a href="http://s3.51cto.com/wyfs02/M00/48/85/wKiom1QJTE3CgSwsAAKf7OT9v7o171.jpg" target="_blank"></a>
其餘的定義也差不多,使用相同的key傳遞不同的參數即可。
memory.usage[MemTotal]
memory.usage[Cache]
memory.usage[Buffer]
将四個監控項的資料繪制到一張圖上輸出,方法相同使用Graphs。
<a href="http://s3.51cto.com/wyfs02/M02/48/87/wKioL1QJTM3gmO9hAAMbpos6f_c486.jpg" target="_blank"></a>
實驗三、使用zabbix監控Nginx輸出的status狀态。
開啟nginx status
server {
...
location /status {
stub_status on;
access_log off;
allow 192.168.1.0/24; # 允許通路的IP
allow 127.0.0.1;
deny all;
}
}
建立配置檔案 /etc/zabbix/zabbix_agentd.d/nginx-status.conf自定義key :
UserParameter=Nginx.active[*],/usr/bin/curl -s "http://$1:$2/status" |awk '/^Active/{print $NF}'
UserParameter=Nginx.reading[*],/usr/bin/curl -s "http://$1:$2/status" | grep Reading | cut -d " " -f2
UserParameter=Nginx.writing[*],/usr/bin/curl -s "http://$1:$2/status" | grep Writing | cut -d " " -f4
UserParameter=Nginx.waiting[*],/usr/bin/curl -s "http://$1:$2/status" | grep Waiting | cut -d " " -f6
UserParameter=Nginx.accepted[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$1}'
UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$2}'
UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk '/^[[:space:]]+[0-9]+[[:space:]]+[0-9]+[[:space:]]+[0-9]+/{print $$3}'
重新開機zabbix-agent服務
在zabbix-server使用指令測試
<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJTVPQjDXZAAOMCoQSW4c089.jpg" target="_blank"></a>
定義item 這裡我隻拿一個做示範
<a href="http://s3.51cto.com/wyfs02/M02/48/85/wKiom1QJTaCj0DekAALPQ9Ghlr8740.jpg" target="_blank"></a>
後面繪圖之類的,前面都有示範,這裡就不再重複了。
本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1548427