一、zabbix的基本概述
zabbix,這款企業級監控軟件,能全方位監控各類網絡參數,確保企業服務架構的安全穩定運行。它提供了靈活多樣的告警機制,幫助運維人員迅速發現并解決問題。此外,zabbix還具備分布式監控功能,能應對復雜架構下的監控挑戰,并配備了web頁面,以直觀的方式展示主機監控信息。
二、zabbix的架構組成
zabbix的架構主要由以下五個核心組件構成:
1、Server
zabbix server作為其核心組件,承擔著存儲所有配置信息、統計數據以及操作數據的重任。通過zabbix agent的定期匯報,server能夠實時了解各監控對象的可用性、完整性及其他相關統計信息。
2、Web頁面
Web頁面作為Zabbix系統的重要組成部分,通常與Zabbix Server部署在同一物理設備上,但在某些特殊情境下,也可以進行分離配置。它主要職能是呈現直觀的監控信息,從而便于運維人員對系統進行實時監控與管理。
3、數據庫
Zabbix數據庫是系統的核心組件之一,負責存儲Zabbix的配置信息、統計數據以及其他關鍵內容。通過數據庫,運維人員可以方便地查詢、管理和分析這些數據,以實現對系統狀態的深入了解和精準監控。
4、Proxy
Zabbix Proxy可以根據實際生產環境的需求進行選擇性地使用。當Zabbix Proxy被啟用時,它可以替代Zabbix Server進行數據采集,從而有效減輕Zabbix Server的負擔。這種組件特別適用于架構龐大、Zabbix Server負載過重,或者企業設備跨機房、跨網段,以及Zabbix Server無法直接與Zabbix Agent通信的復雜場景。
5、Agent
Zabbix Agent通常被部署在被監控的目標設備上,它負責主動監控本地的資源和應用程序,并實時將收集到的監控數據發送給Zabbix Server。
三、Zabbix的監控范圍
Zabbix能夠監控多種系統平臺,涵蓋Linux和Windows等主流操作系統。它還支持通過SNMP和SSH協議對路由交換設備進行監控。當Zabbix部署在服務器上時,它可以實時監控服務器的硬件參數,如CPU、內存和網絡性能,同時也能深入監控具體服務和應用程序的運行狀況及性能。
此外,Zabbix提供了多種監控接口,包括IPMI接口用于硬件監控,Agent接口用于系統監控,以及JMX接口用于Java監控。對于網絡設備,如路由器和交換機,無法直接安裝agent,但Zabbix通過SNMP協議與之通信,實現網絡設備的監控。另外,Zabbix還提供了UserParameter功能,使得用戶可以自定義監控項,以滿足特定的監控需求。
總的來說,Zabbix提供了全面的監控解決方案,能夠滿足各種復雜的監控場景。無論是硬件、系統、Java應用還是網絡設備,Zabbix都能通過合適的接口和協議進行實時監控和報警。
四、Zabbix的常用術語
在深入學習Zabbix的過程中,掌握一些常用的術語是必不可少的。以下是一些Zabbix的關鍵術語,它們將幫助你更有效地理解和使用Zabbix:
通過熟悉這些術語,你將能夠更流暢地與Zabbix系統進行交互,從而充分利用其強大的監控功能。
1、主機(host)
在Zabbix中,主機指的是需要被監控的設備,它可以通過IP地址或可解析的主機名來指定。
2、主機組(host group)
主機組在Zabbix中扮演著邏輯容器的角色,它匯聚了主機和模板。當需要為用戶或用戶組分配監控權限時,主機組便派上了用場。
3、監控項(item)
監控項是用于收集特定監控指標相關數據的單位,例如內存容量、CPU利用率或服務運行狀態等。這些數據均來自被監控的對象,且每個監控項都通過一個獨特的key進行標識。
4、觸發器(trigger)
觸發器是一種表達式,用于評估監控項的數據值是否處于預期的合理范圍內。一旦監控項的值超出了觸發器的設定界限,系統便會認為發生了故障;而當該值重新回到觸發器的規定范圍內時,系統則判定為正常狀態。
5、事件(event)
事件是觸發器觸發所產生的特定情況,或者是Zabbix系統自動定義的,關于主機上線注冊的自動事件。
6、動作(action)
動作是Zabbix系統針對觸發器觸發的特定事件所采取的具體應對措施。這些措施可以根據預先的配置進行,例如執行特定的腳本、向管理員的郵箱發送警告郵件等。
7、報警升級(escalation)
報警升級是指在觸發器觸發后,根據預設策略,采取更高級別的應對措施,如發送警報或執行遠程命令等。
8、媒介(media)
媒介是用于發送通知(告警)的手段,如微信、郵件、釘釘等,這些手段可以根據實際需求進行靈活配置。
9、通知發送(notification dissemination)
通過預先設定的媒介,向用戶傳遞關于特定事件的信息。
10、遠程命令(remote command)
運維人員預先編寫好的指令,當被監控主機觸發特定事件時,可實現遠程執行。
11、模板(template)
模板是一種預先定義好的被監控主機的預設條目集合,它涵蓋了監控項、觸發器、應用等關鍵信息。通過模板,運維人員可以快速且直接地將相關設置與特定主機相鏈接,簡化了監控配置的過程。
12、應用(application)
應用是一組監控項的集合,用于全面監控特定應用程序的性能和狀態。
13、web 場景(web scenario)
web 場景是用于檢測 web 站點可用性的一組或多個 HTTP 請求,通過模擬用戶行為來評估站點的響應速度和功能完整性。
14、前端(frontend)
在 Zabbix 的監控體系中,前端主要指的是其 web 接口部分。這一術語將在后續的內容中頻繁出現,無論是企業技術交流還是日常使用,都是不可或缺的關鍵概念。
五、Zabbix 的工作流程
在 Zabbix 的監控系統中,其工作流程可概括為以下幾個步驟:首先,Zabbix 客戶端需要安裝在被監控的設備上,負責定期收集各種數據,并將這些數據發送至 Zabbix 服務端;接著,Zabbix 服務端,通常安裝在監控設備上,負責接收客戶端發送的數據,并將其存儲至數據庫中;最后,Zabbix web 前端根據從數據庫中獲取的數據,在前端進行展示和繪圖,以便用戶能夠直觀地查看監控信息。
此外,Zabbix 的數據收集過程包括兩種主要模式:主動模式和被動模式。
1、主動模式
在主動模式下,Zabbix 客戶端會主動向 Zabbix 服務端發起請求,獲取需要監控的項列表,并隨后主動將監控項所需的數據提交給 Zabbix 服務端。
2、被動模式
在被動模式下,Zabbix 服務端會主動向 Zabbix 客戶端發出請求,要求其提供特定監控項的數據。隨后,Zabbix 客戶端會響應服務端的請求,并提交所需的數據。這種模式下,數據流動的方向是由 Zabbix 服務端發起的。
六、Zabbix 進程詳解
在默認配置下,Zabbix 包含六個工作進程:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server 和 zabbix_gateway。值得注意的是,zabbix_java_gateway 是一個可選進程。這些進程各自承擔著特定的任務,共同構成了Zabbix的監控體系。
1、zabbix_agentd
zabbix_agentd作為Zabbix的客戶端守護進程,其核心職責是負責收集客戶端的監控項數據。
2、zabbix_server
zabbix_server作為Zabbix的服務端守護進程,其核心任務是負責收集來自Zabbix客戶端的監控數據。該進程監聽在10051端口上,等待客戶端數據的傳入。
3、zabbix_proxy
zabbix_proxy作為Zabbix的代理程序,其功能與zabbix_server相似,扮演著一個數據中轉站的角色。它負責收集數據,并將這些數據最終提交給zabbix_server進行進一步處理。
4、zabbix_get
zabbix_get是Zabbix的一個實用工具,它通常在zabbix_server或zabbix_proxy上運行。這個工具的主要功能是遠程獲取客戶端的信息,常被用于故障排查和問題解決。
5、zabbix_sender
zabbix_sender是Zabbix的另一個重要工具,它通常在Zabbix的客戶端上運行。這個工具特別適用于需要較長檢測時間的場景,它能夠主動將收集到的數據發送給Zabbix服務器。
6、zabbix_java_gateway
zabbix_java_gateway是Zabbix在20.0版本后新增的一項功能,專為支持JAVA設備而設計。它具備主動獲取數據的能力,卻無法進行被動數據收集。
七、zabbix的監控框架
在實際應用中,zabbix的監控框架會根據網絡環境和監控規模的不同而有所差異。它主要包含三種架構:server_client架構、master_node_client架構以及server_proxy_client架構。這些架構各自適應不同的應用場景,確保zabbix能夠靈活地滿足各種監控需求。
1、server_client架構
這是zabbix最簡單的架構形式,其中監控設備和被監控設備直接相連,實現zabbix_server與zabbix_client之間的直接數據交互。
2、zabbix_proxy_client架構
在zabbix的這種架構中,proxy充當了server和client之間的橋梁角色。它并不直接存儲數據,而是暫時保留從zabbix_agent端傳來的數據,隨后再將其轉發給server。這種設計特別適用于需要跨機房或跨網絡連接的中型網絡架構。
然而,在server_proxy_client架構中,一旦server設備發生故障,整個系統可能會陷入癱瘓狀態,無法正常工作。
3、master_node_client架構
master_node_client架構是zabbix中最為復雜的架構模式。它通常被部署在跨機房、跨網絡的大型網絡環境中,監控設備數量眾多。與server_proxy_client架構相比,其核心差異在于node與proxy的角色定位。
在master_node_client架構中,每個node都具備server端的某些功能,擁有獨立的配置文件和數據庫。這些node節點能夠直接與下游的client進行連接,或者通過proxy代理后進行連接。此外,當master設備發生故障時,并不會影響到node節點的正常運作。
7.1 三種架構模式的架構圖展示如下:
7.2 各模塊功能詳解:
1、Zabbix_Server:作為Zabbix的核心組件,主要負責收集agent的存活情況和監控數據。所有關于Zabbix的配置、統計和操作數據都會通過server存入database。
2、Zabbix_Database:作為存儲所有Zabbix配置信息和監控數據的數據庫,其重要性不言而喻。
3、Zabbix_Web:這是Zabbix的web管理界面,管理員可以通過它來配置Zabbix并查看相關監控信息。通常,它與Zabbix_server運行在同一臺主機上,但也可以獨立部署在另一臺服務器上。
4、Zabbix_Proxy:在分布式監控場景中,Zabbix_Proxy會代理Zabbix_server收集部分被監控主機的數據,并統一發送給server端。這種設置通常適用于需要監控超過500臺主機的情況。
5、Zabbix_Agent:它需要部署在被監控的主機上,主要負責收集該主機的數據,并將其發送給server端或proxy端。每個組件都有其特定的配置文件和日志文件,其中包含的重要參數需要在這些文件中進行配置。接下來,我們將詳細介紹這些組件的配置方法和相關參數。