17、zabbix性能优化(穷则战术穿插 富则火力覆盖)
版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin
性能不足的时候:经常出现误报,断图,还有其他报警
21.1.如何查看性能足不足?
点击管理—>队列。如果队列里有值就说明性能不足了,如果没有就还OK
21.2数据库优化:
zabbix是写多读少的业务类型
1、存储引擎优化:innodb --> tokudb
2、数据库优化:版本 mariadb 5.5 --> mysql 5.7
3、存储优化:机械硬盘--->固态硬盘
4、去掉无用的监控项
5、增加取值间隔,建议60s
6、减少数据的保留周期,重要监控项保留90d,其他的一律3d
7、mysql的分区和分表
8、数据库分离或数据库拆分
21.3.zabbix-server服务优化
zabbix参数的配置: 缓存和进程数量
1、xxxxcache 用于zabbix服务端缓存获取的各类数据 (历史数据,趋势数据....)
2、poller zabbix用于接收各类数据的进程的数量 (接收agent的数据的进程 接收snmp 接收jmx 接收ipmi.....)
缓存配置
# 用于存储主机、监控项、触发器数据的共享内存大小
CacheSize=8M #512M 边调节边看监控 Zabbix server: Zabbix cache usage, % free
# 历史数据缓存
HistoryCacheSize=16M
#历史数据索引的缓存
HistoryIndexCacheSize=4M
#趋势数据缓存
TrendCacheSize=4M
#值的缓存
ValueCacheSize=8M
#调整前
#调整后
进程数量调整
# 收集数据进程的数量
StartPollers=5
# 客户端/主机 不可达 可达主机 (包括IPMI 和 Java)的轮询进程的初始实例数量
StartPollersUnreachable=1
#用于接收http客户端的数据
StartHTTPPollers=1
#用于收集客户端jmx的数据 (默认是0) java-gateway的时候使用
StartJavaPollers=5
#用于收集zabbix proxy代理的数据的进程数 默认是1
StartProxyPollers=1
#收集ipmi客户端数据
StartIPMIPollers=0
21.4.Zabbix客户端配置优化
zabbix客户端
不在使用客户端的默认的被动模式
使用主动模式 Server 和 ServerActive
21.5.Zabbix键值与监控项优化
zabbix 键值与监控项处理:
1、增加更新间隔时间5m 10m
2、推荐使用自定义模板,控制功能全面监控,监控项少,精简监控项 (精简)
3、历史数据保留时长减少 设置为30d或7d, 增加趋势存储时间保留时间 365d
#zabbix占用磁盘空间的计算
######关于历史数据的管家设置
Zabbix 将接收到的值保存一段固定的时间,通常为几周或几个月。 每个新值都需要一定量的磁盘空间用于数据和索引。
所以,如果我们每秒收到 50 个值,且希望保留 30 天的历史数据,值的总数将大约在 (30*24*3600)* 50 = 129.600.000,即大约 130M
个值。
根据所使用的数据库引擎,接收值的类型(浮点数、整数、字符串、日志文件等),单个值的磁盘空间可能在 40 字节到数百字节之间变化。 通
常,数值类型的每个值大约为 90 个字节。
在上面的例子中,这意味着 130M 个值需要占用 130M * 90 bytes = 10.9GB 磁盘空间。
文本和日志类型的监控项值的大小是无法确定的,但可以以每个值大约 500 字节来计算。
#####趋势数据的管家设置
Zabbix 为表 trends 中的每个项目保留1小时的最大值 / 最小值 / 平均值 / 统计值。 该数据用于趋势图形和历史数据图形。 这一个小时
的时间段是无法自定义。
Zabbix数据库,根据数据库类型,每个值总共需要大约90个字节。
假设我们希望将趋势数据保持5年。 3000 个监控项的值每年需要占用 3000*24*365* 90 = 2.2GB 空间,或者5年需要占用 11GB 空间。
zabbix 触发器
1、尽量使用 .last() (最新数据) .diff() (是否有变化) .nodata() (是否有数据)
2、避免使用需要计算函数 .max() .min() .avg()
3、整体目标:不要让zabbix服务端进行计算/数据库进行计数,需要计算的内容放在客户端(自定义监控项)
{Template OS Linux by Zabbix agent:vfs.file.cksum[/etc/passwd].diff()}>0
小结:
1、功能上的优化,精简无用的监控项,适当增加取值间隔,减少数据的保留周期
2、定时任务,分库分表处理
3、进程优化(适当增加进程数)
4、缓存优化(适当增加缓存的大小)
5、针对mysql,写多读少 mariadb 5.5 innodb 升级 mysql 5.7 tokudb
6、去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期,增加趋势数据保留时间
7、把被动模式修改为主动模式,增加zabbix-proxy(多个机房,跨地区)
8、针对于zabbix-server进程调优,谁忙,就加大它的进程数量
9、针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
10、针对zabbix 历史数据和趋势图的表,进行周期性分表( 分表)
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16387165.html