MailX及Zabbix优化
今天介绍一下我在使用Zabbix过程中碰到的两个比较棘手的问题。
1. 邮件发送服务失败。
2. 因slow query导致无报警。
以下是这两个问题的简单描述及处理过程、参考文档。
1. Linux MailX
问题简述:
使用zabbix发邮件导致服务崩溃,经查询是libcurl版本过低导致,删除旧版本后安装新版本,Zabbix重启失败,定位到原因是libcurl启动失败,重新安装libcurl,服务正常启动。
有类似问题的“Z友”及他们的解决方案:
1. zabbix3.x发邮件爆“Support for SMTP authentication was not compiled in“的解决办法
2. "Support for SMTP authentication was not compiled in","Failed Initialization",zabbix邮件告警libcurl问题
3. Error【0007】:zabbix中因为curl版本过低而无法发送邮件
下面进行详细的介绍,首先,了解一下mailx的安装、使用方法及Zabbix邮件报警的设置。
1. mailx及sendEmail的基本用法比较 两款邮件软件的使用比较。
2. mailx及sendEmail的基本用法比较 仍然是两款邮件软件的比较,但是着重介绍了证书的获取方式。
3. Zabbix邮件报警设置 比较全面,介绍了使用内部邮箱和外部邮箱两种不同方式的的安装,配置及Zabbix设置。
4. linux下通过配置mailx和第三方邮箱 发送邮件 比较详细的介绍了如何使用QQ邮箱发送邮件。
相信你看了上面其他“Z友”的解决方案,已经对怎么处理这个问题有了思路了。
补充,在Zabbix(启动)出现问题时,一个好的习惯是去查询log,路径——/var/log/zabbix/zabbix_server.log。当然,journalctl -ne也可以帮助我们快速定位问题。
3. curl下载路径
在解决了Zabbix发信异常的问题后,我们又碰到了一个新的问题,公司使用的outlook邮箱,发信时报如下错误。
mail.******.com 不支持smtp
smtp-server: 504 5.7.4 Unrecognized authentication type
"/root/dead.letter" 11/293
. . . message not sent
这又是什么原因呢?Exchange2012默认不再开启AuthLogin认证协议。但是我们不是IT呀,不能修改邮箱的策略,怎么办呢?这篇文章给了我一个思路,果然,使用ntml认证,删除账号密码和login即可发信。mail.rc如下设置。
set from=abc@test.com //发件人
set smtp=10.9.9.9 //smtp服务器IP
#set smtp-auth-user=admin //下面的登录信息注释掉即可
#set smtp-auth-password=password
#set smtp-auth=login
我最后使用的是通过外部邮箱+写脚本发送邮件,这里附上我的Zabbix设置及发信脚本。
# mail.sh
#!/usr/bin/sh messages=`echo $3 | tr '\r\n' '\n'` subject=`echo $2 | tr '\r\n' '\n'` echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
2. Zabbix优化
问题描述:
Zabbix在使用了一段时间后突然出现大量(误)报警,初步怀疑是网络故障,但是查询Log后发现在那个时间段出现了慢查询。再次强调查询log的重要性!!
那么什么是慢查询,又该如何优化呢?请参考以下博文。
1. zabbix优化指南
2. zabbix性能优化
综合上述博客,Zabbix常用的优化策略有使用硬件性能足够好的服务器,分布式部署,调整MySQL性能,调整Zabbix自身配置,分库分表等。
结合实际情况,我选择的临时应对方案是:
增加报警间隔时长,之前设置的触发器是10s接收不到agent ping信号就报警,改成30s,cover掉慢查询的时间。
长久解决方案:
1. 调整MySQL性能,比如增加buffer_size等;
2. 调整Zabbix配置,比如调整zabbix工作进程数量等。
除了上述我们使用的方案外,您还可以选择高阶的优化方案,对数据库进行优化如读写分离,分表等。因为Zabbix的瓶颈主要还是在DB上。
以上是一些参考博客: