Web 監控
概況
你可以使用 Zabbix 檢查幾個網站可用性方面。
要使用 Web 監控,您需要定義 web 場景。Web 場景包括一個或多個 HTTP 請求或“步驟”。Zabbix 服務器根據預定義的命令周期性的執行這些步驟。
從 Zabbix2.2 開始,Web 場景和 Items,Triggers 等一樣,是依附在 Hosts/Templates 的。這意味着 web 場景也可以創建一個模板,然后應用於多個主機。
所有的 web 場景會收集下列數據:
-
整個場景中所有步驟的平均下載速度
-
失敗的步驟數量
-
最后一次錯誤信息
對於 web 場景的所有步驟,都會收集下列數據:
-
平均下載速度
-
響應時間
-
HTTP 狀態碼
執行 web 場景收集的數據保存在數據庫中。數據自動用於圖形、觸發器和通知。
Zabbix 還支持獲取 HTML 內容中是否存在設置的字符串。還可以模擬登陸動作和模擬鼠標單擊。
Zabbix web 監控同時支持 HTTP 和 HTTPS。當運行 web 場景時,Zabbix 將選擇跟蹤重定向。重定向硬編碼的最大數量為 10 。在執行 web 場景時,所有 Cookie 都會保存。
配置 Web 場景
配置 web 場景:
-
轉到: 配置 (Configuration)–>主機 (或者 模板 )
-
點擊主機 (host)/ 模板 (template) 行中的 Web
-
點擊右上角 創建 web 場景 (或點擊場景名字進行編輯現有的場景)
-
在場景的表單中輸入參數
場景選項卡允許您配置此 Web 場景的通用參數。
場景參數:
參數 | 說明 |
---|---|
主機 (Host) | 場景所屬的主機名或模板的名字。 |
名稱 (Name) | 唯一的場景名稱。 Zabbix 2.2 開始,這個名字支持用戶宏和 {HOST.*} 宏 。 |
應用 (Application) | 選擇一個場景屬於的應用 。 Web 場景監控項在 監測中 (Monitoring)→最新數據 (Latest data) 欄中將會分組在選擇的應用中。 |
新的應用 (New application) | 對場景創建個新的應用。 |
更新間隔 (Update interval) (秒) | 執行場景時間間隔,以秒為單位。 |
重試次數 (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: 的變量:需要一個步驟來獲取正則表達式的值,因此提取的值只能應用於后續步驟。如果值部分以 regex: 開頭,那么它之后的部分將被視為正則表達式,將搜索網頁,如果找到,則將匹配存儲在變量中。 注意,必須存在至少一個子組,以便可以提取匹配的值。 Zabbix 2.2 開始支持變量中的正則表達式匹配。 Zabbix 2.2 開始,{HOST.*} 宏 和用戶宏可以在此字段中使用。 在查詢字段或提交表單數據時,變量會自動進行 URL 編碼,但使用 raw 方式提交數據或者直接在 URL 中使用時,必須手動進行 URL 編碼 |
HTTP 頭 (Headers) | 執行請求時將發送的自定義的 HTTP headers。 應使用與在 HTTP 協議中出現的語法相同的語法列出標題,可選地使用 CURLOPT HTTPHEADER cURL 選項支持的一些其他功能。 例如: Accept-Charset=utf-8 Accept-Language=en-US Content-Type=application/xml; charset=utf-8 用戶宏和 {HOST.*} 宏 和可以在此字段中使用。 從 Zabbix 2.4 開始支持指定自定義頭。 |
啟用 (Enabled) | 如果選中此復選框,則此場景處於啟用狀態,否則禁用。 |
注意,當編輯一個現有的場景時,會出現兩個額外的按鈕:
對於 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> 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 超時時間。 例如:15 |
必需的字符串 (Required string) | 必需的正則表達式。 除非檢索到的內容(HTML)匹配所需的模式,否則步驟將失敗。 如果為空,則不執行檢查。 例如: Zabbix 的主頁、\ Welcome.*admin 注意 : 在此字段中不支持引用在 Zabbix 前端中創建的 正則表達式。 Zabbix 2.2 開始,支持用戶宏和 {HOST.*} 宏 |
狀態碼 (Required status codes) | 可以設置預期的 HTTP 狀態代碼列表。 如果 Zabbix 獲取的 HTTP 狀態碼不在列表中,該步驟將認為為失敗。 如果為空,則不執行檢查。 例如:200,201,210-299 Zabbix 2.2 開始,支持用戶宏。 |
配置身份驗證
身份驗證選項卡允許您配置場景身份驗證選項。
認證參數:
參數 | 說明 |
---|---|
驗證 (Authentication) | 驗證參數。 None - 未使用身份驗證。 基本認證 - 使用基本認證。 NTLM authentication - 使用 NTLM 身份驗證。 選擇身份驗證方法將提供兩個附加字段,用於輸入用戶名和密碼。 從 Zabbix 2.2 開始 ,用戶宏可以在用戶和密碼字段中使用 。 |
對等 SSL 驗證 (SSL verify peer) | 選中復選框以驗證 Web 服務器的 SSL 證書。 服務器證書將自動從系統的證書頒發機構(CA)位置獲取。 您可以使用 Zabbix 服務器或代理配置參數 SSLCALOCATION覆蓋 CA 文件的位置。 這將設置 CURLOPT SSL VAERIFYPEERcURL 參數. 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 服務器或代理配置參數 SSL CerLocation 指定。 HOST.* 宏和用戶宏可以在此字段中使用。這將會設置 CURLOPT SSLCERT cURL 參數、\ Zabbix 2.4 開始支持此選項。 |
SSL 密鑰文件 (SSL key file) | 用於客戶端認證的 SSL 私鑰文件的名稱。 私鑰文件必須為 PEM1格式。 包含此文件的目錄由 Zabbix 服務器或代理配置參數 SSLKEYLOCATION 指定。HOST.* 宏和用戶宏可以在此字段中使用。這將設置 CURLOPT SSLKEY cURL 參數。 Zabbix 2.4 開始支持此選項。 |
SSL 密鑰密碼 (SSL key password) | SSL 私鑰文件密碼。 用戶宏可以在此字段中使用。 這將設置 CURLOPT KEYPASSWD cURL 參數. Zabbix 2.4 開始支持此選項。 |
openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key
cat client.crt client.key > client.pem
Display
要查看定義的 Web 場景的詳細數據,請轉到 監控中 (Monitoring)→Web 或 最新數據 (Latest data)。 單擊方案名稱以查看更詳細的統計信息。
可以在 監控中 (Monitoring)→儀表板 (Dashboard) 中查看 Web 監控場景的概述。
場景示例
概述
我們使用 Zabbix Web 監控來監控 Zabbix 的 Web 界面。我們想知道它是否可用、是否正常工作以及響應速度。
場景
Web 場景步驟 1
關閉網站服務。
[root@ken ~]# systemctl stop httpd [root@ken ~]# ss -tnl | grep 80
查看監控。
點擊name可以查看更詳細的信息