zabbix监控之邮件报警sendmail 原

zabbix监控之邮件报警

在zabbix的使用中,最重要的一点就是完善的报警机制,作为监控平台,需要时刻关注机器和服务的运行状态,更重要的是发现故障之后需要及时的报警给相关人员,早点发现问题,将隐患消除在未然阶段。这样才能保证服务的稳定运行。

报警的方式是多种多样的,微信短信邮件报警是我们比较常见的方式。而且报警的频率和策略直接影响着运维人员的重视程度和检错效率。如果整个报警列表中都是一些无关痛痒的提示、轻度警告。而他们的发送频率又特别的高,则非常容易错过真正关键的报警。

报警涉及的触发器(trigger)一般包括以下几个方面:  (1)服务器的基本状态:磁盘容量、内存大小、cpu的负载;  (2)基础服务状态:web服务器(nginx、apache)的状态,数据库的状态(mysql、oracle、nosql等);  (3)应用服务器状态:应用服务器的可用性以及负载状态;

以本人之前所在的游戏公司为例,日常的监控报警中主要集中在服务器的基本状态的报警:(1)比如随着服务器的运行,会产生大量的日志文件,因为来不及转移导致服务器的磁盘可用空间不足;(2)开启的应用过多导致cpu和内存的不足;

第一种磁盘不足的情况,可以采用crontab定期清理日志的方式解决,注意  为了防止日志内容的丢失,需要把日志及时的备份到远程的日志服务器中进行存放;

第二种情况则需要定期对服务器进行升配操作;

基础服务状态应用服务器状态则需要提高报警级别,毕竟服务的不可用是非常严重的事故,另外给出建议是关键的服务一定要做到高可用,不能因为节约成本而导致服务故障,否则造成的损失也许更加巨大。

邮件报警配置步骤

邮件报警的配置主要划分为一下几个步骤:

1.在zabbix服务端配置邮件发送脚本和修改zabbix服务端配置文件;  2.在zabbix前端控制台进行相关设置;

配置脚本

(1)邮件的发送可以采用系统自带的mail发送,但是需要配置mail的配置文件/etc/mail.rc,在该文件的末尾添加如下几行:

set from=********@sina.com
set smtp=smtp://smtp.sina.com
set smtp-auth-user=********@sina.com
set smtp-auth-password=********
set smtp-auth=login
  • 1
  • 2
  • 3
  • 4
  • 5

其中from为你所指定的邮件发送的发件方名称,smtp为所使用的邮件服务器,smtp-auth-usersmtp-auth-password分别进行用户名和密码的验证;

这个smtp的功能需要登录邮箱进行开通: 

注意:  我这里采用的是sina的邮箱发送,因为新浪的邮件内容审核相对比较宽松,除了sina之外,还可以选择网易邮箱或者qq邮箱,甚至为了方便可以自己搭建一个smtp服务器。

网易邮箱和qq邮箱的smtp分别如下:

网易 smtp.163.com  qq smtp.exmail.qq.com

另外需要注意使用网易或者qq邮箱他们的smtp-auth-password密码会单独进行设定,不要与邮箱本身的登录密码混淆。

(2)测试发送一个邮件给指定的用户:

[root@localhost conf]# echo "hello" | mail -s "hello" 597****76@qq.com
  • 1

在该用户的邮箱查看是否收到邮件: 

已经收到邮件,说明邮件的发送没有问题,如果邮件发送失败,可能会是以下几个原因:

1)连接的邮件服务器错误,或者用户名、密码认证失败,这个是比较好排查的,可以通过telnet测试是否可以连接邮件服务器(邮件服务器的默认端口是25):

[root@localhost conf]# telnet smtp.sima.com 25
Trying 173.254.89.192...
Connected to smtp.sima.com.
Escape character is '^]'.
220-box1089.bluehost.com ESMTP Exim 4.86_1 #1 Wed, 23 Nov 2016 01:29:33 -0700 
220-We do not authorize the use of this system to transport unsolicited, 
220 and/or bulk e-mail.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

用户名密码认证失败会明确的告诉原因;

2)发送的邮件内容没有通过发件方邮箱的审核;

3)发送的邮件内容没有通过收件方的白(黑)名单活着邮件内容的审核;

上述的2、3两种失败情况邮件服务器都会发送给错误码进行查询,一般qq邮箱和网易邮箱的审核相对比较严格。为了防止被拒绝,可以选择sina或者139等邮箱,审核相对宽松。甚至可以自己搭建邮件服务器。

(3)编写zabbix发送邮件的脚本sendmail.sh

创建脚本所在目录/usr/local/etc/alertscripts

[root@localhost conf]# mkdir /usr/local/etc/alertscripts
  • 1

编写发送脚本:

[root@localhost conf]# cat /usr/local/etc/alertscripts/sendmail.sh 
#!/bin/bash

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

改变所属用户和组为zabbix,授予可执行权限:

