innotop是一个mysql数据库实时监控工具,其功能强大,信息种类繁多,很能体现数据库的状态.它实际上是一个perl脚本,整合show status/show variables/show engine innodb status输出结果并进行统计格式化输出.
yum install innotop
然后可以简单分析数据库慢查询日志
grep slow /var/log/zabbix/zabbix_server.log
当数据库出慢查询时,会出现如下问题
四、web debug
可以在web前端开启web debug模式,更加直接的分析问题
在用户群组下,找到“Enabled debug mode",开启即可
然后随意在"Enabled debug mode"群组下创建一个用,如debug,可以将权限设置为超级管理员然后登陆
登陆后,可以看到在每个页面都有一个”调试“小按钮,点击可以看到测试脚本结果
按钮将在页面内容下方打开一个新窗口,其中包含页面的SQL统计信息,以及API调用和各个SQL语句的列表,如果页面出现性能问题,可以使用此窗口搜索问题的根本原因。
如果数据查询有异常,可以看到明显的查询时间过长
五、优化性能
5.1 配置文件zabbix_server.conf优化
建议按照如下方式调整zabbix_server.conf配置文件进行优化
#调整zabbix_server进程数量 StartPollers=80 StartPingers=10 StartPollersUnreachable=80 StartIPMIPollers=10 StartTrappers=20 StartDBSyncers=6
#调整内存大小 VMwareCacheSize=64M CacheSize=32M HistoryCacheSize=256M TrendCacheSize=64M HistoryIndexCacheSize = 32M ValueCacheSize=64M
5.2mysql数据库调优
zabbix推荐使用innodb引擎的mysql数据库,所以要针对数据库配置文件进行优化
mysqladmin status / variables #检查数据库配置状态
#调整数据库innodb innodb_file_per_table = 1 innodb_buffer_pool_size=<large> (~75% of total RAM) innodb_buffer_pool_instances = 4 (MySQL 5.6 - 8) innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_log_file_size = 256M
5.3进一步优化
1)数据库使用分区表
通过这种方式可以将一张大的表分成很多区.
只对那些数据量大的有历史意义的表操作:
history_log,history_str,history_text,history_uint
trends,trends_uint
好处:
更快删除过期数据
DB将拥有更好的性能
当zabbix-server频繁出现“Zabbix housekeeper processes more than 75% busy”的告警时,此时housekeeper的性能正在下降
则需要���用分区表
2)web服务器使用nginx
nginx服务器的响应速度要明显优于apache服务器
3)使用Zabbix Proxy
当监控主机过多,可以使用多个zabbix Proxy进行分布式监控
Zabbix Proxy "转换" 被动检查成主动。
负载分布在Zabbix Proxy代理之间如果一个Proxy高负载, 网络节点可以切换到其他的Proxy上
简单易维护当
Zabbix server出现故障时Proxy可以缓存数据保证数据不丢
4)数据库分离或采用硬件
可以采用数据库与 zabbix分离,zabbix-server和前端一台服务器,数据库一台服务器,且数据库服务的性能要高于前者,使用硬件服务器部署要优于使用虚拟机部署。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx