在使用Zabbix過程中,正確的調整Zabbix系統,使之保持高效能是非常重要的,能夠充分利用硬體資源,監控更多主機和效能指標。
硬體
關於zabbix server端硬體的建議:
- 處理器:使用最新穩定的處理器,一般同級別的處理器,新一代的往往比上一代的效能更強、功耗更低;
- 磁碟:建議固態硬碟,或者不低於10K RPM的機械硬碟,建議做RAID;
- 記憶體:通常建議不低於8G,若監控主機超過1000臺,建議配置更高的記憶體;
- 網路卡:建議至少千兆網路卡;
官網硬體配置參考:
規模 | 平臺 | CPU/記憶體 | 資料庫 | 受監控的主機數量 |
---|---|---|---|---|
小型 | CentOS | Virtual Appliance | MySQL InnoDB | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | RAID10 MySQL InnoDB 或 PostgreSQL | >1000 |
極大型 | RedHat Enterprise Linux | 8 CPU cores/16GB | Fast RAID10 MySQL InnoDB 或 PostgreSQL | >10000 |
Tips:實際配置應不低於官方推薦。
系統
- 使用最新穩定版的作業系統,比如CentOS目前最新穩定版是7.9;
- 最小化安裝系統映象,按需安裝Zabbix Server需要的依賴;
- 調整核心引數,調整
open files
、max user processes
等引數; - 應以特定使用者最小許可權去執行Zabbix程式和檔案;
- 時間同步,在執行 Zabbix 的伺服器上擁有精確的系統日期非常重要;
資料庫
- 推薦MySQL5.7+;
- 獨立部署;
- 推薦使用固態+Raid;
- 足夠的磁碟空間;
Zabbix 資料庫大小主要取決於這些變數,這些變數決定了儲存的歷史資料量:
- 每秒處理值的數量;
- 歷史資料;
Zabbix 將接收到的值儲存一段固定的時間,通常為幾周或幾個月。 每個新值都需要一定量的磁碟空間用於資料和索引。
web服務
- PHP:建議使用Zabbix官網推薦版本;
- Nginx:建議使用最新穩定版本;
Zabbix Server
配置檔案優化參考:
引數名稱 | 值 | 說明 |
---|---|---|
CacheSize | 256M | 快取大小, 單位為位元組。 用於儲存主機、監控項、觸發器資料的共享記憶體大小。 Zabbix2.2.3以前的版本最大可配置值為2GB。 |
CacheUpdateFrequency | 60 | Zabbix 配置快取更新頻率, 單位為秒. 另外參考 runtime control 選項。 |
DebugLevel | 3 | 指定除錯等級: 0 - Zabbix程式的起停基本資訊 1 - 嚴重(Critical)資訊 2 - 錯誤(Error)資訊 3 - 警告(Warning)資訊 4 - 除錯(Debug)資訊 (產生大量資訊) 5 - 擴充套件除錯 (產生更多資訊) 另外可參考 runtime control 選項。 |
ExportFileSize | 1G | 每個匯出檔案的最大限制,單位為位元組。僅當ExportDir引數設定後才使用,用於輪轉生成匯出的檔案。 此引數從Zabbix 4.0.0開始支援。 |
HistoryCacheSize | 128M | 歷史快取資料大小, 單位為位元組。 |
HistoryIndexCacheSize | 16M | 歷史索引快取大小, 單位為位元組。\快取一個item大概需要大小為100位元組的空間。 該引數從Zabbix 3.0.0開始支援。 |
HistoryStorageDateIndex | 1 | 啟用歷史資料預處理,可以將資料儲存到不同的基於時間的索引: 0 - 禁止 1 - 允許 |
HistoryStorageURL | 你的ES URL | 歷史資料儲存 HTTP[S] URL,用於把歷史資料儲存到ElasticSearch。 這個引數參考 Elasticsearch進行配置。 |
HistoryStorageTypes | uint,dbl,str,log,text | 以逗號分隔的列表配置哪些型別的歷史資料需要儲存到Elasticsearch。 這個引數參考 Elasticsearch 進行配置。 |
HousekeepingFrequency | 3 | Zabbix 執行 housekeeping 的頻率 (單位為小時)。 housekeeping負責從資料庫中刪除過期的資訊。 注意: 為了防止 housekeeper 負載過大 (例如, 當歷史和趨勢週期大大減小時), 對於每一個監控項,不會在一個housekeeping週期內刪除超過4倍HousekeepingFrequency 的過期資料。 因此, 如果 HousekeepingFrequency 是 1小時, 一個週期內不會刪除超過4小時的過期資訊 (從最舊的資料開始) 。 備註: 為降低 server壓力, housekeeping將在server啟動以後,延遲30分鐘執行。 因此, 如果 HousekeepingFrequency 是1小時,server啟動30分後執行第一次 housekeeping , 然後按1小時為週期重複執行。從Zabbix 2.4.0以後有了這種延遲行為。 從Zabbix 3.0.0開始,可以設定HousekeepingFrequency為0來禁止自動housekeeping。 此時 housekeeping 只能通過 housekeeper_execute 啟動, 在一個housuekeeping週期內刪除的過期資訊時長為從最後一次housekeeping以來到配置週期的4倍,不少於4小時且不大於4天。 也可參見執行控制 選項。 |
LogFile | 日誌檔名稱。 | |
LogFileSize | 128 | 日誌檔案大小,單位 MB。 0 - 禁止日誌檔案自動回滾. 注意: 如果日誌檔案達到限定的大小,檔案回滾失敗, 不管是什麼原因, 現有的日誌會被截斷,並重新記錄日誌。 |
LogType | file | 日誌輸出型別: file - 寫入LogFile 引數指定的日誌檔案中, system - 寫入syslog, console - 控制檯輸出. 從Zabbix 3.0.0開始支援該引數。 |
LogSlowQueries | 3000 | 資料庫查詢消耗時間,大於該時間將會記入日誌 (毫秒)。 0 - 不記錄慢查詢日誌。 DebugLevel=3時該選項可用。 從Zabbix 1.8.2開始支援該引數 |
MaxHousekeeperDelete | 50000 | 一個housekeeping週期內,一個任務刪除的最大行數 (相應的表名,欄位名,值)。 如果設定為0,不限制刪除的行數,這種情況,你必須清楚這樣做的影響! 從Zabbix 1.8.2 開始支援該引數,僅在對已經被刪除的監控項進行歷史和趨勢資料刪除操作時有效。 |
ProxyConfigFrequency | 180 | Zabbix server 多少秒向Zabbix proxy 傳送一次配置資料,用於被動模式的proxy 。 從Zabbix 1.8.3開始支援該引數。 |
ProxyDataFrequency | 1 | Zabbix server 多少秒向Zabbix proxy請求一次歷史資料, 用於被動模式的proxy。\從Zabbix 1.8.3開始支援該引數。 |
StartDBSyncers | 8 | 資料庫程式的初始例項數量。 在版本1.8.5之前,上限是64。 這個引數從Zabbix 1.8.3開始得到了支援。 |
StartAlerters | 12 | 報警程式的初始例項數量。 從Zabbix 3.4.0開始支援該引數。 |
StartDiscoverers | 12 | 發現程式的初始例項數量。 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartEscalators | 12 | escalators程式的初始例項數量。 從Zabbix 3.0.0開始支援該引數。 |
StartHTTPPollers | 6 | HTTP 輪詢程式的初始例項數量1. 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartIPMIPollers | 3 | IPMI 輪詢程式的初始例項數量。 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartJavaPollers | 6 | Java 輪詢子程式的初始例項數量。1. 從Zabbix 2.0.0開始支援該引數。 |
StartLLDProcessors | 2 | Number of pre-forked instances of low-level discovery (LLD) workers1. The LLD manager process is automatically started when an LLD worker is started. This parameter is supported since Zabbix 4.2.0. |
StartPingers | 12 | ICMP pingers程式的初始例項數量1. 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartPollersUnreachable | 6 | 不可達主機 (包括IPMI 和 Java)的輪詢程式的初始例項數量。1. 從Zabbix 2.4.0開始,如果IPMI或Java輪詢器啟動,那麼至少有一個針對不可訪問主機的輪詢程式必須執行。 在Zabbix 1.8.5版本之前,最大能設定為255。 這個引數從Zabbix 1.8.3版本缺失。 |
StartPollers | 12 | 輪詢程式的初始例項數量。1.\注意如果要內部,聚合,計算的監控項能正常工作,這個引數值必須非0。 |
StartPreprocessors | 12 | 預處理工作程式的初始例項數量。\預處理管理程式將跟隨預處理工作程式啟動。1. 從Zabbix 3.4.0開始支援該引數。 |
StartProxyPollers | 3 | 被動proxy的輪詢程式初始例項數量。1.\在Zabbix 1.8.5版本之前,最大能設定為255。 從Zabbix 1.8.3開始支援該引數。 |
StartSNMPTrapper | 0 | 設定為1, SNMP trapper程式將啟動。 從Zabbix 2.0.0開始支援該引數。 |
StartTimers | 1 | 計時器程式的初始例項數量。 計時器程式處理基於時間的觸發器和維護期功能。 只有第一個計時器程式處理維護期。 從Zabbix 2.2.0開始支援該引數。 |
StartTrappers | 12 | trapper程式的初始例項數量。1. Trapper接收來自Zabbix傳送者、主動agent和主動proxies的資料。 至少要執行一個trapper程式用於在web前端展示伺服器可用性和佇列檢視。 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartVMwareCollectors | 2 | vmware採集器程式的初始例項數量。\從Zabbix 2.2.0開始支援該引數。 |
StatsAllowedIP | 逗號分隔的IP地址列表,可選CIDR表示法, 或外部Zabbix例項的DNS名稱. 只接受來自此處列出的地址的Stats請求。如果未設定此引數,則不接受stats請求。 如果啟用IPv6支援,則'127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' 與'::/0'等價表示為允許任何IPv4或IPv6地址。'0.0.0.0/0'可用於允許任何IPv4地址。 示例: StatsAllowedIP=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com 從Zabbix 4.2.0開始支援此引數。 | |
Timeout | 3 | agent, SNMP裝置或外部檢查的超時時長(單位為秒)。 |
TrapperTimeout | 300 | 定義trapper處理資料的超時時間。 |
TrendCacheSize | 16M | 趨勢資料快取大小,單位位元組。 用於儲存趨勢資料的共享記憶體大小。 |
UnavailableDelay | 60 | 在資源不可用期間,Zabbix多少秒檢查一次資源是否可用。 |
UnreachableDelay | 15 | 在資源不可達期間 ,Zabbix多少秒檢查一次資源是否可達。 |
UnreachablePeriod | 45 | 在主機 不可用多少秒後,即視為主機不可用。 |
User | zabbix | 降低系統某普通使用者的許可權。 僅當以'root'身份執行且AllowRoot引數設定為禁止時,該引數才起作用。 從Zabbix 2.4.0開始支援該引數。 |
ValueCacheSize | 8M | |
VMwareCacheSize | 8M | 儲存VMware資料的共享記憶體大小。 VMware內部檢查[vmware,buffer,…] 可以用來監控VMware快取使用情況 (參見 內部檢查)。 注意,如果沒有配置並啟動vmware收集器例項,那麼共享記憶體就不會被分配。\從Zabbix 2.2.0開始支援該引數。 |
VMwareFrequency | 60 | 間隔多少秒從單個VMware服務收集資料。\任何VMware監控項的最小更新週期都大於或等於該時間。 從Zabbix 2.2.0開始支援該引數。 |
VMwarePerfFrequency | 60 | 間隔多少秒從單個VMware服務檢索效能計數器統計資料。 該時間為任一VMware 監控項(使用VMware效能計數器)的最小更新間隔。 從Zabbix 2.2.9, 2.4.4開始支援該引數。 |
VMwareTimeout | 10 | vmware採集器等待 VMware 服務(vCenter or ESX 管理程式)響應的最大時長。 從Zabbix 2.2.9, 2.4.4開始支援該引數。 |
Tips:太多的資料採集程式 (pollers, unreachable pollers, HTTP pollers, Java pollers, pingers, trappers, proxypollers) 與 IPMI manager , SNMP trapper 和預處理工作程式(preprocessing workers)一起會耗盡預處理管理器的每程式檔案描述符限制。因此,需要增大
open files
、max user processes
。
Agent
推薦使用Zabbix Agent2。Agent和Agent2版本對比如下:
引數 | Zabbix agent | Zabbix agent 2 |
---|---|---|
程式設計語言 | C | 一部分使用C,其他用go |
守護程式 | yes | no (Windows 5.0.4之後版本支援) |
擴充套件支援 | 自定義C的可載入模組。 | 自定義GO的外掛。 |
請求 | ||
支援平臺 | Linux, IBM AIX, FreeBSD, NetBSD, OpenBSD, HP-UX, Mac OS X, Solaris: 9, 10, 11, Windows: 從xp開始所有的桌面和服務端版本。 | Linux, Windows: 從xp開始所有的桌面和服務端版本。 |
支援的加密庫 | GnuTLS 3.1.18 and newer OpenSSL 1.0.1, 1.0.2, 1.1.0, 1.1.1 SSL庫 - tested with versions 2.7.4, 2.8.2 (某些限制的使用, 檢視 加密詳情頁). | Linux: OpenSSL 1.0.1和最新版本在Zabbix 4.4.8之後支援。 MS Windows: OpenSSL 1.1.1或者最新版. OpenSSL庫必須開啟PSK,否則LibreSSL不支援. |
監控程式 | ||
程式 | 每個server/proxy都有獨立的程式。 | 單個程式多執行緒。 這最大的執行緒數由GOMAXPROCS環境變數決定。 |
指標 | UNIX: 檢視支援的 items. Windows: 檢視指定Windows版本的監控項. | UNIX: Zabbix agent支援所有指標。 其他的, agent2 提供Docker, Memcached, MySQL, PostgreSQL, Redis, systemd (檢視agent2的監控項)的Zabbix-native監控方案 Windows: Zabbix agent支援所有指標和HTTPS檢查 net.tcp.service* , LDAP. 其他的, agent2 提供關於PostgreSQL, Redis的Zabbix-native監控方案。 |
併發 | 單程式按監控項順序進行檢查 | 來自不同外掛的檢查或一個外掛內的多個檢查可以同時執行。 |
計劃/靈活 間隔 | 僅支援被動檢查。 | 支援主動檢查。 |
第三方traps | no | yes |
Additional features | ||
永久儲存 | no | yes |
超時設定 | 只能定義agent級別。 | 超時外掛可以覆蓋在agent上的級別超時設定。 |
刪除使用者許可權 | yes (Unix-like systems only) | no |
使用者可配置密碼套件 | yes | no |
Proxy
Zabbix proxy 是一個可以從一個或多個受監控裝置採集監控資料並將資訊傳送到 Zabbix server 的程式,主要是代表 Zabbix server 工作。 所有收集的資料都在本地快取,然後傳輸到 proxy 所屬的 Zabbix server。
部署Zabbix proxy 是可選的,但可能非常有利於分擔單個 Zabbix server 的負載。 如果只有代理採集資料,則 Zabbix server 上會減少 CPU 和磁碟 I/O 的開銷。
建議:
- 儘量減少Server直接監控主機的數量,建議由多個Proxy負擔大部分的負載;
- 選擇效能較好的主機作為Proxy;
配置優化參考:
必須配置 | 值 | 說明 |
---|---|---|
CacheSize | 256M | 快取大小, 單位為位元組。 用於儲存主機、監控項資料的共享記憶體大小。 在Zabbix 5.0.1版本這引數的最大值可以從8G增加到64G。 |
ConfigFrequency | 180 | 每隔多少秒proxy從Zabbix server獲取配置資料。 該引數只有主動proxy才會使用,proxy工作模式由引數ProxyMode決定。 |
DataSenderFrequency | 1 | Proxy將採集到的資料以一定的時間間隔(單位為秒)傳送給Zabbix server。 該引數只有主動proxy才會使用,proxy工作模式由引數ProxyMode決定。 |
DebugLevel | 3 | 指定除錯等級: 0 - Zabbix程式的起停基本資訊 1 - 重要(Critical)資訊 2 - 錯誤(Error)資訊 3 - 警告(Warning)資訊 4 - 除錯(Debug)資訊 (產生大量資訊) 5 - 擴充套件除錯 (產生更多資訊) |
EnableRemoteCommands | 0 | 是否允許Zabbix server遠端執行命令。 0 - 禁止 1 - 允許 從Zabbix 3.4.0開始支援該引數。 |
HeartbeatFrequency | 60 | 心跳資訊傳送頻率,單位為秒。 用於監視proxy的可用性。 0 - 禁止 該引數只有主動proxy才會使用,proxy工作模式由引數ProxyMode決定。 |
HistoryCacheSize | 128M | 歷史快取資料大小, 單位為位元組。 儲存歷史資料使用共享記憶體. |
HistoryIndexCacheSize | 16M | 歷史索引快取大小, 單位為位元組。\快取一個item大概需要大小為100位元組的空間。 該引數從Zabbix 3.0.0開始支援。 |
HousekeepingFrequency | 1 | Zabbix 執行 housekeeping 的頻率 (單位為小時)。 housekeeping負責從資料庫中刪除過期的資訊。 注意: 為了防止 housekeeper 負載過大 (例如, 當歷史和趨勢週期大大減小時), 對於每一個監控項,不會在一個housekeeping週期內刪除超過4倍HousekeepingFrequency 的過期資料。 因此, 如果 HousekeepingFrequency 是 1小時, 一個週期內不會刪除超過4小時的過期資訊 (從最舊的資料開始) 。 備註: 為降低 server壓力, housekeeping將在server啟動以後,延遲30分鐘執行。 因此, 如果 HousekeepingFrequency 是1小時,serverg啟動30分後執行第一次 housekeeping , 然後按1小時為週期重複執行。從Zabbix 2.4.0以後有了這種延遲行為。 從Zabbix 3.0.0開始,可以設定HousekeepingFrequency為0來禁止自動housekeeping。 此時 housekeeping 只能通過 housekeeper_execute 啟動, 在一個housuekeeping週期內刪除的過期資訊時長為從最後一次housekeeping以來到配置週期的4倍,不少於4小時且不大於4天。 |
LogFile | 日誌檔名字 | |
LogFileSize | 128M | 日誌檔案大小,單位 MB。 0 - 禁止日誌檔案自動回滾. 注意: 如果日誌檔案達到限定的大小,檔案回滾失敗, 不管是什麼原因, 現有的日誌會被截斷,並重新記錄日誌。 |
LogRemoteCommands | 1 | 當執行shell命令時可以記錄日誌。 0 - 禁止 1 - 允許 從Zabbix 3.4.0開始支援該引數。 |
LogType | file | 日誌輸出型別: file - 寫入LogFile 引數指定的日誌檔案中, system - 寫入syslog, console - 控制檯輸出. 從Zabbix 3.0.0開始支援該引數。 |
LogSlowQueries | 3000 | 資料庫查詢消耗時間,大於該時間將會記入日誌 (毫秒)。 0 - 不記錄慢查詢日誌。 DebugLevel=3時該選項可用。 從Zabbix 1.8.2開始支援該引數。 |
ProxyLocalBuffer | 24 | Proxy將在本地保留資料N小時,即使資料已與server同步。\如果第三方應用程式將使用本地資料,則可以使用此引數。 |
ProxyMode | 0 | Proxy工作模式。 0 - 主動模式 1 - 被動模式 從Zabbix 1.8.3開始支援該引數。 注意 當使用 Active proxy 時,敏感的 proxy 配置資料可供有權訪問Zabbix server trapper埠的應用使用。 因為第三方應用可以假裝是活動proxy並請求配置資料而不會進行身份驗證。 |
ProxyOfflineBuffer | 72 | 如果無法連線Zabbix server,proxy將保留資料N小時。\舊資料將丟失。 |
StartDBSyncers | 8 | 資料庫程式的初始例項數量。 在版本1.8.5之前,上限是64。 這個引數從Zabbix 1.8.3開始得到了支援。 |
StartDiscoverers | 8 | 發現程式的初始例項數量。 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartHTTPPollers | 3 | HTTP 輪詢程式的初始例項數量。 |
StartIPMIPollers | 1 | IPMI 輪詢程式的初始例項數量。 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartJavaPollers | 3 | Java 輪詢子程式的初始例項數量。 從Zabbix 2.0.0開始支援該引數。 |
StartPingers | 4 | ICMP pingers程式的初始例項數量 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartPollersUnreachable | 8 | 不可達主機 (包括IPMI 和 Java)的輪詢程式的初始例項數量。 從Zabbix 2.4.0開始,如果IPMI或Java輪詢器啟動,那麼至少有一個針對不可訪問主機的輪詢程式必須執行。\在Zabbix 1.8.5版本之前,最大能設定為255。 這個引數從Zabbix 1.8.3開始得到了支援。 |
StartPollers | 12 | 輪詢程式的初始例項數量。\在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartPreprocessors | 8 | pre-forked例項的預處理執行緒數量1. 前處理器工作程式啟動時,預處理管理器程式將自動啟動。 從Zabbix 4.2.0開始支援該引數。 |
StartSNMPTrapper | 0 | 設定為1, SNMP trapper程式將啟動。 從Zabbix 2.0.0開始支援該引數。 |
StartTrappers | 8 | trapper程式的初始例項數量。 Trapper接收來自Zabbix傳送者、主動agent的資料。 至少要執行一個trapper程式用於在web前端展示伺服器可用性和佇列檢視。 在Zabbix 1.8.5版本之前,最大能設定為255。 |
StartVMwareCollectors | 2 | vmware採集器程式的初始例項數量。\從Zabbix 2.2.0開始支援該引數。 |
StatsAllowedIP | ip地址列表以”,”分割,也可以使用CIDR、或者DNS. 只接受ip裡表中的請求. 如果未設定此引數,則不接受請求.如果啟用ipv6,則 '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' ipv4和ipv6都支援 ,'::/0' 支援IPv4或者IPv6地址. '0.0.0.0/0' 只支援ipv4. 例如:StatsAllowedIP=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com 從Zabbix 4.2.0開始支援該引數。 | |
Timeout | 3 | agent、SNMP裝置或外部檢查的超時時長(單位為秒)。 |
TrapperTimeout | 60 | 定義trapper處理資料的超時時間。 |
UnavailableDelay | 60 | 在資源不可達期間,Zabbix多少秒檢查一次資源是否可用。 |
UnreachableDelay | 15 | 在資源不可 期間 ,Zabbix多少秒檢查一次資源是否可達. |
UnreachablePeriod | 45 | 在資源不可期間 ,Zabbix多少秒檢查一次資源是否可達。 |
VMwareCacheSize | 64M | 儲存VMware資料的共享記憶體大小。 VMware內部檢查[vmware,buffer,…] 可以用來監控VMware快取使用情況 (參見 內部檢查)。 注意,如果沒有配置並啟動vmware收集器例項,那麼共享記憶體就不會被分配。\從Zabbix 2.2.0開始支援該引數。 |
VMwareFrequency | 60 | 間隔多少秒從單個VMware服務收集資料。\任何VMware監控項的最小更新週期都大於或等於該時間。 從Zabbix 2.2.0開始支援該引數。 |
VMwarePerfFrequency | 60 | 間隔多少秒從單個VMware服務檢索效能計數器統計資料。 該時間為任一VMware 監控項(使用VMware效能計數器)的最小更新間隔。 從Zabbix 2.2.9, 2.4.4開始支援該引數。 |
VMwareTimeout | 10 | vmware採集器等待 VMware 服務(vCenter or ESX 管理程式)響應的最大時長。 從Zabbix 2.2.9, 2.4.4開始支援該引數。 |
注意:Zabbix只支援不帶BOM的UTF-8編碼的配置檔案。