zabbix上自帶的監控想模闆及項目很少,是以很多時候我們需要自己制定一些項目及操作。
這裡我隻說明了如何來擷取zabbix需要監控的一些資料方式。web界面的添加及自定義項目的位子這些網上很多文檔,是以沒有寫出來。
工作流程
1、常見監控:
主機的性能監控、網絡裝置性能監控、資料庫性能監控、FTP等通用協定監控、多種告警方式、詳細的報表圖表繪制;(監控細節需注意的事項下面會較長的描述)
2、Zabbix監控資料流程
Zabbix是C/S架構的監控産品,他有2種工作模式(主動和被動)
<a href="http://blog.51cto.com/attachment/201309/141933492.png" target="_blank"></a>
如上圖,主動模式适用在特殊場景。如雲主機等,因為server端由于某種原因不能探測到agent端的端口問題(kfgzt現在就是主動模式)。這種情況需要事先寫清楚。
3、采集資料的頻率問題
采集資料的方式等下具體描述,頻率問題應該充分考慮到需求。通常一些資料的頻率為60秒,送出需求的時候應當把頻率給交代清楚。另外被動模式可以設定時間段來采集資料(如12點到20點頻率為200秒,20點到12點的頻率為100秒)。
報警流程
1、報警流程
<a href="http://blog.51cto.com/attachment/201309/141954880.png" target="_blank"></a>
首先報警的先決條件是觸發器,他存在于項目(采集資料)中。然後當觸發器被觸發後會有2個分支,他會産生一個事件,存放在web中可以用來檢視。然後另外一個分支就是産生動作,動作中定義了報警的方式等等。
2、分級報警
Zabbix是享受分級報警的。用步驟來劃分(10個步驟)。
大概可以了解為報警先報1然後2然後3,中間可以有步驟的時間間隔。這樣可以做到如果報到1級别的時候沒人操作就往上級報。
3、報警方式
a) 短信(提短信需求的時候,盡量選擇關鍵字來報警,字數限制問題顯示不全)
b) 郵件
采集資料的問題
如果官方給的模闆上沒相應的采集資料的項目及觸發器,那麼就需要手動添加了
1、zabbix采集資料的反應形式
a) 數字形式,
b) 0 1 2 .. 腳本傳遞出來的參數,觸發器可以判斷
c) 字元串觸發器可以判斷
2、采集資料的方式
a) 指令行形式,可以直接拉取到的。如 cat /proc/meminfo | grep "MemTotal" |awk '{print $2}'
b) 運作腳本形式,通過腳本傳遞出 0 1 2 3 4等參數:如判斷某個檔案是否發生了改變,腳本中判斷,因為zabbix不具備這樣的判斷功能。是以讓這個腳本傳遞出來參數,如未改變就傳回0改變就傳回1,然後zabbix是可以抓取到0 或1 的,然後觸發器設定抓取到0或1就發生某種操作。
c) 通過crontab任務把一些總體資料打到1個檔案中。然後cat grep參數出來。(這樣可以節省将一些問題中的資料集中采集,分别拉取)
3、觸發器的判斷類型(其實很多函數,隻做稍微列舉)
a) 次數或時間段内的資料大于等于小于多少
b) 對字元串判斷(判斷一樣或不一樣。)
例子
1、采集方式:指令行直接采集資料的形式
需求:需擷取到mysql中processlist除去Sleep之外的連接配接數,對此做統計。
分析:統計這樣的資料,隻需要一條shell指令即可搞定,是以無需腳本。
結果:/usr/local/mysql_percona5.5.25/bin/mysql -uccmsckdata -pdatayun_123! -sNe "show full processlist" | egrep -v "Sleep|Id|show full processlist" | wc -l
這樣 就可以采集到mysql的連接配接數了。
然後送出issue的時候,需要把主動還是被動模式、采集資料的時間間隔、報警聯系人、方式、短信報警内容送出給運維組即可。
2、采集方式:腳本形式,通過傳遞 0 1 2 3 4等參數
需求:判斷1個檔案是否在當天是否生成及是否為空,做出相應的報警
分析:這類不能通過1個指令直接擷取出結果。并且用腳本需要在邏輯中進行判斷等操作。
結果:由于zabbix是可以運作腳本的,但是腳本運作完出來字元串的形式并不能在web界面中直接的觀察結果,是以可以參考如下腳本:
#!/bin/bash
#
source /etc/profile
FILE="/data/opsscripts/resin_log/data/customer.data"
FTIME=`stat /data/opsscripts/resin_log/data/customer.data | grep "^Modify" |awk '{print $2}'`
DATE=`date +%F`
if [ -s $FILE ]
then
if [ $FTIME = $DATE ]
echo 0
else
echo 1
fi
echo 2
# 0 檢查ok
# 1 檔案存在但日期不一樣
# 2 檔案不存在
<a href="http://blog.51cto.com/attachment/201309/142015916.png" target="_blank"></a>
切記送出腳本的時候請把相應的邏輯寫在腳本後邊,以便進行觸發器的添加。
3、采集方式:通過crontab任務把一些總體資料打到1個檔案中。然後cat grep參數出來。
需求:需要對系統中記憶體的各項名額進行測取并監控
分析:cat /proc/meminfo 可以取得記憶體的完整名額,但是用指令行去拉取未免有些麻煩(僅此作為參考的例子,難免有些不規範)
結果:做了一個crontab任務,每一分鐘就cat /proc/meminfo然後覆寫到1個檔案中。然後在用指令行的形式去cat/grep這個檔案。然後擷取相應的值。
好了。大緻上就這些吧,大緻想了一些,如果有不全的地方請大家指出來。我直接加上來。
本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1297708,如需轉載請自行聯系原作者