1. 数据库优化
1.设置数据库分区优化,buffer优化,hash优化,
说明:数据库分区优化的优点:
数据库history设置是保存7天。然后如果你没有分区。虽然数据在减少但是表空间不会减少。浪费硬盘空间的同事,缓存内的cache部分也没有被释放。
分区后可以迁移分区,合并分区,删除已经没有数据的分区,优化表空间优化buffer内存。
https://yq.aliyun.com/articles/434770
2.清空数据库中的history, history_uint表;
3、监控项Item得设置合适的数据采样间隔interval
,一般不要小于1分钟,对于长时间不变的量如内存总大小、磁盘总大小等应该尽量间隔时间大点比如一天(1d)或一周(1w)。
4、实在Host太多,还能怎样只能拆分架构,采用分布式架构减轻zabbix server 的压力,将这些压力分担到proxy上去。
5、历史数据是数据库爆满的主要原因。减少历史数据的保存时间,默认是90天,可以调成7天或更少,放心zabbix还保存着趋势数据,宏观上历史数据不会丢。
6、对history类型的(history、history_uint等)大表进行拆分操作,关闭housekeeper禁止自动定期清除历史记录数据,
总结
主要压力来源数据库,history,history_unit这些数据表的数据冗余,可以定时删除以及做一些数据库的分区,减少历史数据的保存时间。
如果history,history_unit表,公司不需要可以直接清空
2.zabbix优化之zabbix server优化
StartPollers
一般规则 - 保持此参数的值尽可能低。 zabbix_server的每个附加实例都会添加已知的开销, 同时, 并行性增加。当队列平均包含最小参数数量(理想情况下,在任何给定时刻为0)时,实现最佳实例数。可以通过使用内部检查zabbix [queue]来监视此值。
DebugLevel 最佳值为3。
DBSocket 仅限MySQL. 建议使用DBSocket连接数据库。 那是最快和最安全的方式。
2.配置优化
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=1024
DebugLevel=3 #日志级别
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
StartPollers=100 #poller进程 100
StartPollersUnreachable=30 #无法访问的主机轮询进程30
StartPingers=30 #ping轮询数量
StartDiscoverers=30
StartTimers=10
SenderFrequency=30 #发送报警超时
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=4096M #存储主机,项目和触发器数据的共享内存
CacheUpdateFrequency=120 #执行配置缓存的更新频率
StartDBSyncers=24 #数据库同步进程
HistoryCacheSize=2048M
HistoryIndexCacheSize=2048M
TrendCacheSize=2048M #趋势数据最大2G
ValueCacheSize=2048M #缓存项历史数据请求,历史值缓存
Timeout=30
UnreachablePeriod=120 #几秒钟的不可达性将主机视为不可用。 不可用
UnavailableDelay=60 #主机在不可用期间内检查可用性的频率(秒)。 不可用
UnreachableDelay=5 #不可达检测频率 解决wait for 3 seconds
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=2000 #记录慢查询
HousekeepingFrequency=1 #从历史记录,警报和警报表中删除不必要的信息 不超过4个小时 每隔1小时启动一次,删除过期数据
MaxHousekeeperDelete=1000000 #清除过期数据,超过这个阀值的行都会被清理。