Zabbix 5.0:優化建議


Blog:博客園 個人

在使用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 filesmax 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 數據庫進程的初始實例數量。
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 filesmax 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編碼的配置文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM