Zabbix的監控流程可以簡單描述爲:數據採集-->數據存儲-->數據分析-->數據展示-->監控報警
數據採集:Zabbix通過SNMP、Agent、ICMP、SSH、IPMI等進行數據採集
數據存儲:Zabbix存儲在MySQL上,也可以存儲在其他數據庫
數據展示:web界面展示、(移動APP、java_php開發一個web界面也可以)
數據報警:郵件報警、微信報警、短信報警、報警升級機制
Zabbix的監控配置流程可以簡單描述爲:
告警是由一系列的流程組成,首先是觸發器達到閥值,產生一個事件,接下來由Action對事件信息進行處理,其中包括兩部分:第一部分是發送消息,即將告警信息發送給用戶,第二部分是執行命令,即將事件用命令進行處理,達到對事件故障自動嘗試恢復的效果。
Host groups(主機組)→Hosts(主機)→template(模板)→Applications(監控項組)→Items(監控項)→graph(圖形) →screen (圖形分組)→Triggers(觸發器)→Event(事件)→Actions(處理動作)→Media types(告警升級|1.執行遠程命令2.發送告警郵件)→User groups(用戶組)→Users(用戶)→Medias(告警郵件)
在實際生產使用的時候,Items、Trigger、Graph採用模板來進行監控,模板特點就是可以重複的事情一次完成,修改了模板等於修改了所有調用此模板的主機。這樣可解放運維的雙手
Graph不是必需的,因爲沒有配置圖形,數據獲取並不影響,獲取數據是Items的功能。但是對於使用ZabbixWeb界面用戶來說,沒有圖形等於沒有數據,因此重要的Items必須添加必要的圖形以做可視化展示。如果想集中查看圖形,可以通過screen功能。
1.1添加主機組
建議:對同一屬性的主機或模板,儘量歸納到分組,方便以後管理。分組原則建議如下。
q 以地理位置進行劃分。
q 以業務爲單位劃分組。
q 以機器用途劃分。
q 以系統版本劃分。
q 以應用程序分組。
q 其他方式等。
分組的目的是將同一屬性的主機歸類,如果你不想將新添加的主機歸納爲自定義的分組,可以使用默認的分組。
1. 點擊Configuration→Host groups上的按鈕Create host group,如圖2-1所示。
圖 2‑1
2. 單擊後會出現一個添加新主機組的界面,如圖2-2所示。
圖2-2
在圖2-2中”Group name”是組的名稱:”Host Host in”是選擇那些設備屬於這個新添加的組。
3. 單擊Save保存,新添加的主機組就可以顯示在主機組列表中,如圖2-3所示。
圖2-3
1.2添加模板
監控項、觸發器、圖形、Web、Discovery等都是存在於主機之上的,由於多個主機都會用相同的監控配置,因此,可以對這部分同類的數據進行歸納抽象,即將這些數據做成模板。當我們需要對其他監控數據進行配置的時候,只需要對相對應的主句添加對應的模板即可。
1. 配置模板的步驟爲:單擊→Configuration→Templates→Create template 如圖2-4所示。
group:可以選擇在哪個組創建該模板
import:可以導入模板
圖2-4
2.填入模板名稱和所屬的組,如圖2-5所示。
圖2-5
4. 模板具有繼承的功能(將一個模板在另外一個模板中使用),如圖2-6所示。
圖2-6
搜索當前已經存在的模板,然後單擊Add添加-點擊下面的Add。
5.模板中也可以設置宏,如圖2-6所示。
宏主要是對變量定義,設置宏的作用是方便後面再Items、Trigger中引用,在模板中配置一個宏,在不同的主機對該宏設置不同的變量值,從而達到模板通用的目的。
圖2-6
6.查看新建的模板,如圖2-7所示。
圖2-7
可以看到,Items中已經有32Items了,是繼承與trt-linux-basic模板的。以後會詳細講解如何在模板中添加其他的Items。
1.3添加主機
1. 添加主機的目的是對具體的設備進行監控,步驟爲:依次單擊Configuration→Hosts→Create host,如圖2-8所示。
圖2-8
2.在圖2-8中單擊Create host,出現如圖2-9所示的界面。
圖2-9中各參數的詳細說明如表2-1所示。
圖2-9
表2-1
參數 | 描述 | ||
主機名(Host name) | 輸入一個不重複的主機名。編輯該名稱對應客戶端的配置文件時,主機名這一項必須與此處輸入的值相同。 | ||
訪問名(Visible name) | 如果設置該名字,那麼它將出現在主機列表、地圖等地方。 | ||
羣組(Group in groups) | 選擇主機所屬的羣組。一個主機必須屬於至少一個主機組。 | ||
新建主機組(New group) | 一個新的羣組將被 ,然後自動連接到該主機上。如果爲空,該項將被忽略。 | ||
接口協議(Agent interfaces) | 一個主機支持的主機接口協議包括:Agent、SNMP、JMX、IPMI,如果想增加一個新的接口,單擊”Add”按鈕,然後輸入IP/DNS、連接項、端口等信息。 | ||
IP地址(IP address) | 要監控主機的IP地址(可選項、默認是IP) | ||
DNS名稱(DNS name) | 要監控主機DNS能扣解析的名稱(可選項) | ||
與Agent通信方式(Connect to) | 單擊對應名稱的按鈕 | IP | 連接要監控主機的IP地址(推薦) |
DNS | 要監控主機能夠正常解析的DNS | ||
端口(Port) | TCP協議的端口,Zabbix客戶端使用的默認值是10050 | ||
通過代理服務器進行監控 (Monred by proxy) | 主機可以通過Zabbix服務器或者Zabbix的一個代理去監控客戶端 | ||
狀態(enabled) | 勾選則開啓 |
2. 選擇模板,如圖2-10所示。
1.可以添加多個模板。
2.可以搜索模板進行添加。
圖2-10
3.添加了一個bjstack-template新建的模板,單擊Add保存,然後update更新
1.4添加Graphs
Graphs是將數據展示爲圖像,以視覺化形式展示,Graphs的配置存在於主機和模板中。
1.在所在的主機模板中,選擇Graphs,如圖2-11所示。
圖2-11
2.針對web-node1-192.168.90.12這臺主機上的itmes進行配置Graph 單擊“Create graph”按鈕,如圖2-12所示。
圖2-12
3.出現新建圖形的界面,輸入Name,選擇所需要的Items,如圖2-13所示。
圖2-13
4.如果要查看所有的圖形,單擊Monitoring→Graphs選擇對應的Group、Host、Graph,查看cpu load如圖2-14所示。
圖2-14
1.5添加Screen
Screen將多種信息放在一起展示,便於集中展示某個Host的多個信息,或是將多個Host的同一種信息放在一起顯示,這些信息可以爲Graphs、Maps、Serverinfo等,幾乎涵蓋Zabbix所有的監控信息。
1.通過單擊Configuration-→Screens→Create screen來創建,創建時定義Screen的行數和列數(如圖2-15至圖2-16所示)
圖2-15
圖2-16
2.單擊創建Screen名稱,如圖2-17所示
圖2-17
3.單擊單元格內的Change,選擇選擇cpuload圖形 添加相應的元素,如圖2-18、圖2-19所示
圖2-18
圖2-19
3. 配置好後,通過單擊Monitor→Screen,選擇相應的Screen組,如圖2-20所示。
圖2-20
1.6添加Trigger
基於剛剛的web-node1創建觸發器,選擇對應的Host/Template(模板會自動關聯至主機),創建觸發器CPU Load如圖2-21、圖2-22、圖2-23、圖2-24是對觸發器進行設置的示例
圖2-21
圖2-22
圖2-23
圖2-24
最後效果如圖2-25、圖2-26
圖2-25
圖2-26
推薦更多Zabbix觸發器支持的函數說明:http://pengyao.org/zabbix-triggers-functions.html(來自姚炫偉翻譯)
推薦Zabbix Trigger表達式實例:http://pengyao.org/zabbix-trigger-example-1.html(來自姚炫偉)
添加完觸發器,可以打開Zabbix內置的報警鈴聲,如圖2-27
圖2-27
也可以修改items的報警時間間隔(不是必須),如圖2-28所示
圖2-28
1.7添加Media
步驟爲:登陸Zabbix Web頁面,單擊Administration→Media Type→Create Media Type(右上角)-如圖2-29
圖2-29
用戶可以配置Media,發送告警的方式等,點擊Admin,也可以創建一個新用戶(我這裏只是一個例子)如圖2-30
圖2-30
2.配置一個用戶作爲接收如圖2-31
圖2-31
保存並開啓如圖2-32
圖2-32
1.8.添加Action
配置action,需要如下幾個步驟:
1.在菜單欄中單擊Configuration→Actions。
2.在Event source下拉菜單中選擇事件來源。
3.單擊Create action。
4.設置Action參數,以及報警消息內容。
5.單機Conditions按鈕,設置Action的依賴條件。
6.單擊Operation按鈕,設置執行動作。
1.8.1配置Action
通過菜單Configuration→Actions→Create Action來創建Action 如圖2-33、圖2-34
圖2-33
圖2-34
告警消息內容:
報警主機:{HOST.NAME1}
報警服務: {ITEM.NAME1}
報警Key: {ITEM.KEY1}:{ITEM.VALUE1}
嚴重級別: {TRIGGER.SEVERITY}
恢復消息內容:
恢復主機:{HOST.NAME1}
恢復服務: {ITEM.NAME1}
恢復Key:{ITEM.KEY1}:{ITEM.VALUE1}
1.8.2配置Conditions
條件之間的邏輯運算符
1.不在維護期
2.Trigger狀態爲PROBLEM
3.主機是web-node1-192.168.90.12
4.以上條件必須全部滿足纔可以發送通知,如圖2-35所示例
圖2-35
1.8.3配置Operation
觸發器事件成立後有以下兩種動作。
1.發送消息(send message)
2.執行遠程命令(Remote command)
當然還有很多,比如:增加主機、刪除主機、開啓監控、關鍵監控、鏈接模板、取消模板鏈接等等。
當出現了Trigger狀態改變時,應嘗試自愈,如果無法修復,那麼報警升級發送消息通知相關人員。如圖2-36、圖2-37、圖2-38、圖2-39
圖2-36
告警信息將氛圍兩個等級梯度發送,如下圖2-33、圖2-34
第一梯度:1-2步,遠程執行命令重啓Apache,間隔時間爲60s,發送執行2次知道故障恢復。
第二梯度:3-4步,發送給Admin用戶,間隔時間爲60s,發送兩次,知道故障恢復。
首先要支持遠程執行命令,必須開啓遠程執行命令,以及sudo權限
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
[root@linux-node2 zabbix_agentd.d]# systemctl restart zabbix-agent
[root@linux-node2 ~]# visudo
zabbix ALL=NOPASSWD: /usr/bin/systemctl restart httpd
圖2-37
圖2-38
圖2-39
1.8.4查看報警信息
如果達到閥值Zabbix會執行遠程執行命令(如果不成功)-最後發送告警郵件,如圖2-40、圖2-41
圖2-40
圖2-41