清理 zabbix 历史数据, 缩减 mysql 空间

来自linux中国网wiki
跳到导航 跳到搜索

Question:

zabbix 由于历史数据过大, 总是报警

服务器:Zabbix server发生:Disk I/O is overloaded on Zabbixserver故障

告警主机:Zabbix server 告警时间: 告警等级:Warning 告警信息: Disk I/O is overloaded on Zabbix server 告警项目:system.cpu.util[,iowait] 问题详情:CPU iowait time:34.76 % 当前状态:PROBLEM:34.76 %

告警主机:Zabbix server 告警等级:Average 告警信息: Zabbix history syncer processes more than 75% busy 告警项目:zabbix[process,history syncer,avg,busy] 问题详情:Zabbix busy history syncer processes, in %:70.33 % 当前状态:PROBLEM:70.33 %


一开始用iotop 查看到的居然是mysql 原来是那个时候刚刚好是zabbix history 相关的tables导致的 哈哈 开始大家还以为是mysqldump 的问题

Solution:

mysql> desc history;  
mysql> select max(itemid) from history;  
+-------------+  
| max(itemid) |  
+-------------+  
|       46582 |  
+-------------+  
1 row in set (0.00 sec)  
  
mysql> select * from history where itemid=46582 limit 1, 20;  
+--------+------------+--------+-----------+  
| itemid | clock      | value  | ns        |  
+--------+------------+--------+-----------+  
|  46582 | 1396361332 | 0.0000 |  81875000 |  
|  46582 | 1396361362 | 0.0000 | 768297000 |  
|  46582 | 1396361392 | 0.0000 | 656787000 |  
|  46582 | 1396361422 | 0.0000 | 665169000 |  
|  46582 | 1396361452 | 0.0000 | 973570000 |  




删除数据方法
取得时间戳, 时间只保留至 2017 1 1 日

1.
date +%s -d "Jan 1, 2017  00:00:00"  
+ date +%s -d 'Jan 1, 2017  00:00:00'
1483200000

2.
mysql> delete from history where clock < 1483200000;  
mysql>  delete from history_uint where clock < 1483200000;  

3. optimize table 
mysql> optimize table history_uint;  
mysql> optimize table history;  



4.重启启动 zabbix,  php, nginx, mysql(看情况)
新问题出现:
当前 zabbix 进行初始化, 会对 mysql 进行大量数据 r/w 操作
因此可能会发生下面警报, 经过 5 分钟后初始化, 报警会自动消除, 不用担心.



http://xficc.blog.51cto.com/1189288/1571282


星期五 10 2月 2017