Zabbix 的监控功能固然强大,但是在服务器出现问题后不能及时通知管理员,那么监控功能就没有起到作用。Zabbix 提供了多种通知告警方式,常用的有邮件和短信,除此之外还可以使用脚本来实现微信推送。以下介绍邮件和微信两种告警方式。其实相比实现功能,更重要的是功能背后的方法、原则和思考方式。
实际配置告警之前首先要理解 Zabbix 告警的原理以及内部的流程,这里涉及到很多部分,第一次配置时不容易理解,而且功能无法实现时也不便于排除问题。首先我们假设被监控的对象已经正确配置好,同时也合理地配置了触发器(trigger),当被监控对象出现问题时,Zabbix 自身能够在 Dashboard中显示相关的错误信息。
一个顺利的告警流程如下:
1. 被监控对象首先触发对应监控项的 trigger,然后 Zabbix 会生成一个事件记录这次触发;在 trigger 中需要配置触发条件,配置时需要对条件进行测试,保证条件中的逻辑表达式能够达到预期结果。
2. trigger 调用 Action 中定义的动作;
trigger 被触发以后并不会直接报警,它仅能够生成一个事件来描述并记录这次触发,想要实现报警功能还需要配置相关的动作(Action)。在 4.0 版本的 Zabbix 中, Actions 标签页内存在四个子标签, 分别是“Action” 、“Operations”、“Recovery options”、“Update operations”,它们分别对应的是实现该动作所需要的条件、条件达成后的操作、条件恢复以后的操作、手动更新状态后的操作。最后提到的三种操作实际上就是向管理员发送消息,而发送消息的区别在于消息传递的媒介。
3. 告警消息经由特定媒介发送至管理员等相关责任人。
一、配置脚本自动告警具体步骤(zabbix服务器端配置):
邮件告警需要服务器发送邮件,zabbix指定脚本,通过获取告警信息作为传递参数给脚本,从而实现发送邮件的目的
1,进入linux系统,安装邮件服务(通常使用mailx作为邮件服务):
yum -y install mailx
2、安装文本转换工具,dos2unix:
yum -y install dosunix
* Windows 下文本换行符为 CRLF,而 Unix 下则为 LF,因此需要使用这个工具进行转换,否则无法正确发送邮件。
3、编辑邮件服务配置文件 /etc/mail.rc,在配置文件最后追加邮件服务器及账户名密码等信息:
set from=mail@example.com # 显示发件人信息
set smtp=smtp.boe.com.cn # 需要配置主机 DNS 以正确解析域名
set smtp-auth-user=mail@example.com # 发送邮件使用的实际邮箱
set smtp-auth-password=example_password # 发送邮件使用邮箱的密码
set smtp-auth=login # 邮箱认证方式
* 发件人信息和邮箱认证账户需要是同一个字符串,否则部分服务器会出现无法认证的错误。
4、 测试 mailx 功能可用性,发送一封测试邮件:
echo "zabbix test" | mail -v -s "zabbix subject" songbaoda@boe.com
5、在配置文件 /etc/zabbix/zabbix_server.conf 中查看告警脚本目录,使用 /AlertScriptsPath作为关键字进行搜索,确认脚本目录
6、编写简单邮件发送脚本:
7、测试脚本:
./sendmail.sh songbaoda@boe.com.cn "zabbix test_xxx" "zabbix_subject"
二、配置脚本自动告警具体步骤(zabbix web 前端配置):
Zabbix Web 在页面进行配置告警的各项步骤,分为三个阶段:告警媒介配置、告警对象配置、告警动作配置。三项配置所要解决的问题是:告警发送的途径、告警发送给谁、告警发送的内容及频率。
1、进入管理界面,选择告警媒介编辑:
* Name:告警媒介的名称。
* Type:告警媒介实现方式,使用“Script”方式,Zabbix 自带的邮件通知效果不好,而且不便于后期集成中间件进行整合。
* Script name:脚本名称,需要与 脚本存放位置(查看zabbix_server.conf文件) 下对应脚本的名称相同。
* Script parameters:脚本执行时使用的参数,这里使用三个参数,分别代表收件人、主题和内容。
* Enabled:启用该媒介。
2、关闭其他不需要的告警媒介:
3、配置用户告警发送对象(zabbix_test01):
* Type:发送告警使用的媒介;
* Send to:发送目标对象,就是配置媒介中的收件人;
* When active:告警发送时间,“1-7,00:00-24:00”代表一周七天,一天24小时都会将发送告警消息发送到该目标对象,未配置的 时间范围内依然会产生事件,但不会像目标对象发送消息;
* Use if severity:选择告警发送的严重级别,从上到下级别逐渐提高,依次是“未分类”、“提示”、“警告”、“一般”、“高危”、“灾n 难”。
4、进入 “配置 -> 动作” 界面,创建新的动作与触发条件:
* name:新创建的动作的名称
* New condition:增加一条新的触发条件。这里可以根据被监控对象的类型进行区分,比如将虚拟机告警划为一组,而服务器硬件的监控划为另外一组,两种被监控对象的告警方式根据特点进行配置。
5、配置操作告警内容及发送的用户组或指定的用户(可以指定zabbix_test01用户):
6、配置恢复操作告警内容及发送的用户组或指定的用户:
7、配置更新操作告警内容及发送的用户组或指定的用户:
8、配置完成,并启用: