環境說明:
node1:zabbix服務器
IP地址:172.16.4.100
node2:zabbix客戶端
IP地址:172.16.4.101
配置環境:監控node2主機的網卡流量(流入、流入),以及報警和報警升級
文章概覽
1、使用zabbix監控客戶端主機
1、1 客戶端設置
1、2 定義主機組
1、3 定義主機
1、4 定義應用集
1、5 定義監控項目
1、6 定義出圖
2、報警設置
2、1 觸發器
2、2 示警媒介Medias:
2、3 用戶Users:
2、4 動作
2、5 擬大流量,驗證報警
3、執行命令&報警升級:
3、1 被監控端設置
3、2 Zabbix設置
4、維護時間:
1、使用zabbix監控客戶端主機
1、1 客戶端設置
安裝相關軟件包
[root@node2 zabbix-2.4.5]# yum installzabbix-2.4.5-1.el6.x86_64.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpmzabbix-sender-2.4.5-1.el6.x86_64.rpm
修改配置文件指明zabbix服務器地址
[root@node2 zabbix-2.4.5]# vim/etc/zabbix/zabbix_agentd.conf 85 Server=172.16.4.100 #設置zabbix服務器地址 137 Hostname=node2 #設置主機名
設置完成啓動服務,如果可以正常監聽10050端口說明服務正常
[root@node2 zabbix-2.4.5]# service zabbix-agentstart [root@node2 zabbix-2.4.5]# netstat -lnt | grep10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN tcp 0 0 :::10050 :::* LISTEN
1、2 定義主機組
主機組介紹:
主機組主要用於對主機的分組操作,可以根據地域、業務、實現的功能等進行
創建主機組:
在 組態-->主機羣組 -->創建主機羣組,可以打開創建主機組頁面,只需要填寫主機組的名字,即可完成創建。
定義完成之後,就會出現在組態中的主機羣組中
1、3 定義主機
主機介紹:
主機是指網絡上可以被監控的對象,包括物理機、虛擬機、路由器、打印機、java虛擬機進程等;不過需要注意的時,不同主機其支持的監控方式可能會不盡相同,如路由器交換機不支持zabbix agent就只能使用snmp協議監控,java虛擬機只能使用JMX監控方式。
創建主機:
定義一個監控的主機:在組態--> 主機 --> 創建主機可以打開如下界面添加主機
添加完成,就出現了node2主機,但是項目,觸發器等都沒有設置,需要在下面的過程中一個一個創建
1、4 定義應用集
應用集介紹:
應用集主要是對監控項的分組操作,可以根據一下標準劃分。
基礎監控:
cpu、memory、noprocs、nofiles、disk usage等
應用監控:
Tomcat、MogileFS、mysql、mysql等
運營數據監控:
如流量、註冊人數等
應用集創建:
在組態-->主機--> 中選擇要創建應用集的主機,點擊應用集,進去後選擇點擊創建應用集,可以創建新的應用集
創建應用集特別簡單,只需要輸入名稱,就可以添加了
添加完成這裏就有顯示了,以後在創建項目時,就可以將項目關聯到應用集中
1、5 定義監控項目
項目(item)介紹:
(1)項目是zabbix服務器用於監控一個特定對象上的一個特定指標,並負載針對其收集相關的監控數據;比如cpu每分鐘的平均負載是一個項目,某特定網絡接口接收報文又是一個項目。
(2)每一個項目都擁有相應的類型,例如“Zabbix agent”、“SNMP”、“External check”、“IPMI agent”、“SSH agent”、“JMX agent”等,Zabbix服務器會使用相應類型的協議或機制同被監控端通信
Item key介紹:
(1)每一個項目都有其專用的key;
(2)Zabbix服務器在與被監控端通信時就使用相應的協議或機制去詢問被監控端這個key的值,被監控端則調用與此key對應的監控腳本獲取數據並返回給服務器端;
(3)Key的命名只能使用“0-9a-zA-Z_-.”(引號中的內容)等字符,且可以 接受參數,其命令習慣如system.cpu.load[<cpu>,<mode>],其中,中括號中的內容爲參數,且分別可以按次序使用$1、$2、…進行引用, 此示例中僅有兩個參數;
zabbix有許多預定義的key,詳細信息的獲取地址:
https://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/zabbix_agent
定義一個項目:
在組態-->主機--> 中選擇要創建項目的主機,點擊項目,然後點擊創建項目即可
設置相關參數,然後點擊add就可以添加對應的項目
這裏定義一個監控eth0網卡出站的流量
在添加一個監控eth0網卡流量入站的項目
添加完成如下所示:
補充:一些常用的監控項目
網卡流量相關:
net.if.in[if,<mode>] #入站流量 if:接口,如eht0 mode:bytes(字節), packets(包的個數), errors(發生錯誤的包), dropped(丟棄的包) net.if.out[if,<mode>] #出戰流量 net.if.total[if.<mode>] #監控總量
端口相關:
net.tcp.listen[port] #指定監聽的端口 net.tcp.port[<ip>,port] #ip+端口 net.tcp.service[service,<ip>,<port>] #指明監聽tcp服務,ip,端口 net.udp.listen[port] #監聽的udp地址
進程相關:
kernel.maxfiles #內核所運行打開的最大文件數 kernel.maxproc #內核允許運行的最大進程數
CPU相關:
system.cpu.intr #cpu中斷次數 system.cpu.load[<cpu>,<mode>] #cpu負載 system.cpu.num[<type>] #cpu顆數 system.cpu.switches #上下文切換的次數 system.cpu.util[<cpu>,<type>,<mode>] #cpu利用率
磁盤IO或文件系統相關:
vfs.dev.read[<device>,<type>,<mode>] #設備讀取 vfs.dev.write[<device>,<type>,<mode>] #設備寫入 vfs.fs.inode[fs,<mode>] #監控inode可用量
1、6 定義出圖
點擊主機列表中的圖形,就會出現圖形創建按鈕,點擊即可創建圖形
定義圖形參數,可以將多個項目的值定義在一張圖形上面顯示出來
設置完成對應的圖形參數,不要急着點添加,可以通過預覽功能查看,圖形是不是自己想要的效果,然後再點添加不遲,下面就是剛剛定義的圖形預覽圖,如果沒有問題就點擊添加。
2、報警設置
2、1 觸發器
觸發器介紹:
(1)“監控項”僅負責收集數據,而通常收集數據的目的還包括在 某指標對應的數據超出合理範圍時給相關人員發送告警信息, “觸發器”正是用於爲監控項所收集的數據定義閾值
(2)每一個觸發器僅能關聯至一個監控項,但可以爲一個監控項同時使用多個觸發器;事實上,爲一個監控項定義多個具有不同閾值的觸發器,可以實現不同級別的報警功能
(3)一個觸發器由一個表達式構成,它定義了監控項所採取的數據的一個閾值
(4)一旦某次採集的數據超出了此觸發器定義的閾值,觸發器狀態將會轉換爲“Problem”;而當採取的數據再次迴歸至合理範 圍內時,其狀態將重新返回到“OK”
觸發器表達式:
基本的觸發器表達式格式如下所示
{<server>:<key>.<function>(<parameter>)}<operator><constant>
server:主機名稱;
key:主機上關係的相應監控項的key;
function:評估採集到的數據是否在合理範圍內時所使用的函數,其評估過程可以根據採取的數據、當前時間及其它因素進行;
目前,觸發器所支持的函數有avg、count、change、date、dayofweek、delta、diff、iregexp、last、max、min、nodata、 now、sum等
parameter:函數參數;大多數數值函數可以接受秒數爲其參數,而如果在數值參數之前使用“#”做爲前綴,則表示爲最近幾次的取值,如sum(300)表示300秒內所有取值之和,而sum(#10)則表示最近10次 取值之和;
此外,avg、count、last、min和max還支持使用第二個參數,用於完成時間限定;例如,max(1h,7d)將返回一週之前的最大值;
Operator:表達式所支持的運算付及其功能如下表所示:
觸發器間的依賴關係:
在一個網絡中,主機的可用性之間可能存在依賴關係:例如,當某網關主機不可用時,其背後的所有主機都將無法正常訪問,如果所有主機都配置了觸發器並定義了相關的通知功能,相關人員將會接收到許多告警信息,這既不利於快速定位問題,也會浪費資源,正確定義的觸發器依賴關係可以避免類似情況的發生,它將使 用通知機制僅發送最根本問題相關的告警
注意:目前zabbix不能夠直接定義主機間的依賴關係,其依賴關係僅能通過觸發器來定義
定義riggers(觸發器):
定義觸發器,就需要寫表達式及對應的項的值超過了指定標準就報告事件
生成後的表達式,如下所示,只不過添加的時候由於沒有“>”所以是將“=”改爲的“>”,嚴重級別定義,可以根據自己設置的值進行判斷,這裏定義爲一般嚴重
在圖形顯示中,出現了觸發器應該出現的線條,只要流量超過了這個線條,就會進行事件通知(需要定義報警動作)
2、2 示警媒介Medias:
示警媒介介紹:
在zabbix中,媒介指發送通知信息的通道,其通常有以下幾種類型
(1)E-mail:電子郵件,即通知郵件的方式傳送通知信息;
(2)SMS:手機短信,即通過連接至zabbix服務器GSM Modem發送通知;
(3)Jabber:jabber消息;Jabber是一個開放的、基於XML的協 議,能夠實現基於Internet或LAN的即時通訊服務;
(4)自定義的通知腳本:以上方式不能滿足需求時,zabbix可以調 用位於其配置文件“AlertScriptsPath”變量所定義的腳本查找 目錄中的腳本來完成通知功能;
定義一個示警媒介:
定義一個示警媒介:在管理 -->示警媒介類型 中創建一個類型
定義一個本地發送郵件的示警,這裏的示警方式選擇郵件,郵件服務器選擇本機,發件人設置爲zabbix@localhost
2、3 用戶Users:
這裏定義用戶主要是定義收件人地址,不做其他說明;郵件接收者是zabbix用戶,其一般會有郵箱地址
創建用戶:
在 管理-->用戶 中選擇創建用戶
在用戶界面填寫,用戶名,主機組,密碼,等相關設置,具體設置看個人喜好
打開時間示警媒介頁面,然後點擊添加出現如下頁面:定義類型爲自己剛剛定義的localsend mail,收集人爲root@local,時間7x24小時,接受各種信息的報警
設置完成示警,界面如下所示
許可權,這個界面可以不用管,因爲用戶的權限是應用與用戶組的
2、4 動作
動作介紹:
在配置好監控項和觸發器之後,一旦正常工作中的某觸發器狀態發生改變,一般意味着有異常情況發生,此時通常需要 採取一定的動作(action),如告警或者執行遠程命令等,並非所有的觸發器狀態發生改變的場景都需要對其進行干預, 如轉變爲“OK”狀態時,相應地,如果觸發器的狀態轉變爲 “Problem”,就需要告知所有關心其相關監控指標的人員了。
實現zabbix的通知功能,一般需要兩個步驟:
(1)定義所需的“媒介(media)”:通常指發送信息的途徑,如郵件、Jabber和SMS等;
(2)配置一個“動作(action)”:發送信息至某“媒介”;
動作由“條件”和“操作”組成,它的邏輯爲當“條件”滿足時,就執行相應的“操作”“發送通知”和“執行遠程命令”是兩個最基本的操作
定義一個動作Actions:
在組態-->動作中創建一個動作
定義如果有事件發生:發送郵件的格式,也可以啓用恢復信息,表示一旦故障解決再次發送消息
定義觸發條件,觸發器的名字是指定的觸發器時,就滿足條件,計算方式與/或 只要A/B/C三個條件同時滿足,就觸發動作,發送郵件
定義動作操作:定義將郵件發送給那個用戶,添加動作操作之後如下所示,如果沒有問題,就可以點添加了
添加完成如下所示:
2、5 擬大流量,驗證報警
模擬流量的方法可以使用hping命令,持續ping上10秒左右流量即可突破觸發值
[root@node1 ~]# hping 172.16.4.101 --faster
持續一會就會有事件發生,如果動作爲正常,則表達郵件已經發送出去了
登錄zabbix服務器,使用mail命令就可以查看收到的郵件
[root@node1 ~]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 2 messages 2 new >N [email protected] Tue May 2623:32 23/1046 "PROBLEM: inbound traffic warning" N 2 [email protected] Tue May 26 23:39 23/1046 "PROBLEM: inbound traffic warning" & 1 Message 1: From [email protected] Tue May 26 23:32:00 2015 Return-Path: <[email protected]> X-Original-To: root@localhost Delivered-To: [email protected] From: <[email protected]> To: <[email protected]> Date: Tue, 26 May 2015 23:31:59 +0800 Subject: PROBLEM: inbound traffic warning Content-Type: text/plain; charset="UTF-8" Status: R Trigger: inbound traffic warning Trigger status: PROBLEM Trigger severity: Average Trigger URL: Item values: 1. inbound traffice (node2:net.if.in[eth0,bytes]):422936 2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN* 3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN* Original event ID: 165&
3、執行命令&報警升級:
示例:監控web服務器80端口狀態,如果檢測到端口關閉,則發送啓動命令給web服務器,如果還是無法啓動則發送郵件報警。
3、1 被監控端設置
被監控端需要開啓運行服務器端執行遠程命令
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #表示允許服務器端運行遠程命令 LogRemoteCommands=1 #將運行的命令記錄到日誌中 [root@node2 ~]# service zabbix-agent restart
授權zabbix可以在所有主機運行所有命令
[root@node2 ~]# visudo zabbix ALL=(ALL) NOPASSWD:ALL #Defaults requiretty #默認開啓,意思爲所有sudo命令必須通過tty進行,而sudo是遠程的所以需要關閉
3、2 Zabbix設置
定義一個新的監控項,監控http server
定義觸發器
生成的表達式如下
定義完成之後,關閉node2主機的httpd服務,然後再zabbix監控的首頁就可以看到相關的報警
創建一個動作
定義觸發條件:
定義第一個觸發操作爲對被監控端發送命令
定義3~5步發送郵件
這個時候就定義好了
添加完成動作如下所示:
驗證,關閉httpd服務,過上七八秒在查看狀態就自動啓動了
[root@node2 ~]# service httpd stop Stopping httpd: [ OK ] [root@node2 ~]# service httpd status httpd (pid 38884) is running...
4、維護時間:
在維護時間內的服務器發生故障,是不會報警的,定義方式如下
需要在報警條件中添加非在維護期間,否則還是會報警,不過此項默認就已經添加了
相關內容:
(1)Zabbix2.4.5安裝配置:http://ximenfeibing.blog.51cto.com/8809812/1670988
(2)Zabbix客戶端監控+報警:http://ximenfeibing.blog.51cto.com/8809812/1670999
(3)Zabbix宏設置:http://ximenfeibing.blog.51cto.com/8809812/1671024
(4)使用zabbix監控web:http://ximenfeibing.blog.51cto.com/8809812/1671032
(4)Zabbix用戶參數配置:http://ximenfeibing.blog.51cto.com/8809812/1671039
(6)Zabbix模版+網絡發現:http://ximenfeibing.blog.51cto.com/8809812/1671041
(7)Zabbix分佈式監控proxy實現:http://ximenfeibing.blog.51cto.com/8809812/1671048