Zabbix功能概述及架構介紹(理論篇)
1、Zabbix的功能概述
1.1 zabbix是什麼
Alexei Vladishev建立了Zabbix專案,當前處於活躍的開發狀態,Zabbix SIA提供支援。
Zabbix是一個企業級的、開源的、分散式的監控套件。
Zabbix可以對網路和服務進行監控。 Zabbix利用靈活的告警機制,可實現微信、簡訊和郵件的自動報警。Zabbix利用儲存的監控資料提供監控報告及實現圖形化顯示。
Zabbix支援polling和trapping兩種方式。所有的Zabbix報告都可以通過配置引數在WEB介面進行訪問。你可以通過Web介面實時檢視網路和服務的監控狀況。 不管你是小型組織還是大規模的公司,Zabbix都可以通過不通的配置來扮演監控你的IT基礎框架的角色。
Zabbix是零成本的,因為Zabbix編寫和釋出基於GPL V2協議. 意味著原始碼是免費釋出的。
同時,Zabbix公司也提供商業化的技術支援。
1.2 zabbix特性
Zabbix是一個高度整合的網路監控套件,通過一個軟體包即可提供如下特性
資料收集
可用性及效能檢測
支援SNMP(trapping及polling)、IPMI、JMX監控
自定義檢測
自定義間隔收集收據
server/proxy/agents實現分佈監控環境
靈活的閥值定義
允許靈活地自定義故障閥值,Zabbix中稱為觸發器(trigger), 儲存在後端資料庫中
高階告警配置
可以自定義告警升級(escalation)、接收者及告警方式
告警資訊可以配置並允許使用巨集(macro)變數
通過遠端命令實行自動化動作(action)
實時繪圖
通過內建的繪圖引擎實現監控資料實時繪圖
擴充套件的圖形化顯示
允許自定義建立多監控項檢視
網路拓撲(network maps)
自定義的面板(screen)和slide shows,並允許在dashboard頁面顯示
報告
高等級(商業)監控資源
歷史資料儲存
資料儲存在資料庫中
歷史資料可配置
內建資料清理機制
配置簡單
主機通過新增監控裝置方式新增
一次配置,終生監控(除非調整或刪除)
監控裝置允許使用模板
模板使用
模板中可以新增組監控
模板允許繼承
網路自動發現
自動發現網路裝置
agent自動註冊
自動發現檔案系統、網絡卡裝置、SNMP OID等
快速的web介面
web前端採用php編寫
訪問無障礙
你想怎麼做就能做麼做
審計日誌
Zabbix API
Zabbix API提供程式級別的訪問介面,第三方程式可以很快接入
許可權系統
安全的許可權認證
使用者可以限制允許維護的列表
全特性、agent易擴充套件
在監控目標上部署
支援Linux及Windows
二進位制守護程序
C開發,高效能,低記憶體消耗
易移植
具備應對複雜環境情況
通過Zabbix proxy可以非常容易的建立遠端監控
1.3 Zabbix功能
監控拓撲圖說明:
(1)可以通過微信、簡訊、郵件實現自動報警機制
(2)可以通過Web頁面進行配置,監控狀態檢視
(3)可以通過SNMP協議實現對印表機、路由器、交換機的裝置的監控
通過在植入agent的方式對伺服器主機進行監控
通過ping或者是port檢查的方式實現IP和PORT的監控
可實現大多數系統的監控,包括windows、Linux、unix、Solaris、Mac等等,如圖:
對主機可監控項包括:
CPU:CPU負載,CPU使用率
Memory:記憶體使用率,可交換記憶體/虛擬記憶體使用率
Network:網路傳輸、網路故障、丟包
Disk:磁碟使用率,磁碟I/O
Service:程序監控、介面服務、TCP埠連線,響應時間、DNS監控、NTP監控
Log:日誌監控,文字日誌,事件日誌
File:檔案監控
Other:效能計數器(僅限於Windows系統)
自定義報警機制:
如圖所示,
如果故障在10分鐘沒有被解決,可以簡訊或郵件通知系統管理員
如果故障在15分鐘沒有被解決,可以簡訊或郵件通知運維人員
如果故障在30分鐘沒有被解決,可以簡訊或郵件通知經理
可以通過proxy代理伺服器,代理Zabbix server蒐集被監控的監控資料,並統一發送到Server端
2、zabbix程式架構
架構圖如下:
Zabbix各元件的說明:
Zabbix Server
Zabbix Server為核心元件,用來獲取agent存活狀況及監控資料。所有的配置、統計、操作資料均通過Server進行存取到database
Zabbix database
所有的Zabbix資料均儲存在資料庫中
Web GUI
為了更簡單的無障礙的訪問Zabbix, 所以提供了web介面。該介面作為Zabbix Server的一部分,通常和server執行在同一臺主機上
注意:如果採用SQLite作為資料庫,web介面和Zabbix Server必須執行在同一臺主機上
Proxy
Zabbix Proxy能夠代替Zabbix Server進行效能及可用性資料採集。Proxy是Zabbix部署的可選元件。 如果想分擔單一Zabbix Server負載,推薦使用proxy。
Agent
Zabbix agents 部署在目標監控機上並監控本地資源和應用,將收集資料彙報給Zabbix Server
監控流程:
通過zabbix監控資料流,並採取相應的措施。
首先要建立一個host,再建立一個item來蒐集資料
通過item來建立觸發器(trigger)
通過觸發器(trigger)來建立一個動作(action)
例如:如果你想監控一個伺服器的CPU負載狀況,你首先為該伺服器建立一個主機條目,其次是建立一個item來監控伺服器的CPU狀況,並建立相應的觸發機制,當cpu負載達到某個閥值,觸發操作,該操作包括執行設定的動作和傳送郵件報警。
可以將這些操作設定成一個模板,要監控某臺主機的時候,直接套用模板即可。
Zabbix各元件結構圖:
Zabbix相關術語:
相關名詞解釋:
主機(host)
一個你想監控的網路裝置(需要知道IP/DNS)
主機組(host group)
一個邏輯的主機組,它包含主機和模板。主機和模板在同一個主機內的話模板不能被link到其他上。主機組通常用於給不同的使用者組建立訪問許可權
監控項(item)
你想從主機中收集到的資料
觸發器(trigger)
一個邏輯表示式,用來表達從監控項獲取的資料達到了預設的故障閥值
當接收到的監控值達到了預設的閥值,則觸發器狀態由’OK’變更為’Problem’,當收到的監控值低於閥值,則狀態保持/變更為’OK’
事件(event)
一個事情發生如觸發器狀態變更或一個自動發現(discovery)/agent自動註冊等
動作(action)
當一個事件發生時預設的處理過程
一個動作(action)包括操作(operations,如傳送告警)和條件(當指定的操作完成)
告警升級(escalation)
在動作中一個自定的操作執行過程,一個傳送告警/執行遠端命令的佇列
媒介(media)
傳送告警的渠道
告警(notification)
通過媒介(media)渠道傳送事件的訊息
遠端命令(remote command)
當監控主機達到某些條件(condition)後預設的自動執行的命令
模板(template)
一組包含監控項、觸發器、繪圖、面板(screen)、應用、低級別自動發現規則等並且能被其他主機應用的實體
模板能夠提升主機部署監控任務的速度,同時也非常容易對監控任務做批量(mass)更新。模板被主機連結(link).
應用(application)
監控項邏輯組
web方案(scenario)
對一個web站點可用性進行檢查的一個或多個http請求
前端(frontend)
Zabbix提供的web介面
Zabbix API
Zabbix API允許通過JSON RPC協議去建立、更新、獲得Zabbix物件(如主機、監控項、繪圖等等)以及完成自定義任務
Zabbix server
Zabbix軟體中心程序,用於連通Zabbix proxy及agent完成監控、評估觸發器、傳送告警以及中心資料儲存
Zabbix agent
部署在監控主機上的程序,用於監控本地資源和應用
Zabbix proxy
替代Zabbix server完成資料收集的程序,通常用於降低中心Zabbix Server的負載
節點(node)
一套完整的Zabbix server配置,通常位於分散式系統中,用於負責本區域的監控
Zabbix工作流程圖:
Server
Zabbix server是Zabbix軟體的核心程序。
Server通過polling和trapping採集資料來判斷是否達到閥值,從而使用觸發器傳送報警給使用者。Server也可以通過簡單服務檢查(simple service check)來完成遠端網路服務檢測。
Server既是儲存所有配置、統計和操作資料的資料庫,也是故障報警服務。
Zabbix server根據不同功能可劃分為三個部分:Zabbix server、Web GUI及Database。
由於Zabbix的所有的配置資訊儲存在資料庫中,server和web GUI可以直接進行操作。比如,通過Web介面(或者API)建立一個新的監控項時,它將建立的資料插入資料庫。一分鐘左右Zabbix server會查詢監控項資料表,並將查詢的監控項列表儲存在自己的快取(cache)中。這也是為什麼通過Zabbix前端進行的變更將在兩分鐘左右生效的原因。
Zabbix server以守護(daemon)程序方式執行。
Zabbix server預設要求執行在非root賬戶下。
如果Zabbix server和agent執行在同一臺主機上,建議分別執行在不同的使用者下,因為一旦執行的同一個使用者下,agent將可以訪問server的配置檔案,並且能夠輕鬆取得Zabbix Admin級別使用者,例如,資料庫密碼。
Zabbix server在以下平臺進行過測試:
Linux
Solaris
AIX
HP-UX
Mac OS X
FreeBSD
OpenBSD
NetBSD
SCO Open Server
Tru64/OSF1
Agent:
Zabbix agent部署在被監控主機上用來監控本地資源和應用(如硬碟、記憶體、處理器等)。
Zabbix agent收集本地主機執行資訊並將資料傳送給Zabbix server進行處理. 一旦出現異常(如硬碟滿或服務程序中斷), Zabbix server會自動響應並進行報警操作。
Zabbix agent利用本地系統呼叫完成統計資訊收集,因此它非常的高效。
被動(passive)和主動(active)檢查
Zabbix agent提供被動和主動檢查方式。
在被動檢查模式中agent應答資料請求,Zabbix server或者proxy詢問agent資料,如CPU load,然後Zabbix agent回送結果給server.
主動檢查處理過程將相對複雜,agent必須先進行一次請求Zabbix server索取監控項列表,然後傳送對應的值給server.
選擇是被動還是主動檢查,需要在監控項型別中選擇’Zabbix agent’或者’Zabbix agent (active)’。
Zabbix agent執行在被監控主機上,可以通過守護進行的方式執行。
Zabbix agent一般要求執行在非root賬戶下。
如果你在’root’賬戶下啟動Zabbix agent,它將自動選擇在作業系統中建立的’zabbix’使用者,除非你修改agent配置檔案中’AllowRoot’引數。
Zabbix agent支援以下平臺:
Linux
IBM AIX
FreeBSD
NetBSD
OpenBSD
HP-UX
Mac OS X
Solaris
Windows: 2000, Server 2003, XP, Vista, Server 2008, 7
代理proxy
Zabbix代理(proxy)通常用於替代server收集監控資訊並將資料傳送給Zabbix server。所收集資料會先儲存在代理主機的快取中然後傳送給Zabbix server。
代理是可選的,不過使用它可以有效的降低分散式環境中單一的Zabbix server負載。通過代理去收集監控資料,server可以有效降低CPU和磁碟I/O消耗。
Zabbix代理可以出色的完成遠端區域、分支機構、無本地管理員的網路的集中監控。
Zabbix代理使用獨立的資料庫。
注意:Zabbix proxy資料庫可以使用SQLite, MySQL, PostgreSQL. 如果Oracle或IBM DB2在低等級自動發現規則時存在限制和風險。
Zabbix proxy作為守護程序執行。
Zabbix proxy一般要求執行在非root賬戶下。
如果在’root’賬戶執行,它將自動選擇之前已經在作業系統建立的’zabbix’使用者,但是無法在編譯時或在配置檔案中進行配置。
Java gateway
zabbix2.0之後引入的一個功能。Java閘道器,類似agentd,但是隻用於監控執行在Java虛擬機器上的Java應用。它只能主動去獲取資料,而不能被動獲取資料。它的資料最終會給到server或者proxy。
Zabbix 2.0通過Zabbix Java gateway的守護程序對JMX應用進行監控。Zabbix Java gateway是採用Java編寫的一個守護程序,Zabbix Java gateway利用JMXAPI去請求遠端的有關應用。
Java gateway接受來自Zabbix server或者proxy的連線。在Zabbix server或proxy的配置檔案中指定JAVA gateway的IP和埠,因此在每一個Zabbix server或proxy中只能配置一個Java gateway。
當在Java gateway上的一個監控項值更新了,Zabbix server或代理將連線Java gateway請求該值。同樣的,Java gateway不會快取任何值。
Zabbix server或代理可以通過StartJavaPollers控制連線Java gateway的程序。Java gateway在內部通過START_POLLERS控制選項使用多執行緒啟動。 在Zabbix Server端,如果一個連線請求超過了Timeout設定的秒數,連線將會終止,但Java gateway也許此時依然忙於從JMX計數器中檢索該值。
建議StartJavaPollers小於或等於START_POLLERS,否則可能導致當連線Java gateway時而Java gateway沒有多餘的執行緒進行處理。
當Java gateway已經執行,需要在server配置檔案中指定JavaGateway的IP和埠,如果JMX應用採用Zabbix代理進行監控的話,你需要在代理配置檔案中指定對應的連線引數。
Sender
Zabbix sender命令列工具常用於傳送效能資料給Zabbix server。
該工具常用於在長時間執行的使用者自定義指令碼中以便不斷髮送可用性及效能資料。
Get
Zabbix get用於連線Zabbix agent並從agent上檢索需要的資訊。
轉載於:https://blog.51cto.com/afterdawn/1922502