web monitoring(監測)屬於業務監控,用來監控Web站點多方面的可用性,可以監控Web站點的下載速度、返回碼和響應時間。Zabbix能夠檢測HTML中包含的預先定義的字符串,也可以模擬登錄網站和鼠標的動作,對特定的結果進行比較,例如特定字符串、返回碼等,從而判斷站點服務的可用性。Zabbix支持HTTP和HTTPS協議,並在完成每一步模擬訪問時會對cookie進行保存。
在zabbix中設置Web監控時,需要先定義web scenarios(場景),一個webscenarios是由多個HTTP請求(steps)組成,這些steps(步驟)會按照預先定義的順序執行。和定義監控項一樣,web scenarios也可以在主機或模板級別定義。
1、web監控項
Web 監控項主要有兩種:Scenario items 和Scenario step items。這些監控項默認歷史保存時間為30天,趨勢保存時間為90天。
1.1 Scenario items
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)。
※ Last error message of scenario<Scenario>:該監控項返回Scenario的最后的錯誤信息文本,如果Scenario中有失敗的step時會保存一個新的值,如果所有step都成功執行時沒有新的值被保存。監控項的key是:web.test.error[Scenario],類型是: Character。
Scenario items也可以用來創建觸發器和定義通知條件。
例如:
※ 創建一個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
2、使用變量
配置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編碼處理。
3、配置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的數據以及圖形