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也可以帮助我们快速定位问题。

  1. 解决一次zabbix server不停重启

  2. Linux libcurl安装及注意事项

  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性能优化

  3. 由浅入深学习Zabbix,第五期:性能调优总结 

综合上述博客,Zabbix常用的优化策略有使用硬件性能足够好的服务器,分布式部署,调整MySQL性能,调整Zabbix自身配置,分库分表等。
结合实际情况,我选择的临时应对方案是:
增加报警间隔时长,之前设置的触发器是10s接收不到agent ping信号就报警,改成30s,cover掉慢查询的时间。
长久解决方案:
1. 调整MySQL性能,比如增加buffer_size等;
2. 调整Zabbix配置,比如调整zabbix工作进程数量等。

  除了上述我们使用的方案外,您还可以选择高阶的优化方案,对数据库进行优化如读写分离,分表等。因为Zabbix的瓶颈主要还是在DB上。

  以上是一些参考博客:

  1. zabbix 的一次优化尝试

  2. zabbix3.2对某几个大表进行分区操作

posted @ 2019-08-18 22:16  XIAOQINQIN  阅读(616)  评论(0编辑  收藏  举报