zabbix是一個基於WEB界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。mysql
zabbix組件主要分兩個: zabbix-server和zabbix-agent。支持的監控協議有ICMP,IPMI,SNMP,HTTP以及zabbix協議(zabbix協議是最常使用的協議用來監控各被監控端)。web
收集的數據存放在數據庫中,數據庫支持mysql,oracle等等。算法
第三個組件:zabbix web gui這個接口提供web頁面來監控和管理各被監控端。sql
第四個組件:zabbix proxy(實現分佈式監控專用組件非必要組件,被監控服務器超過一千以上可使用此組件。)數據庫
工做流程圖:服務器
zabbix_get進程去客戶端收集數據,zabbix_agentd進程經過監聽在一個套接字上接收zabbix_get的請求,經過zabbix_sender將網絡
數據收集發送給服務器端,數據保存在zabbix數據庫中,zabbix_get這種方法主要用於測試,經過寫腳本或遠程執行命令的方式。oracle
zabbix server本身自動會週期性的去被監控端收集數據,收集哪些數據在服務器端事先定義。app
zabbix server ,zabbix database,zabbix web gui 能夠部署在一臺服務器上,爲了提高性能能夠放在不一樣主機上。分佈式
zabbix一些經常使用術語:
host(主機):要監控的網絡設備,可由IP或DNS名稱指定
host group(主機組):主機的邏輯容器,能夠包含主機和模板,但同一個組內的主機和模板不能互相連接;主機組一般在給用戶或用戶組指派監控權限時使用(大體瞭解下就能夠了)。
item(監控項):這個從名字上能夠理解,具體要監控哪些指標由它定義。
trigger(觸發器):就是超過了定義的合理範圍,這傢伙就會報警。
event(事件):這都是觸發器產生的。
action(動做):對事件如何應對,好比要執行哪些操做。
escalation(報警升級):若是在定義的5分鐘沒反應,從warning級別升到high級別,就是要提醒別人要儘快處理。
media(媒介):發送報警的手段和通道,如Email。
remote command(遠程命令):預約義的命令,可在被監控主機處於某個特定條件下時自動執行。
template(模板):用於快速定義被監控主機的預設條目集合,一般包含了item、trigger、graph、screen、application以及low-level discovery rule;模板能夠直接連接至單個主機。(這個概念不理解不過不要緊的,只要具體會怎麼操做就能夠了)
application(應用):一組item的集合。
以上術語的關係能夠用下圖表示(大體明白就行):
上圖中的poller這個進程就是去各客戶端獲取數據的。
zabbix產生的數據主要由四部分組成:
配置數據(忽略)
歷史數據:50bytes
歷史趨勢數據: 128bytes
事件數據:130bytes
歷史數據:採樣生成的數據
歷史趨勢數據:每小時的最大值、最小值、平均值、統計
經過對以上數據的計算,能夠得出咱們須要一個多大的zabbix數據庫,來定製磁盤硬件。
具體算法:
假設有60000個監控項,那每秒中處理的數據就有60000/60=1000條
歷史數據大小=天數X每秒鐘處理的數據量X24X3600X50Bytes
趨勢數據:
每個趨勢128Bytes,
大小=天數X監控項X24X128Bytes
事件數據:每一個佔據130Bytes大小:天數X86400X130(假設每秒中產生一個事件)