一、硬件需求分析
1、首先我們來分析一個硬件需求,這里我以400個agent計算,CPU建議是4核,內存不要少於8GB,硬盤只要不是用了很久的主機就行,容量的話建議300GB基本就夠使用好一段時間了,如果agent太多,可以使用分布式監控。
二、服務器配置文件優化
2、服務器配置文件說明
#zabbix-server的日志文件路徑 LogFile=/tmp/zabbix_server.log ##當日志文件達到多大時進行輪詢操作 LogFileSize=100 #數據名稱 DBName=zabbix #數據庫授權用戶 DBUser=zabbix #數據庫授權用戶的密碼 DBPassword=zabbix #一般情況下默認即可(模式認識5) StartPollers=50 初始的Unreachable主機檢查進程(也就是不可達的進程數) StartPollersUnreachable=30 ##打開的進程數 StartTrappers=5 #同上,意思是同時開多少個ping檢測的進程,不易太大,特別耗cpu和數據庫連接數 StartPingers=10 #同上,默認即可 StartDiscoverers=5 #這里只服務器IP地址,記得一定要添加上服務器的內網ip ListenIP=127.0.0.1,192.168.1.58 #緩存的大小 CacheSize=512M 多少秒更新一次配置緩存 CacheUpdateFrequency=100 #預先foke DB Syncers的數量,1.8.5以前最大值為64 StartDBSyncers=10 #歷史數據緩存大小 HistoryCacheSize=1024M #3.0.0開始支持,歷史索引大小,一個監控項需要100bytes來存儲 HistoryIndexCacheSize=512M 趨勢圖歷史數據緩存大小 TrendCacheSize=512M #lue緩存大小,當緩存超標了,將會每隔5分鍾往server日志里面記錄 ValueCacheSize=512M #處理trapper數據的超時時間 Timeout=2 #間隔多少秒再次檢測主機是否可用 UnavailableDelay=90 間隔多少秒再次檢測主機是否可達。 UnreachableDelay=90 #短信報警模板路徑 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #fping檢測路徑 FpingLocation=/usr/local/sbin/fping 多慢的數據庫查詢將會被記錄,單位:毫秒,0表示不記錄慢查詢。只有在DebugLevel=3時,這個配置才有效。 LogSlowQueries=3000
其它更改參數
| 參數 | 是否必須 | 范圍 | 默認值 | 描述 |
|---|---|---|---|---|
| AlertScriptsPath | 否 | /usr/local/share/zabbix/alertscripts | 自定義告警腳本的路徑,取決於編譯時候的datadir參數 | |
| AllowRoot | 否 | 0 | 是否允許Zabbix以root用戶啟動,設為0的時候server默認會用zabbix用戶啟動,1則可以以root啟動,此參數在2.2.0開始才支持 | |
| CacheSize | 否 | 128K-8G | 8M | 用於緩存主機、監控項、觸發器的數據,在2.2.3之前最大值為2G |
| CacheUpdateFrequency | 否 | 1-3600 | 60 | Zabbix更新緩存數據的頻率,單位為秒 |
| DBHost | 否 | localhost | 數據庫的主機地址 | |
| DBName | 是 | 數據庫名 | ||
| DBPassword | 否 | 數據庫密碼 | ||
| DBPort | 否 | 1024-65535 | 3306 | 數據庫端口 |
| DBSchema | 否 | DB2、PG的Schema名稱 | ||
| DBSocket | 否 | /tmp/mysql.sock | MySQL Socket的路徑 | |
| DBUser | 否 | DB用戶名 | ||
| DebugLevel | 否 | 0-5 | 3 | Debug級別,0:ZabbixServer啟停信息。1:關鍵信息。2:錯誤信息。3:警告信息;4:調試級別。5:全部日志信息 |
| ExternalScripts | 否 | /usr/local/share/zabbix/externalscripts | 腳本路徑,與編譯的datadir有關 | |
| FpingLocation | 否 | /usr/sbin/fping | Fpgin的路徑,確保是root用戶下並且設置了SUID標簽 | |
| HistoryCacheSize | 否 | 125K-2G | 16M | 緩存歷史數據的內存大小 |
| HistoryIndexCacheSize | 否 | 125k-2G | 4M | 3.0.0開始支持,歷史索引大小,一個監控項需要100bytes來存儲 |
| HousekeepingFrequency | 否 | 0-24 | 1 | Housekeeper清理歷史數據的頻率 |
| Include | 否 | 用來包含其他配置文件,例如/absolute/path/to/config/files/*.conf,2.4.0之后才開始支持 | ||
| JavaGateway | 否 | 2.0.0開始支持,Zabbix Java網關地址 | ||
| JavaGatewayPort | 否 | 1024-32767 | 10052 | Zabbix Java網關偵聽的端口 |
| ListenIP | 否 | 0.0.0.0 | 從1.8.3開始支持多個IP | |
| ListenPort | 否 | 1024-32767 | 10051 | 偵聽Trap的端口 |
| LoadModule | 否 | 擴展模塊 | ||
| LoadModulePath | 否 | 擴展模塊路徑 | ||
| LogFile | 是 | 日志文件的名稱 | ||
| LogFileSize | 否 | 0-1024 | 1 | 單位為MB,每份日志文件最大的大小,0表示禁用日志輪轉 |
| LogType | 否 | file | 日志輸出的類型,file:文件日志,system:寫到syslog,console:控制台,3.0.0開始支持 | |
| LogSlowQueries | 否 | 0-3600000 | 0 | 慢查詢日志,0:不記錄,1.8.2開始支持 |
| MaxHousekeeperDelete | 否 | 0-1000000 | 5000 | 每個HouseKeeper任務刪除的最大記錄數,1.8.2開始支持 |
| PidFile | 否 | /tmp/zabbix_server.pid | PID文件名 | |
| ProxyConfigFrequency | 否 | 1-604800 | 3600 | ZabbixServer向Proxy更新配置文件的頻率 |
| SenderFrequency | 否 | 5-3600 | 30 | Zabbix發送未發送成功的告警頻率,單位為秒 |
| SNMPTrapperFile | 否 | /tmp/zabbix_traps.tmp | SNMPTrapServer臨時文件,必須和zabbix_trap_receiver.pl的名字相同,2.0.0開始支持 | |
| SourceIP | 否 | 出口IP | ||
| SSHKeyLocation | 否 | SSH公鑰目錄 | ||
| SSLCertLocation否 | SSL客戶端認證文件,2.4開始支持 | |||
| SSLKeyLocation | 否 | SSL私鑰文件目錄,2.4開始支持 | ||
| SSLCALocation | 否 | SSL CA鑰文件目錄 | ||
| StartDBSyncers | 否 | 1-100 | 4 | DB同步進程數量,1.8.3開始支持,1.8.5之前最大為64 |
| StartDiscoverers | 否 | 0-250 | 1 | 自動發現的進程數量,1.8.5之前最大值為255 |
| StartEscalators | 否 | 1-100 | 1 | 檢查escalations的進程,這張表好像是告警事件表喲 |
| StartHTTPPollers | 否 | 0-1000 | 1 | 初始的HTTP Poller進程 |
| StartIPMIPollers | 否 | 0-1000 | 1 | 初始的IPMI Poller進程 |
| StartJavaPollers | 否 | 0-1000 | 1 | 初始的JavaPoller進程 |
| StartPingers | 否 | 0-1000 | 1 | ICMP pinger的初始進程 |
| StartPollersUnreachable | 否 | 0-1000 | 1 | 初始的Unreachable主機檢查進程 |
| StartPollers | 否 | 0-1000 | 5 | Server的初始進程 |
| StartProxyPollers | 否 | 0-250 | 1 | 代理Poller的初始進程數 |
| StartSNMPTrapper | 否 | 0-1 | 0 | 是否開啟SNMPTrapper進程 |
| StartTimers | 否 | 0-1000 | 1 | timers進程的初始數量,它是一個用於處理時間相關的告警進程 |
| StartTrappers | 否 | 0-1000 | 5 | ZabbixTraper(sender等功能用)的初始進程數量 |
| StartVMwareCollectors | 否 | 0-250 | 0 | 采集VMWare信息的初始進程量 |
| Timeout | 否 | 1-30 | 3 | 等待Agent的時間,單位為秒 |
| TLSCAFile | 否 | TLS證書文件 | ||
| TLSCertFile | 否 | TLS證書文件 | ||
| TLSCRLFile | 否 | TLS證書文件 | ||
| TLSKeyFile | 否 | TLS證書文件 | ||
| TmpDir | 否 | /tmp | 臨時文件目錄 | |
| TrapperTimeout | 否 | 1-300 | 300 | Trapper處理新數據的最長時間 |
| TrendCacheSize | 否 | 128K-2G | 4M | 趨勢數據緩存的大小 |
| UnavailableDelay | 否 | 1-3600 | 60 | 當主機不可用了,多久檢查一次該主機的可用性,單位為秒 |
| UnreachableDelay | 否 | 1-3600 | 15 | 當主機不可到達了,多久檢查一次該主機的可用性,單位為秒 |
| UnreachablePeriod | 否 | 1-3600 | 45 | 當主機不可達多少秒后,設置為主機不可用 |
| User | 否 | zabbix | 非root運行的賬號 | |
| ValueCacheSize | 否 | 0,128k-64G | 8M | 歷史數據緩存大小,0為不緩存, |
| VMwareCacheSize | 否 | 256K-2G | 8M | VMWare檢查可用的緩存大小 |
| VMwareFrequency | 否 | 10-86400 | 60 | 獲取VMWare數據之間的間隔 |
| VMwarePerfFrequency | 否 | 10-86400 | 60 | 獲取VMWare性能計數器之間的間隔 |
| VMwareTimeout | 否 | 1-300 | 10 | 等待VMWare返回數據的最長時間 |
3、備份和優化
1、首先所有的配置都是在書庫里面,其實也可以前端直接導出就行,但是比較麻煩,所以我比較喜歡數據庫備份,簡單粗暴。因為這里我使用的是mariadb10.3的版本數據庫,所以不能用原來的xtrabackup工具備份數據量,版本10開始就可以使用mariabackup工具,用法基本和xtrabackup工具相同。
2、做好配置文件的備份。
3、數據庫的優化,這里需要提一下,mariadb默認最大連接數是151個,如果你上面參數調的太大的話,需要在數據庫里面增加max_connection參數,否則數據庫會報錯。
4、緩存問題,我們先看看下面的圖。注意buff/cache這個參數,如果不定時清理緩存的話,這個值就會越來越大,最后導致內存溢出,數據庫崩潰。

腳本很簡單如下,每4個小時清除一下緩存。
* */4 * * * /usr/bin/echo 3 > /proc/sys/vm/drop_caches
更改zabbix的admin密碼:
use zabbix;
更改密碼為12345678
update users set passwd=md5('12345678') where alias = 'Admin';
mysql報警too many connection
設置zabbix_server配置文件的時候,mysql報警too many connection
查看默認數據庫最大連接數(mysql默認是151):
select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='MAX_CONNECTIONS';
修改為1000,可以根據自己的配置嘗試逐漸提高。
set global max_connections = 1000;