[root@localhost conf]# chown zabbix.zabbix /usr/local/etc/alertscripts/ -R
[root@localhost conf]# chmod +x /usr/local/etc/alertscripts/sendmail.sh
  • 1
  • 2

创建日志文件,修改所属用户和组:

[root@localhost conf]# chown zabbix.zabbix /tmp/sendmail.log
  • 1

(4)修改zabbix服务端配置文件,并且重启服务:

[root@localhost conf]# vim /usr/local/etc/zabbix_server.conf
  • 1

添加如下内容,设置脚本目录为刚才创建的目录:

AlertScriptsPath=/usr/local/etc/alertscripts
  • 1

修改完成后重启zabbix服务:操作略。

配置zabbix控制台

1.首先设置报警媒介(指定邮件发送的脚本),点击“管理”—“报警媒介类型”—“Email”: 

2.将类型选定为脚本,然后指定脚本的名称。在zabbix3.x之后还需要指定传递给邮件发送脚本的参数(邮件接收方{ALERT.SENDTO}、邮件主题{ALERT.SUBJECT}、邮件内容{ALERT.MESSAGE})。 

3.在用户组群中开启调试模式,点开启用: 

4.点击相关组群设置组群的权限,因为是对管理员用户设置邮件,这里设定对所有组群具有读写权限(*代表所有组群): 

5.然后设置管理菜单下的用户,这里对Admin用户进行设置: 

6.在“报警媒介”中点击编辑设置邮件: 

7.指定报警的类型为Email,指定邮件地址为接收方的邮件地址,为了让邮件可以准确的到达,需要在接收方的邮件中设置白名单,允许发送方的邮件被接收。 

8.配置相关的动作,这个是针对触发器设定的,当监控的item达到一定的条件(由触发器Trigger设置),则会使trigger执行设定好的动作,一个动作可以针对多个触发器设定,当他们满则条件时都会执行相应的动作,因为是邮件报警,所以当trigger被触发时,我们给相关用户的邮箱发送邮件,这样运维人员会根据邮件的报错提示及时解决问题,当问题结局时还会发送恢复邮件,这样就可以把机器及业务的运行状态及时的监控起来。 

条件是针对动作何时执行。可以多个条件并存或者任意存在,这个可以编写相关的逻辑进行判断。

操作恢复操作分开设置是zabbix3.2.1和之前的版本有所不同的,在操作中进行设定: 

然后设置恢复操作: 

操作示例

我们这里设定的条件是当zabbix客户端5分钟内没有连接的时候,则会触发该警报。

1.首先可以关闭zabbix agent,查看仪表盘的监控信息,五分钟后显示如下: 

2.邮箱可以接受到对应的报警信息: 

3.当我们启动zabbix agent,则会看到故障恢复的报警信息: 

小结

上述是关于zabbix邮件报警的信息,正常情况下的操作很简单,但是笔者在设置的时候,发现网络和邮件审查的因素会对邮件的发送有很大的影响(安全和利益使然),所以大家在搭建的时候需要选择稳定可靠的邮箱,确保邮件的准确发送,还有就是再次基础上根据不同公司的业务和监控指标,需要设定好邮件发送的频率。祝大家工作顺利!

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芝麻实验室

通过包管理器安装Zabbix Server及Agent

由于zabbix依赖于php,且官方默认使用LAMP网站架构,因此在安装zabbix-web时,会自动安装httpd,并自动生成一个用户zabbix服务的文件,...

10520
来自专栏运维经验分享

CentOs7安装部署Zabbix3.4 原

[root@localhost ~]# getenforce   Disabled                                     #...

18730
来自专栏运维经验分享

zabbix自定义key出现ZBX_NOTSUPPORTED: Unsupported item key.

以前没怎么弄过zabbix,这几天折腾下,我要监控mysql主从,基本按照 http://www.linuxidc.com/Linux/2012-10/725...

38130
来自专栏运维经验分享

ZABBIX 3.4 监控Nginx 状态(七)

1、在nginx的配置文件中,添加status配置         location /nginx_status {                stub...

25430
来自专栏芝麻实验室

Zabbix Agent部署详解(Unix/Linux平台)

33610
来自专栏运维经验分享

zabbix Too many processes on

报错原因:  zabbix默认的traffiger限定值是300,当我们服务器的进程数大于300时就会发生包名,这里我们可以调整Too many proces...

20610
来自专栏bboysoul

zabbix添加主机

比如我的是centos就下载centos版本的,而且要注意zabbix-agent的版本要和zabbix-server的版本要一致

20820
来自专栏芝麻实验室

Zabbix Proxy代理概述及部署方案

16620
来自专栏「3306 Pai」社区

MySQL节前巡检要点

首先看 CPU内存、硬盘io的消耗程度,其中重点是硬盘使用率,要为长假做好准备,避免单位在过年期间业务写入增长,磁盘占满。

15940
来自专栏芝麻实验室

Zabbix 3.4编译安装全解读

18610

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励