web monitoring(監測)屬於業務監控,用來監控Web站點多方面的可用性,能夠監控Web站點的下載速度、返回碼和響應時間。Zabbix可以檢測HTML中包含的預先定義的字符串,也能夠模擬登陸網站和鼠標的動做,對特定的結果進行比較,例如特定字符串、返回碼等,從而判斷站點服務的可用性。Zabbix支持HTTP和HTTPS協議,並在完成每一步模擬訪問時會對cookie進行保存。 前端
在zabbix中設置Web監控時,須要先定義web scenarios(場景),一個webscenarios是由多個HTTP請求(steps)組成,這些steps(步驟)會按照預先定義的順序執行。和定義監控項同樣,web scenarios也能夠在主機或模板級別定義。 ios
一、web監控項 web
Web 監控項主要有兩種:Scenario items 和Scenario step items。這些監控項默認歷史保存時間爲30天,趨勢保存時間爲90天。 正則表達式
1.1 Scenario items express
Web Scenario建立完成後Zabbix會自動添加下面的監控項,並鏈接它們到已經選中的應用。 瀏覽器
※ Download speed for scenario<Scenario>:該監控項收集整個Scenario有關的平均下載速度數據,單位爲bytes per second。監控項的key是:web.test.in[Scenario,,bps],類型是:Numeric(float)。 服務器
※ Failed step of scenario<Scenario>:該監控項將顯示整個Scenario中失敗的step的數量,若是全部step都執行成功返回0。監控項的key是:web.test.fail[Scenario],類型是: Numeric(unsigned)。 cookie
※ Last error message of scenario<Scenario>:該監控項返回Scenario的最後的錯誤信息文本,若是Scenario中有失敗的step時會保存一個新的值,若是全部step都成功執行時沒有新的值被保存。監控項的key是:web.test.error[Scenario],類型是: Character。 網絡
Scenario items也能夠用來建立觸發器和定義通知條件。 app
例如:
※ 建立一個Web ScenarioFailed的觸發器時, 觸發器表達式能夠定義爲: {host:web.test.fail[Scenario].last()}<>0
※ 建立一個Web ScenarioFailed的觸發器時,在觸發器名稱中使用問題的描述信息。觸發器名稱能夠定義爲:
Web scenario "Scenario" failed: {ITEM.VALUE}
觸發器表達式能夠定義爲:
{host:web.test.error[Scenario].strlen()}>0 and{host:web.test.fail[Scenario].min()}>0
※ 建立一個Webapplication is slow的觸發器時,觸發器表達式能夠定義爲:
{host:web.test.in[Scenario,,bps].last()}<10000
在實際環境中,請把Scenario 替換成你定義的場景的實際名稱。
1.2 Scenario step items
在Scenario中每一個step建立完成後Zabbix會自動添加下面的監控項,並鏈接它們到選中的應用。
※ Download speed for step<Step> of scenario <Scenario>:該監控項收集step有關的平均下載速度數據,單位爲 bytesper second。監控項的key是: web.test.in[Scenario,Step,bps],類型是: Numeric(float)。
※ Response time for step<Step> of scenario <Scenario>:該監控項收集step有關的響應時間的數據,單位爲秒。響應時間是從請求開始計時,直到全部信息傳輸完畢。監控項的key是:web.test.time[Scenario,Step,resp],類型是:Numeric(float)。
※ Response code for step <Step>of scenario <Scenario>:該監控項顯示step的返回代碼,如50x、40x等在實際環境中應該重點監控。監控項的key是:web.test.rspcode[Scenario,Step],類型是:Numeric(unsigned)。
在建立觸發器時也可使用這些Scenario step item。例如,建立一個ZabbixGUI login is too slow的觸發器時,觸發器表達式能夠定義爲:
{zabbix:web.test.time[ZABBIX GUI,Login,resp].last()}>3
二、使用變量
配置Web 監控時在Scenario或step級別均可以使用Variables(變量),實際上就是用戶自定義的宏變量。在scenario級別定義的變量能夠在steps中引用,例如URL、Post變量等。在step級別定義的宏變量能夠在GET或POST函數中使用,step級別定義的變量能夠覆蓋scenario級別的變量或上一個step中定義的變量。
變量定義的格式爲:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<regular expression>。
例如{username}=Alexei,{password}=kj3h5kJ34bd,{sid}=regex:name="sid"value="([0-9a-z]{16})" 等。若是是以regex開始,那它的後面是一個正則表達式,會在web頁面中搜索,若是發現,會將匹配的值保存到變量中。在step中應用macros時,例如{username}、{password}、{hostid}等,Zabbix會自動替換成實際的值。
在配置變量時,還可使用Host.* 宏變量和用戶自定義的宏變量。須要注意的是變量不能通過URL編碼處理。
三、配置web監控
在配置–> 主機/模板頁面中,點擊須要建立web 監控的主機或模板中的web連接,在web監測頁面的右上角點擊 建立web場景按鈕,進入web 監控配置頁面
場景標籤中各配置參數的含義以下:
名稱:惟一的場景名稱
應用集:選擇一個場景歸屬的監控項組
新的應用集:輸入一個場景歸屬的新監控項組的名稱
數據更新間隔:執行的時間間隔
嘗試次數:用於執行web 場景步驟嘗試的次數。有時候會由於網絡出現問題(超時、鏈接丟失等)的狀況下能夠重複執行步驟幾回,該設置會影響場景中的每個步驟。最多能夠指定10次,默認值爲1。須要注意的是zabbix不會由於一個錯誤響應代碼或一個必須的字符串不匹配而重複執行步驟
客戶端:選擇一個瀏覽器客戶端,當一個網站針對不一樣的瀏覽器返回不一樣的內容時很是有用。在這裏也可使用用戶定義的宏變量
HTTP代理:指定一個HTTP 代理。使用的格式爲:http://[username[:password]@]proxy.mycompany.com[:port],默認使用端口1080。若是指定http_proxy、HTTPS_PROXY等代理環境變量,將會覆蓋proxy相關的環境變量。須要注意的是HTTP代理只支持簡單的認證。在這裏也可使用用戶定義的宏變量
變量:場景級別的變量列表
頭:當執行請求時HTTP頭將被髮送。Headers使用HTTP協議的語法列出,這將設置cURL選項CURLOPT_HTTPHEADER。例如:Accept-Charset:utf-8,Accept-Language: en-US,Content-Type: application/xml; charset=utf-8。在這裏可使用Host.*和用戶定義的宏變量
已啓用:勾選此項爲啓用該Web場景
步驟標籤配置頁面以下所示,步驟配置頁面中各參數的含義以下
名稱:惟一的步驟名稱
URL:須要監控的URL,支持HTTP或HTTPS協議。GET參數能夠直接寫在URL中,也可使用宏變量,長度不能超過2048個字符
Post:HTTP請求中的 POST變量。例如id=2345&userid={user},若是 {user} 是在web scenario中定義的宏變量,在step執行時會自動替換相應的值。這個變量會原樣發送,不會進行URL編碼
變量:步驟級別的變量列表
頭(Headers):當執行請求時HTTP headers將被髮送。Headers使用HTTP協議的語法列出。步驟級別上定義的Headers會覆蓋scenario級別的Headers。在這裏可使用HOST.*和用戶定義的宏變量。這將設置cURL選項CURLOPT_HTTPHEADER
跟隨跳轉:勾選此項容許HTTP redirects(重定向)。這將設置cURL選項CURLOPT_FOLLOWLOCATION
僅獲取頭信息:勾選此項僅接收HTTP響應的headers。這將設置cURL選項CURLOPT_NOBODY
超時:超過設置的秒數後Zabbix不會再處理URL。實際上這個參數定義了最大的鏈接時間和完成HTTP請求的最大時間。所以Zabbix在步驟中處理URL不會超出2倍的設置時間
要求的字串:須要的正則表達式。除非接收的HTML中的內容匹配正則表達式,不然step將執行失敗。若是該字段爲空時不執行檢測。這裏須要注意不能引用在Zabbix 前端頁面中建立的正則表達式。在這裏也可使用宏變量
要求的狀態碼:設置指望的HTTP狀態碼列表,例如200,201,202-229。若是Zabbix收集的狀態碼在這個列表中沒有時step將執行失敗。若是該字段爲空時不執行檢測。在這裏也可使用宏變量
配置第一個步驟:
配置第二個步驟:
認證標籤配置頁面以下所示,認證標籤配置頁面中各參數的含義以下:
HTTP 認證:身份驗證選項。包括:
無:不使用身份驗證。
基礎的:使用基自己份驗證。
NTLM:使用NTLM(Windows NT LAN Manager)身份驗證。
選擇基礎的或NTLM時頁面會出現用戶名和密碼的輸入字段,在用戶名和密碼字段中可使用宏變量
SSL驗證對端:勾選此項爲驗證web服務器的SSL證書。服務器證書會自動從系統CA的存儲位置得到。你可使用Zabbixserver或 proxy server的配置文件中設置參數SSLCALocation保存證書。這將設置cURL選項CURLOPT_SSL_VERIFYPEER。
SSL 驗證主機:勾選此項爲驗證web服務器證書匹配的Common Name 字段或Subject Alternate Name 字段。這將設置cURL選項CURLOPT_SSL_VERIFYHOST。
SSL 證書文件:用於客戶端身份驗證的 SSL 證書文件的名稱。證書文件必須是 PEM1 格式。若是證書文件還包含私鑰,則將 SSL Key文件字段留空。若是對密鑰進行加密,在 SSL Key密碼字段中指定密碼。Zabbixserver或 proxy server的配置文件中設置參數SSLCALocation保存證書文件。在這裏可使用HOST.*和用戶定義的宏變量。這將設置cURL選項CURLOPT_SSLCERT。
SSL 祕鑰文件:用於客戶端身份驗證 SSL 私鑰文件的名稱。私鑰文件必須是PEM1格式。Zabbix server或 proxy server的配置文件中設置參數SSLCALocation保存證書文件。在這裏可使用HOST.*和用戶定義的宏變量。這將設置cURL選項CURLOPT_SSLKEY。
SSL 祕鑰密碼:SSL 私鑰文件密碼。在這裏可使用用戶定義的宏變量。這將設置cURL選項CURLOPT_KEYPASSWD。
這裏的例子選擇認證無
當全部的步驟添加後,點擊添加按鈕保存全部的配置。而後到監測中–> 最新數據頁面中瀏覽items的數據以及圖形