首页

新闻

博问

专区

闪存

班级

所有博客

当前博客

我的博客我的园子账号设置简洁模式 ... 退出登录

注册登录

何满子

博客园

首页

新随笔

联系

订阅

管理

随笔 - 14  文章 - 0  评论 - 0  阅读 - 6922

Zabbix调优不完全指南（共12个优化案例）

Zabbix调优不完全指南（共12个优化案例）

字数 4105阅读 6915评论 2赞 17 转载于https://www.talkwithtrend.com/Article/245203

从学习搭建zabbix到完成各类监控、调优、二次开发已经过去了两年，期间通过QQ学习群、zabbix官方社区、各个技术博客整理学习了不少关于各种报错的处理方法，现在将常见的一些报错处理方法整理出来分享给大家。 现在开始介绍常见报错处理方法：

问题一、Zabbix server内存溢出，无法启动

问题原因：

这是由于zabbix默认的缓存配置只有8M，当你zabbix正常运行一段时间后，大批量添加一些被监控设备就会出现这种情况。

解决方法：

打开zabbix_server.conf文件，将CacheSize改一个较大的值，我现在给自己配的是1024M。

vim /etc/zabbix/zabbix_server.conf

CacheSize=1024M #第385行

问题二、Zabbix housekeeper processes more than 75% busy

问题原因：

由于zabbix每天都会产生大量数据（比如我现在监控项有20K+，每30s-5min每个监控项会产生一条数据，一天会产生非常多数据），为了防止数据库爆炸，zabbix会自动定期清理历史数据（这个历史数据保留时间值你可以在监控项中自己配置），但清理历史数据会影响mysql性能，就会出现上面的报错。

解决方法：

这里需要调整两个参数，一个是清理时间间隔、一个是清理的最大删除量。

vim /etc/zabbix/zabbix_server.conf

HousekeepingFrequency=12 #原值是每一小时清理一次，建议改为12或24小时清理一次。第363行

MaxHousekeeperDelete=100000 #原值为每次清理5000条，建议改为上限100000条。 第376行

问题三、Zabbix poller processes more than 75% busy

问题原因：

这里可能有如下两个原因：

1、通过Zabbix agent采集数据的设备死机或其他原因导致zabbix agent死掉server获取不到数据。

2、server向agent获取数据时时间过长，超过了server设置的timeout时间。

解决方法：

1、增加zabbix server启动时初始化的进程数量：

vim /etc/zabbix/zabbix_server.conf

StartPollers=12 #第165行，视自己服务器性能改，上限是1000，如果改完发现启不起来可以改小一点。

2、修改模板自动发现规则中的保留失去的资源期间为0。

问题四：Zabbix discoverer processes more than 75% busy

问题原因：

看问题报警字面意思是自动发现进程忙碌数超过75%，这是因为我们用的监控模版中带着大量自动发现项，每一个自动发现项都会产生一个进程，所以一般我们添加多台被监控设备时就会出现这样的报错。

解决办法：

修改自动发现进程数。

vim /etc/zabbix/zabbix_server.conf

StartDiscoverers=10 #第219行，取掉#号，默认为1，改为10，上限为250请视自己的需求和服务器配置而定

其次还可以通过执行定期重启server脚本来清理进程，释放内存。

[root@m01 ~]# grep 'StartDiscoverers' /etc/zabbix/zabbix_server.conf2 3 ### Option: StartDiscoverers4 5 StartDiscoverers=56 7 [root@m01 ~]# systemctl restart zabbix-server.service

[root@m01 ~]# crontab -e2 3 @daily service zabbix-server restart > /dev/null 2>&14 5

问题五：Zabbix alerter processes more than 75% busy

问题原因：

这个问题通常是因为邮件告警进程过于繁忙导致的，如果邮件动作间隔设置过短，在一些极端情况下（比如核心网络宕了）会发生大量邮件（比如上万条邮件）告警，则会导致邮件进程繁忙或者邮件进程直接挂了。

解决方法：

修改邮件脚本，将邮件的动作改为打印时间，等待邮件完全释放再改回来，如下：

[root@m01 ~]# cat /usr/lib/zabbix/alertscripts/sms 2 3 #!/bin/bash 4 5 echo `date` >>/tmp/sms.txt

问题六：Zabbix poller processes more than 75% busy

问题原因：

1、zabbix消耗的内存过多。

2、某个进程卡住了。

3、僵尸进程太多、出错、导致慢了。

4、网络延时。

解决方案：

这里有两个解决方案，第一是修改zabbix_server.conf文件调优性能，第二是简单粗暴定期重启server释放进程。

vim /etc/zabbix/zabbix_server.conf

StartPollers=12 #第165行，我现在设置为12，如果你服务器性能够强可以继续增加，上限是1000

其次是简单粗暴定期重启

service zabbix-server restart

crontab -e 调出Cron编辑器中增加一个计划：

@daily service zabbix-server restart > /dev/null 2>&1

问题七：server端日志中出现大量first network error, wait for 15 seconds

问题原因：

