调优
- 调优
- zabbix服务器的进程
- 数据清理
调优
Database:
历史数据不要保存太长时长;
尽量让数据缓存在数据库服务器的内存中;触发器表达式:减少使用聚合函数 min(), max(), avg();尽量使用last(),nodata();因为聚合函数,要运算数据收集:polling较慢(减少使用SNMP/agentlless/agent);尽量使用trapping(agent(active)主动监控);数据类型:文本型数据处理速度较慢;尽量少收集类型为文本 text或string类型的数据;多使用类型为numeric 数值型数据 的;
zabbix服务器的进程
(1) 服务器组件的数量;StartPollers=60StartPingers=10StartDBSyncer=5(2) 设定合理的缓存大小CacheSize=8MHistoryCacheSize=16MHistoryIndexCacheSize=4MTrendCacheSize=4MValueCacheSize=4M(3) 数据库优化分表:history_*trends*events*
其它解决方案
grafana:展示
collectd:收集
influxdb:存储grafana+collectd+influxdbprometheus:exporter:收集alertmanager:grafana:展示
数据清理
查看数据表大小语句
SELECT table_schema AS 'Database', table_name AS 'Table',round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB'
FROM information_schema.TABLES
WHERE table_schema = 'zabbix'
ORDER BY (data_length + index_length) DESC;
清理30天之前的数据
DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
DELETE FROM history_uint WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY));
清理整张表
TRUNCATE TABLE history;
TRUNCATE TABLE history_uint;
优化表
OPTIMIZE 是 MySQL 数据库中的一个命令,用于优化表的性能和空间利用。当表中进行大量数据插入、更新和删除操作时,表可能会产生空洞,导致表文件变得不连续,从而影响查询性能。OPTIMIZE TABLE 命令可以解决这个问题。
OPTIMIZE TABLE history;
OPTIMIZE TABLE history_uint;