Zabbix 安装好就放在那不管了,以为不需要调优。直到最近出现了如下一堆告警。
描述下我们的环境
硬件:8核 32G
软件:Centos7.6 Zabbix4.0、Httpd2.4、PHP7.3、MySQL5.6
出现告警时,查看系统资源使用率并不高。猜测是 Zabbix-Server 的配置问题,修改如下配置,已去掉不相关
# 本机通过socket连接更快
DBSocket=/home/work/mysqldata/data/mysql.sock
# 轮询进程的初始实例数量。默认5
StartPollers=30
# 不可达主机 (包括IPMI 和 Java)的轮询进程的初始实例数量。默认1
StartPollersUnreachable=20
# trappers进程实例数量。Trappers接受来自Zabbix发送者、主动agents和主动proxies的传入连接。默认5
StartTrappers=15
# 自动发现子进程实例个数。默认1
StartDiscoverers=5
# HTTP 轮询器子进程实例个数。默认1
StartHTTPPollers=5
#Zabbix 执行 housekeeping 的频率 (单位为小时)。housekeeping负责从数据库中删除过期的信息。默认1
HousekeepingFrequency=24
#Zabbix 缓存更新频率, 单位秒。默认60
CacheUpdateFrequency=180
# 历史缓存数据大小, 单位字节.存储历史数据。默认8
HistoryCacheSize=64M
# 历史索引缓存大小, 单位字节.
# 用于索引历史缓存中历史数据的共享内存大小.
#缓存一个item大概需要索引的大小为100字节.item代表一个监控项,按照100000个监控项来算:100000*100/1024/1024=9.6M
HistoryIndexCacheSize=10M
# 历史数据缓存大小, 单位bytes.
# 缓存item历史数据请求的共享内存大小.
# 0即禁止缓存 (不建议).
# 当缓存大小超过共享内存时,每5分钟会向服务器日志写入一条警告信息.
ValueCacheSize=128M
以上是Zabbix层面的优化,如果是系统资源不足,则要考虑如下几个层面。
服务器硬件
想通过几个简单的配置让服务器提高成倍的性能,想法很好,但是基本不太现实。简单的说,你需要搭配更好的CPU、更大的内存,更快的硬盘:条件允许的花,可以考虑购买SSD,它比更大的cpu和更大的内存带来的效果更好,或者考虑使用SAS 15K硬盘,组raid等等,总之一句话,配置优化不动的情况,增加硬件投入,别绞尽脑汁搜索:zabbix如何优化之类的文章,你在浪费时间。
操作系统
使用最新的操作系统,优化、定制化操作系统内核。应该会有些作用,但是肯定不大。
数据库优化
DBsock优化
如果MySQL和zabbix server在同一台服务器上,socket连接要比tcp连接要更快。
数据库分离
将数据库服务器独立,数据库和zabbix资源互相独立,例如:可以购买一台RDS
数据库引擎
使用MySQL5.6或者更高版本,自从MySQL被Oracle收购了,它的性能确实有不少的提升。请一定选择innodb,别选择myisam,因为zabbix在innodb的性能比在myisam快1.5倍,而且myisam不安全,zabbix监控数据量很大,一旦表坏了,那就是一个悲剧。
mysql分区,history等等表数据量较大,可以试着分区替身性能。
其他优化
1、减少history保存时间
2、减少item获取间隔时间
3、减少不必要的监控项