node1:zabbix服務器
java
IP地址:172.16.4.100
node
node2:zabbix客戶端mysql
IP地址:172.16.4.101web
配置環境:監控node2主機的網卡流量(流入、流入),以及報警和報警升級
sql
文章概覽
vim
一、使用zabbix監控客戶端主機
一、1 客戶端設置
一、2 定義主機組
一、3 定義主機
一、4 定義應用集
一、5 定義監控項目
一、6 定義出圖
二、報警設置
二、1 觸發器
二、2 示警媒介Medias:
二、3 用戶Users:
二、4 動做
二、5 擬大流量,驗證報警
三、執行命令&報警升級:
三、1 被監控端設置
三、2 Zabbix設置
四、維護時間:
bash
安裝相關軟件包服務器
[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端口說明服務正常dom
[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
主機組介紹:
主機組主要用於對主機的分組操做,能夠根據地域、業務、實現的功能等進行
建立主機組:
在 組態-->主機羣組 -->建立主機羣組,能夠打開建立主機組頁面,只須要填寫主機組的名字,便可完成建立。
定義完成以後,就會出如今組態中的主機羣組中
主機介紹:
主機是指網絡上能夠被監控的對象,包括物理機、虛擬機、路由器、打印機、java虛擬機進程等;不過須要注意的時,不一樣主機其支持的監控方式可能會不盡相同,如路由器交換機不支持zabbix agent就只能使用snmp協議監控,java虛擬機只能使用JMX監控方式。
建立主機:
定義一個監控的主機:在組態--> 主機 --> 建立主機能夠打開以下界面添加主機
添加完成,就出現了node2主機,可是項目,觸發器等都沒有設置,須要在下面的過程當中一個一個建立
應用集介紹:
應用集主要是對監控項的分組操做,能夠根據一下標準劃分。
基礎監控:
cpu、memory、noprocs、nofiles、disk usage等
應用監控:
Tomcat、MogileFS、mysql、mysql等
運營數據監控:
如流量、註冊人數等
應用集建立:
在組態-->主機--> 中選擇要建立應用集的主機,點擊應用集,進去後選擇點擊建立應用集,能夠建立新的應用集
建立應用集特別簡單,只須要輸入名稱,就能夠添加了
添加完成這裏就有顯示了,之後在建立項目時,就能夠將項目關聯到應用集中
項目(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>],其中,中括號中的內容爲參數,且分別能夠按次序使用$一、$二、…進行引用, 此示例中僅有兩個參數;
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 觸發器
(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不可以直接定義主機間的依賴關係,其依賴關係僅能經過觸發器來定義
定義觸發器,就須要寫表達式及對應的項的值超過了指定標準就報告事件
生成後的表達式,以下所示,只不過添加的時候因爲沒有「>」因此是將「=」改成的「>」,嚴重級別定義,能夠根據本身設置的值進行判斷,這裏定義爲通常嚴重
在圖形顯示中,出現了觸發器應該出現的線條,只要流量超過了這個線條,就會進行事件通知(須要定義報警動做)
示警媒介介紹:
在zabbix中,媒介指發送通知信息的通道,其一般有如下幾種類型
(1)E-mail:電子郵件,即通知郵件的方式傳送通知信息;
(2)SMS:手機短信,即經過鏈接至zabbix服務器GSM Modem發送通知;
(3)Jabber:jabber消息;Jabber是一個開放的、基於XML的協 議,可以實現基於Internet或LAN的即時通信服務;
(4)自定義的通知腳本:以上方式不能知足需求時,zabbix能夠調 用位於其配置文件「AlertScriptsPath」變量所定義的腳本查找 目錄中的腳原本完成通知功能;
定義一個示警媒介:
定義一個示警媒介:在管理 -->示警媒介類型 中建立一個類型
定義一個本地發送郵件的示警,這裏的示警方式選擇郵件,郵件服務器選擇本機,發件人設置爲zabbix@localhost
這裏定義用戶主要是定義收件人地址,不作其餘說明;郵件接收者是zabbix用戶,其通常會有郵箱地址
建立用戶:
在 管理-->用戶 中選擇建立用戶
在用戶界面填寫,用戶名,主機組,密碼,等相關設置,具體設置看我的喜愛
打開時間示警媒介頁面,而後點擊添加出現以下頁面:定義類型爲本身剛剛定義的localsend mail,收集人爲root@local,時間7x24小時,接受各類信息的報警
設置完成示警,界面以下所示
許可權,這個界面能夠不用管,由於用戶的權限是應用與用戶組的
二、4 動做
在配置好監控項和觸發器以後,一旦正常工做中的某觸發器狀態發生改變,通常意味着有異常狀況發生,此時一般須要 採起必定的動做(action),如告警或者執行遠程命令等,並不是全部的觸發器狀態發生改變的場景都須要對其進行干預, 如轉變爲「OK」狀態時,相應地,若是觸發器的狀態轉變爲 「Problem」,就須要告知全部關心其相關監控指標的人員了。
實現zabbix的通知功能,通常須要兩個步驟:
(1)定義所需的「媒介(media)」:一般指發送信息的途徑,如郵件、Jabber和SMS等;
(2)配置一個「動做(action)」:發送信息至某「媒介」;
動做由「條件」和「操做」組成,它的邏輯爲當「條件」知足時,就執行相應的「操做」「發送通知」和「執行遠程命令」是兩個最基本的操做
在組態-->動做中建立一個動做
定義若是有事件發生:發送郵件的格式,也能夠啓用恢復信息,表示一旦故障解決再次發送消息
定義觸發條件,觸發器的名字是指定的觸發器時,就知足條件,計算方式與/或 只要A/B/C三個條件同時知足,就觸發動做,發送郵件
定義動做操做:定義將郵件發送給那個用戶,添加動做操做以後以下所示,若是沒有問題,就能夠點添加了
添加完成以下所示:
模擬流量的方法可使用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 1zabbix@localhost.loc Tue May 2623:32 23/1046 "PROBLEM: inbound traffic warning" N 2 zabbix@localhost.loc Tue May 26 23:39 23/1046 "PROBLEM: inbound traffic warning" & 1 Message 1: From zabbix@localhost.localdomain Tue May 26 23:32:00 2015 Return-Path: <zabbix@localhost.localdomain> X-Original-To: root@localhost Delivered-To: root@localhost.localdomain From: <zabbix@localhost.localdomain> To: <root@localhost.localdomain> 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&
示例:監控web服務器80端口狀態,若是檢測到端口關閉,則發送啓動命令給web服務器,若是仍是沒法啓動則發送郵件報警。
被監控端須要開啓運行服務器端執行遠程命令
[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是遠程的因此須要關閉
定義一個新的監控項,監控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...
在維護時間內的服務器發生故障,是不會報警的,定義方式以下
須要在報警條件中添加非在維護期間,不然仍是會報警,不過此項默認就已經添加了
相關內容:
(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