产生这个问题的主要原因是你的监控项执行时间过长，超过了默认配置的timeout=15s时间，这里只要将你的server、proxy和agent的conf文件中的timeout时间改长一点即可，上限是30s，如果30s还不够那就要改系统源码来突破这个上限了。

解决方法：

vim /etc/zabbix/zabbix_server.conf #这里以修改server端conf文件为例，其他两个类似的就不列举了

Timeout=30 #第448行

问题八：More than 100 items having missing data for more than 10 minutes和Zabbix poller processes more than 75% busy

问题原因：

这两个问题的主要原因是你配置的缓存或者进程数太少，导致监控项很多时服务器来不及处理。

解决方法：

直接增加server端进程数和缓存即可。

vim /etc/zabbix/zabbix_server.conf

StartPollers=500

StartPollersUnreachable=50

StartTrappers=30

StartDiscoverers=6

CacheSize=1G

CacheUpdateFrequency=300

StartDBSyncers=20

HistoryCacheSize=512M

TrendCacheSize=256M

HistoryTextCacheSize=80M

ValueCacheSize=1G #这里把关于该问题的可能性能项配置一起给到大家

问题九：connection to database 'zabbix' failed: [1040] Too many connections

问题原因：

从字面意思上可以看出数据库的连接数已经超出最大限制。

解决方法：

直接修改mysql的最大连接数即可。

vim /etc/my.cnf

max_connections=1000 #将最大链接数调整为1000

systemctl restart mariadb.service #重启SQL

问题十：批量添加大量被监控设备后出现服务端直接宕机，报警提示Zabbix value cache working in low memory mode Less than 25% free in the configuration cache。

问题原因：

由于大量添加被监控设备，导致服务器内存溢出。

解决方案：

vim /etc/zabbix/zabbix_server.conf

CacheSize=1024M #第385行

问题十一：Zabbix alerter processes more than 75% busy

问题原因：

从字面意思可以看出当你产生大量告警是即会出现这个报错，告警进程过多。

解决方案：

调整conf文件中的最大告警进程数即可。

vim /etc/zabbix/zabbix_server.conf

StartAlerters=3 #第254行，去掉#注释，修改为10，上限为100。

问题十二：zabbix unreachable poller processes more than 75 busy

问题原因：

产生这个问题的主要原因是zabbix server端轮询的不可达设备（被监控设备处于死机状态、agent与server数据传输超过timeout时间、mysql或zabbix server的io卡住了）过多导致。

解决方案：

vim /etc/zabbix/zabbix_server.conf

StartPingers=12 #第165行，修改为12，上限是1000

以上这些基本都是因为zabbix的zabbix_server.conf文件中的默认性能配置过低导致的错误，在日常使用中经常会遇到，只要进行简单配置后重新启动zabbix server即可解决。

好文要顶关注我收藏该文

何满子
粉丝 - 1 关注 - 0

+加关注

1

0

« 上一篇： openstack主要组件
» 下一篇： VMware通过NAT方式设置静态IP上外网和internet

posted @ 2022-04-01 16:30  何满子  阅读(1948)  评论(0)  编辑  收藏  举报

刷新评论刷新页面返回顶部

登录后才能查看或发表评论，立即 登录 或者逛逛 博客园首页

编辑推荐：
· 探索：优雅地实现异步方法的并行执行
· 如何避免让线程摸鱼，请用异步技术 async await 拿捏他
· 分布式事务 | 使用 DTM 的 Saga 模式
· SQLSERVER 阻塞之 PFS 页到底是什么？
· 带团队后的日常思考（十一）

阅读排行：
· chatGPT vscode 体验 (密钥已更新当天有效）
· 如何避免让线程摸鱼，请用异步技术 async await 拿捏他~
· 花了半个小时基于 ChatGPT 搭建了一个微信机器人
· 不用Blazor WebAssembly，开发在浏览器端编译和运行C#代码的网站
· CentOS即将停止维护，拥抱阿里“龙蜥“(Anolis OS)，VMware安装Anolis OS

公告

昵称：何满子
园龄： 11个月
粉丝： 1
关注： 0
+加关注

< | 2023年2月 | >

日 | 一 | 二 | 三 | 四 | 五 | 六
29 | 30 | 31 | 1 | 2 | 3 | 4
5 | 6 | 7 | 8 | 9 | 10 | 11
12 | 13 | 14 | 15 | 16 | 17 | 18
19 | 20 | 21 | 22 | 23 | 24 | 25
26 | 27 | 28 | 1 | 2 | 3 | 4
5 | 6 | 7 | 8 | 9 | 10 | 11

搜索

常用链接

我的随笔

我的评论

我的参与

最新评论

我的标签

随笔档案

2022年8月(1)

2022年4月(3)

2022年3月(10)

阅读排行榜

1. Zabbix调优不完全指南（共12个优化案例）(1948)

2. AWS云计算基础习题（含答案）(1390)

3. openstack主要组件(1104)

4. Linux常用的20条运维命令(745)

5. Linux 三剑客之 awk 实战详解教程（转载）(488)

推荐排行榜

1. Zabbix调优不完全指南（共12个优化案例）(1)

Copyright © 2023 何满子
Powered by .NET 7.0 on Kubernetes