linux運維之ZABBIX通過自帶web檢測功能檢測網站是否正常?
Web 監控
您可以使用 Zabbix 對多個網站進行可用性方面監控:
若要使用Web監控,必須編譯(configured)安裝時加入cURL (libcurl) 庫支持要使用 Web 監控,您需要定義 web 場景。Web 場景包括一個或多個 HTTP 請求或“步驟”。Zabbix 服務器根據預定義的命令周期性的執行這些步驟,如果主機是通過Proxy代理監控的話,這些步驟將由proxy代理執行。
從 Zabbix2.2 開始,Web 場景和 Items,Triggers 等一樣,是依附在 Hosts/Templates 上的。這意味著 web 場景也可以創建到一個模板里,然后應用于多個主機
任何web場景都會收集下列數據:
整個場景中所有步驟的平均下載速度失敗的步驟數量最近的錯誤信息對于web場景的所有步驟,都會收集下列數據:
平均下載速度響應時間HTTP狀態碼更多詳情,請參見 web monitoring items.
執行 web 場景收集的數據保存在數據庫中。數據自動用于圖形、觸發器和通知。
Zabbix 還支持獲取HTML內容中是否存在設置的字符串。還可以模擬登錄動作和模擬鼠標單擊。
Zabbix web 監控同時支持 HTTP 和 HTTPS。當運行 web 場景時,Zabbix 將選擇跟蹤重定向(請參見下面的選擇跟蹤重定向)。重定向硬編碼的最大數量為 10 (使用 cURL 選項 CURLOPT_MAXREDIRS)。在執行 web 場景時,所有 Cookie 都會保存。
web 監控使用 HTTPS 協議請參閱 已知問題
配置 Web 場景配置 web 場景:
轉到: 配置 (Configuration)–>主機 (或者 模板 )點擊主機 (host)/ 模板 (template) 行中的 Web點擊右上角 創建 web 場景 (或點擊場景名字進行編輯現有的場景)在場景的表單中輸入參數場景選項卡允許您配置此 Web 場景的通用參數。
所有必填字段都用紅色型號標注。
場景參數:
參數說明 主機 (Host) 場景所屬的主機名或模板的名字。 名稱 (Name) 唯一的場景名稱。Zabbix 2.2 開始,這個名字支持用戶宏和 {HOST.*} 宏 。 應用 (Application) 選擇一個場景屬于的應用 。Web 場景監控項在 監測中 (Monitoring)→最新數據 (Latest data) 欄中將會分組在選擇的應用中。 新的應用 (New application) 對場景創建個新的應用名字。 更新間隔 (Update interval) (秒) Web場景時間間隔,以秒為單位。支持時間的后綴,例如30s,1m,2h,1d,自從Zabbix 3.4.0 開始。支持用戶宏,自從Zabbix 3.4.0 開始。注意,如果用戶使用宏變量來改變值(如5m → 30s),將在下一個執行周期執行更新(這是一個比較好例子) 。 重試次數 (Attempts) 嘗試執行 web 場景中步驟的次數。對于網絡問題(超時,沒有連接,等等) Zabbix 可以多次重復執行步驟。這個數字對場景的中的所有步驟都會生效。嘗試次數最大可以設置為 10,默認值為 1。 注意 : Zabbix 不會因為一個錯誤的響應代碼或者期望的字符串沒有出現就會觸發這個重試。Zabbix 2.2 開始支持此參數。 代理 (Agent) 選擇一個客戶端。zabbix 會模擬選擇的瀏覽器,當一個網站對不同的瀏覽器返回不同的內容的時候是非常有用的。zabbix 2.2 開始 ,這塊可以使用用戶自定義宏。 HTTP 代理 (HTTP proxy) 您可以指定要使用一個 HTTP 代理,使用格式 http://[username[:password]@]proxy.mycompany.com[:port]默認使用 1080 端口。如果指定,代理將覆蓋代理相關聯的環境變量,比如 http_proxy HTTPS_PROXY。如果沒有指定,那么代理將不會覆蓋代理相關的環境變量。輸入的值是通過“是 (as is)”, 不需要進行完整性檢查。你也可以輸入 SOCKS 代理地址。如果您指定了錯誤的協議,連接會失敗,項目將成為不受支持的。沒有指定的協議,代理將被視為一個 HTTP 代理、\ 注意 : HTTP 代理僅支持簡單身份驗證。此字段中可以使用用戶宏。Zabbix 2.2 開始支持此參數。 變量 (Variables) 可以在場景中的步驟(URL,POST 變量)中使用變量。它們具有以下格式:{macro1}=value1{macro2}=value2{macro3}=regex:<regular expression>例如:{username}=Alexei{password}=kj3h5kJ34bd{hostid}=regex:hostid is ([0-9]+)然后可以在{username},{password}和{hostid}的步驟中引用宏。 Zabbix 將自動將其替換為實際值。請注意,使用的變量:需要一個步驟來獲取正則表達式的值,因此提取的值只能應用于后續步驟。如果值部分以 regex: 開頭,那么它之后的部分將被視為正則表達式,將搜索網頁,如果找到,則將匹配存儲在變量中。 注意,必須存在至少一個子組,以便可以提取匹配的值。Zabbix 2.2 開始支持變量中的正則表達式匹配。Zabbix 2.2 開始,{HOST.*} 宏 和用戶宏可以在此字段中使用。在查詢字段或提交表單數據時,變量會自動進行URL編碼,但使用 raw 方式提交數據或者直接在URL中使用時,必須手動進行URL編碼 HTTP 頭 (Headers) 執行請求時將發送的自定義的 HTTP headers。應使用與在 HTTP 協議中出現的語法相同的語法列出標題,可選地使用 CURLOPT_HTTPHEADER cURL 選項支持的一些其他功能。例如:Accept-Charset=utf-8Accept-Language=en-USContent-Type=application/xml; charset=utf-8用戶宏和 {HOST.*} 宏 和可以在此字段中使用。從 Zabbix 2.4 開始支持指定自定義頭。 啟用 (Enabled) 如果選中此復選框,則此場景處于啟用狀態,否則禁用。注意,當編輯一個現有的場景時,會出現兩個額外的按鈕
基于現有場景的屬性創建另一個場景。
刪除場景的歷史記錄和趨勢數據。這將使zabbix服務器在刪除數據后立即執行該web場景
如果 HTTP proxy 字段留空,使用 HTTP 代理的另一種方法是設置代理相關的環境變量。對于 HTTP 檢查 - 為 Zabbix 服務器用戶設置 http_proxy 環境變量。 例如, http_proxy=http://proxy_ip:proxy_port.
對于 HTTPS 檢查 - 設置 HTTPS_PROXY 環境變量。 例如, HTTPS_PROXY=http://proxy_ip:proxy_port. 通過運行 shell 命令可以獲得更多詳細信息:# man curl.
“步驟”選項卡允許您配置 Web 場景步驟。 要添加 Web 場景步驟,請在 步驟 (Steps) 單擊 添加 (Add)。
配置步驟
步驟參數:
參數說明 名稱 (Name) 唯一步驟名稱。Zabbix 2.2 開始,該名稱可以支持用戶宏和 {HOST.*} 宏。 網址 (URL) 用于連接和檢索數據的網址。 例如: https://www.google.com http://www.zabbix.com/download Zabbix 3.4 以后,可以以 Unicode 編碼指定域名。 執行 Web 場景步驟時,它們將自動被禁止轉換為 ASCII。 解析 按鈕可用于從URL中分離可選的查詢字段(例如?name = Admin&password = mypassword),將屬性和值放到查詢字段以進行自動URL編碼。變量可以在URL中使用,使用 {macro} 語法。 變量可以使用 {{macro}.urlencode()}語法手動進行URL編碼。Zabbix 2.2 開始,{HOST.*} 宏 和用戶宏可以在此字段中使用。Zabbix 2.4 開始,最多字符為 2048 個。 查詢字段 (Query fields) URL的 HTTP GET 變量。指定屬性和值對。值將自動進行URL編碼。來自場景變量,用戶宏或{HOST。*}宏的值將被解析,然后自動進行URL編碼。 使用{{macro}.urlencode()}語法將對其進行雙重URL編碼。從 Zabbix 2.2 開始開始支持用戶宏和 {HOST.*} 宏 。 Post HTTP POST 變量。在 Form data 模式下,指定屬性和值。值被自動進行URL編碼。 來自場景變量、用戶宏或 {HOST.*} 宏的值將被解析,然后自動進行URL編碼。在 Raw data 模式中,屬性 / 值顯示在一條線上,并與 & 符號連接。Raw 方式的值可以使用 {{macro}.urlencode()} 或 {{macro}.urldecode()} 手動進行URL編碼 / 解碼。例如:id=2345&userid={user} 如果 {user} 被定義為 web 場景的變量,則當執行步驟時,它的值會被替換。如果你想對變量進行URL編碼,用 {{user}.urlencode()} 替換 {user} 。 Zabbix 2.2 開始支持用戶宏和 {HOST.*} 宏 。 變量 (Variables) 可用于 GET 和 POST 方法的步級變量。指定屬性和值。步驟變量覆蓋之前的場景變量或步驟變量。 然而,一個步驟變量的值僅影響之后的步驟(而不是當前步驟)。 它們具有以下格式:{macro}=value{macro}=regex:<regular expression>有關更多信息,請參閱 場景 (scenario) 級別上的變量描述。Zabbix 2.2 開始支持步驟變量。Zabbix 2.2 開始,{HOST.*} 宏 和用戶宏可以在此字段中使用。在查詢字段或提交表單數據時,變量會自動進行URL編碼,但使用 raw 方式提交數據或者直接在URL中使用時,必須手動進行URL編碼 HTTP 頭 (Headers) 執行請求時將發送的自定義 HTTP headers。指定屬性和值 步驟級別上的 headers 將覆蓋為該場景指定的 headers。例如,設置“User-Agent:”為空時,將覆蓋在場景上設置的 User-Agent 名稱。支持用戶宏和 {HOST.*} 宏、\ 這將設置 CURLOPT_HTTPHEADER cURL 選項。Zabbix 2.4 開始,支持指定自定義 HTTP 頭 跟蹤重定向 (Follow redirects) 選中該復選框以跟蹤 HTTP 重定向。將會設置 CURLOPT_FOLLOWLOCATION cURL 選項。Zabbix 2.4 開始支持此選項。 僅檢索標頭 (Retrieve only headers) 選中復選框,僅從 HTTP 響應中檢索標題。這將設置 CURLOPT_NOBODY cURL 選項。Zabbix 2.4 開始支持此選項。 超時時間 (Timeout) Zabbix 根據設置的秒數以內來處理 URL。 實際上,此參數定義為連接到URL的最大時間和執行 HTTP 請求的最長時間。 因此,Zabbix 不會在步驟上花費超過 2x 超時時間。支持時間的后綴,例如30s,1m,2h,1d,自從Zabbix 3.4.0 開始。支持用戶宏,自從Zabbix 3.4.0 開始 必需的字符串 (Required string) 必需的正則表達式。除非檢索到的內容(HTML)匹配所需的模式,否則步驟將失敗。 如果為空,則不執行檢查。例如:Zabbix 的主頁、\ Welcome.*admin 注意 : 在此字段中不支持引用在 Zabbix 前端中創建的 正則表達式 (regular expressions)。 Zabbix 2.2 開始,支持用戶宏和 {HOST.*} 宏 狀態碼 (Required status codes) 可以設置預期的 HTTP 狀態代碼列表。 如果 Zabbix 獲取的 HTTP 狀態碼不在列表中,該步驟將認為為失敗。如果為空,則不執行檢查。例如:200,201,210-299Zabbix 2.2 開始,支持用戶宏。 Web 場景步驟中的任何更改只有在保存整個場景時才會保存。另請參見如何配置 Web 監控步驟的 示例。
配置身份驗證身份驗證選項卡允許您配置場景身份驗證選項。
認證參數:
參數說明 驗證 (Authentication) 驗證參數。 None - 未使用身份驗證。基本認證 - 使用基本認證。NTLM authentication - 使用 NTLM (Windows NT LAN Manager) 身份驗證。選擇身份驗證方法將提供兩個附加字段,用于輸入用戶名和密碼。 從 Zabbix 2.2 開始 ,用戶宏可以在用戶和密碼字段中使用 。 對等 SSL 驗證 (SSL verify peer) 選中復選框以驗證 Web 服務器的 SSL 證書。服務器證書將自動從系統的證書頒發機構(CA)位置獲取。 您可以使用 Zabbix 服務器或代理配置參數 SSLCALocation 覆蓋 CA 文件的位置。這將設置 CURLOPT_SSL_VERIFYPEER cURL 參數.Zabbix 2.4 開始支持此選項。 SSL 驗證主機 (SSL verify host) 選中復選框以驗證 Web 服務器證書的 公用名稱 (Common Name) 字段或 主題備用名稱 (Subject Alternate Name) 字段是否匹配、\ 這將會設置 CURLOPT_SSL_VERIFYHOST cURL 參數。Zabbix 2.4 開始支持此選項。 SSL 證書文件 (SSL certificate file) 用于客戶端認證的 SSL 證書文件的名稱。 證書文件必須為 PEM1格式。 如果證書文件還包含私鑰,請將 SSL 密鑰文件 (SSL key file) 字段留空。 如果密鑰加密,請在 SSL 密鑰密碼 (SSL key password) 字段中指定密碼。 包含此文件的目錄由 Zabbix 服務器或代理配置參數 SSLCertLocation 指定。 宏和用戶宏可以在此字段中使用。這將會設置 CURLOPT_SSLCERT cURL 參數、Zabbix 2.4 開始支持此選項。 SSL 密鑰文件 (SSL key file) 用于客戶端認證的 SSL 私鑰文件的名稱。 私鑰文件必須為 PEM1格式。 包含此文件的目錄由 Zabbix 服務器或代理配置參數 SSLKeyLocation 指定。 宏和用戶宏可以在此字段中使用。這將設置 CURLOPT_SSLKEY cURL 參數。Zabbix 2.4 開始支持此選項。 SSL 密鑰密碼 (SSL key password) SSL 私鑰文件密碼。用戶宏可以在此字段中使用。這將設置 CURLOPT_KEYPASSWD cURL 參數.Zabbix 2.4 開始支持此選項。 [1] Zabbix 僅支持 PEM 格式的證書和私鑰文件。 如果您在 PKCS#12 格式文件(通常具有擴展名* .p12 或* .pfx)中具有您的證書和私鑰數據,您可以使用以下命令從中生成 PEM 文件:openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.keyZabbix 服務器對證書的更改無需重啟。如果在單個文件中有客戶端證書和私鑰,只需在“SSL 證書文件”字段中指定它,并將“SSL 密鑰文件”字段留空即可。 證書和密鑰必須仍為 PEM 格式。 組合證書和密鑰很容易:cat client.crt client.key > client.pem顯示要查看定義的 Web 場景的詳細數據,請轉到 監控中 (Monitoring)→Web 或 最新數據 (Latest data)。 單擊方案名稱以查看更詳細的統計信息。
可以在 監控中 (Monitoring)→儀表板 (Dashboard) 中查看 Web 監控場景的概述。
擴展監控有時需要記錄接收的HTML頁面內容。 如果某些 Web 方案步驟失敗時是非常有用的。 調試級別 5(跟蹤)用于此目的。 此級別可以在 服務端 (server) 和 代理 (proxy) 代理配置文件中設置或使用運行時控制選項 (,其中 N 是進程號)。 以下示例說明如果調試級別 4 已設置,監控擴展如何啟動:
Increase log level of all http pollers: shell> zabbix_server -R log_level_increase="http poller"Increase log level of second http poller: shell> zabbix_server -R log_level_increase="http poller,2"如果不需要擴展 Web 監控,可以使用選項來停止。