在公司搭建系統級別的監控,由於ELK對流量監控存在侷限——現有的工具只記錄了累計的流量,而無法計算每時每刻的流量。所以決定最後用zabbix來對網路做監控和報警,下麵會從零開始記錄zabbix搭建過程中的所有步驟,希望可以給你帶來幫助。
安裝必要的軟體,禁用SELINUX,安裝必備軟體
安裝
啟動mysql,設定開機啟動,修改mysql密碼,註意下麵的yourpassword要替換為你自己的密碼
匯入資料
註意:下麵的yourpasswd請替換為你自己的資料庫密碼
修改時區
設定開機啟動
透過http://hostname/zabbix訪問zabbix的安裝頁面,填寫安裝資訊,完成安裝。完成安裝後,初始登入賬戶密碼為Admin/zabbix。
zabbix-server安裝好了,下麵需要“接入”其他機器,將它們納入到zabbix-server的管理,下麵是安裝步驟
配置zabbix-agent
啟動zabbix-agent
下麵在zabbix-server頁面上新增這個機器
按下圖填寫即可
接著系結模板
最後點選Update,你就可以在Host目錄中看到所有被監控的機器串列
註意:如果zabbix-agent需要被其他機器呼叫,例如透過zabbix_get獲得監控資訊,需要在防火牆設定“放開10050埠”
假設我們要監控機器192.168.8.5網絡卡em1上的出入口流量,我們可以先在zabbix伺服器上用zabbix_get命令來測試一下,下麵程式碼測試的是輸入流量,註意這裡的輸出是一個累積的流量
監控網路流量的流程為:
-
建立模板
-
建立監控項
建立應用:Configuration->Templates->Create application -
建立監控項:Configuration->Templates->network traffic on em1->Items->Create Item
上圖是入口流量的監控項設定,出口流量監控項network traffic out em1可以一樣設定,成功後你看到的是
-
建立Triggers
Triggers是觸發報警的設定,同樣我們點選Configuration->Templates->network traffic on em1->Triggers->Create trigger來建立Triggers -
註意在設定Expression時,我們可以利用zabbix提供給我們的模板
-
於是,入口流量的觸發值就設定好了,每秒流量超過1048576時就會觸發報警,同理我們可以設定出口流量的觸發值,成功後,我們看到的是
-
建立Graphs
接著,我們再來建立Graphs,Graphs可以以圖形化的方式展示流量資訊,點選Configuration->Templates->network traffic on em1->Graphs->Create graph,建立Graphs的最大好處是我們可以把這些Graphs組合起來形成Screens監控面板,例如下麵這樣下麵是建立Graphs的表單
-
系結Template
至此,我們模板就建立完畢了,最後一步需要把主機和模板關聯起來,點選Configuration->Hosts->Templates->Select建立關聯,然後點選Add -
此時,透過Monitoring->Latest data可以看到網絡卡上的最新資料,同時可以透過Monitoring->Graphs來檢視圖形化的資料
當系統出現異常時,我們需要立即發現,並透過郵件或App的方式通知給維護的同學,這樣整個系統才會掌控在我們手中,Zabbix要做到這一點,需要配置以下3個選項(zabbix雖然很強大,但配置和UI有點繁瑣,這是我不喜歡它的地方):
-
Media types
-
Events
-
User Media
Media types是當產生事件時,以什麼方式進行通知,這裡採用的是Script方式,這種方式的靈活性最大,透過這種方式,我們可以把報警傳送到任何支援Webhook的App上,例如釘釘
Script這種方式的原理是:我們把可執行的指令碼放在zabbix的指定目錄下,當事件發生時,zabbix會自動呼叫該指令碼,可以在/etc/zabbix/zabbix_server.conf中找到指定目錄的路徑
Media types設定如下,意思是在/usr/lib/zabbix/alertscripts下存在一個指令碼dingding.py,當事件發生時,zabbix會呼叫該指令碼,同時會傳入該指令碼3個引數,這3個引數分別是事件的接收人、事件的主題、事件的內容
dingding.py這個指令碼如下,我們先實現一個簡單的版本,也就是把這3個引數輸出到日誌中
設定指令碼的許可權
事件是當某個條件發生時,zabbix所建立的報警物件。在zabbix中,事件發生時和事件恢復時都可以觸發事件,下麵我們來建立一個事件,
可以看到,這裡的事件主題和事件訊息都是系統預設生成的,其中包括時間產生時的必要資訊,同時我把允許事件恢復時通知(Recovery message)打了勾,Conditions標簽頁的內容保持不變,然後我們再來修改Operations標簽裡的內容
這裡的意思是:事件的持續時間是1個小時(3600s),每隔2分鐘(120s)產生一個事件,一共產生10個事件,產生事件時,傳送給Zabbix administrators使用者組中的Admin使用者,最後事件會使用我們剛剛建立的dingding這種Media type
User Meida
事件和Media type建立好後,下麵還需要把它們和指定使用者關聯起來,點選Administration->Users->Media->Add,修改後,點選Update
透過以上步驟,我們已經把zabbix的監控和報警建立起來了,並實操建立了網絡卡的流量監控,現在我們把網路流量的閾值調到小,故意製造一個超出流量的事故,看一下報警是否生效,我們預期是傳送10個報警,傳送完畢後,我們再把閾值調到正常,看下是否會收到恢復訊息。還記得之前寫的那個指令碼嗎,它會把報警內容輸出到日誌檔案中,現在我們檢查下日誌檔案
很顯然,結果符合我們的預期。
以上便是入門zabbix的全部內容,後面的文章我們會具體實現dingding.py報警指令碼,讓你真正的可以在手機上收到報警資訊。
作者:解牛_馮雅傑
連結:http://www.jianshu.com/p/4d3af373e682