zabbix邮件报警及自定义脚本实战

一、概要

1、说明
本文是继<LNMP环境部署zabbix实战><agent部署与zabbix web配置>的又一后续补充篇,众所周知作为监控系统主要就是数据采集,监控数据存储,再根据监控数据进行判断产生事件,进行报警通知管理员,同时通过展示接口进行数据的展示;本文主要关注zabbix的报警系统的实现及自定义脚本发送报警;
2、知识回顾
1)zabbix逻辑组件:
主机组(host groups)
主机(hosts)
应用(applications)
监控项(items)
触发器(triggers)
事件(events)
动作(actions):条件(conditions)和操作(operations)
媒介(media):发送通知通道;
通知(notifications)
远程命令(remote command)
报警升级(escalation)
模板(template)
图形(graph)
屏幕(screens)
幻灯(side show)
2)zabbix架构:
zabbix邮件报警及自定义脚本实战
根据以上的组件及架构说明:
zabbix监控系统包括zabbix-server(服务端)用来收集分析展示监控数据,同时定义各监控项数据的触发条件,用于报警;zabbix-agent(监控端)用于收集所在设备上的监控数据(可自定义监控什么),监控数据既可以主动也可以被发送到zabbix-server进行处理;同时也可以执行远程命令;在zabbix-server与zabbix-agent之间添加了zabbix_proxy这个代理监控服务,使用得zabbix监控系统支持分布式监控系统;

3、实验重点与环境
对于部署好了zabbix-server与agent并应用了对应的模块监控后,在web GUI上我们可以看到各监控的数据,对于出故障的服务我们需要提供报警通知管理的功能;因此本文主要讲述如何完善和自定义邮件报警功能;
zabbix-server: CentOS7.2_x64 172.16.3.152
zabbix-agent: CentOS7.2_x64 172.16.3.216 httpd服务
测试当httpd服务故障时第一步尝试远程重启httpd服务,如果不能解决发送邮件给管理员,恢复时发送恢复邮件!通过对http服务的状态感知报警系统的配置与作用!

二、zabbix报警系统

1、说明
zabbix报警系统是基于其他zabbix组件,并非是独立的,关系如下图所示:
zabbix邮件报警及自定义脚本实战

如上图所示,zabbix server通过item(可自定义) 从zabbix agent获取被监控端的各项数据,通过触发器trigger定义生成事件状态,满足条件后通过action处理,或发送邮件,或对目标主机远程执行命令!
2、发送报警信息的前提
a)配置发送信息的信道
管理-->管理媒介类型-->创建媒介类型-->如图:
zabbix邮件报警及自定义脚本实战

注意:在zabbix server上默认要安装有postfix服务无需要额外配置即可;以此为接下来的邮件发送测试服务器!实际当中这里配置购买的邮箱服务;自行搭建的服务器需要有备案的公网ip和邮箱服务的相关认证!

b)添加收件人
管理 --> 用户 --> 报警媒介 --> 添加 --> 类型(localmail) --> 收件人"root@localhost" -->添加-->更新
zabbix邮件报警及自定义脚本实战
zabbix邮件报警及自定义脚本实战

c)监控项item与触发器trriger
如有item需要有被监控端这里添加主机node2.san.com(172.16.3.216)如何通过web GUI添加,能主如何安装agent请参考之前文章;添加好被监控主机并应用监控模板即包含常规的application item以及trriger;

三、添加item监控项与触发器

任务如下:
测试当httpd服务故障时第一步尝试远程重启httpd服务,如果不能解决发送邮件给管理员,恢复时发送恢复邮件!
1、添加httpd的监控项
本次针对node2.san.com 上安装httpd服务,通过httpd服务的监控完成,故障发生与恢复时产生的事件进行发送报警邮件
默认Linux监控模块没有自带监控httpd(apache),所以这里需要针该主机创建监控httpd tcp 80端口的item监控项;
配置-->主机-->node2.san.com-->监控项-->创建监控项 -->名称"web server status" -->键值"net.tcp.listen[80]" (可以选择其他的方式) 如图:
zabbix邮件报警及自定义脚本实战
有了监控项(item)就有了从agent获取httpd状态的数据,以及默认的图形;
监测中-->最新数据-->找到node2.san.com中的 web server status -->图形 如图:
zabbix邮件报警及自定义脚本实战

光有item项及收获的数据还不行,需要对这些数据进行定义触发器,当满足条件时发出报警;如定义针对httpd状态的触发器,当状态不是1时(即80端口down异常) 做出action动作,或远程执行命令,或发出邮件等信息报警通知管理员!

2、添加httpd的触发器trriger
配置-->主机-->node2.san.com-->触发器-->创建触发器-->名称"web server down" -->严重性"严重" -->表达式-->添加 -->监控项选择"选择web server status" -->功能"最新的T值 = N" -->最后一个T值 "计数" 并填写1 -->插入 如图:
zabbix邮件报警及自定义脚本实战
最终表达式如下: {web service:net.tcp.listen[80].last(#1)}=0
如图:
zabbix邮件报警及自定义脚本实战

有了监控数据项,也有了对应的触发器,现在只剩下当触发器被触发时如何做了,换句话说就是httpd最后一次值是0时(即httpd服务down)如何做?这里就需要定义action动作了,action分两种,一种是远程执行命令,如重启httpd服务;一种是发邮件等信息通知到管理员!
3、添加action动作
动作:
配置-->动作-->创建动作-->名称 填写"Email" -->新的触发条件 "添加" -->选择web server down 触发器 如图:
zabbix邮件报警及自定义脚本实战
操作:
配置-->操作-->默认操作步骤持续时间 "60" -->默认接收人 "故障{TRIGGER.STATUS}:{HOSTNAME1}:{TRIGGER.NAME}" -->默认信息
"报警主机:{HOSTNAME1}
报警时间:{EVENT.DATE} {EVENT.TIME}
报警等级:{TRIGGER.SEVERITY}
报警信息:{TRIGGER.NAME}
报警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}

Item values:
Original event ID: {EVENT.ID}"--->添加 如图:
zabbix邮件报警及自定义脚本实战

操作-->新的 -->步聚 "1 - 1" 表示动作第一步 -->步聚持续时间 默认60s 可不修改 表示第一步处理时间 -->操作类型"远程命令" -->目标列表 添加"当前主机" -->类型-->自定义脚本 -->执行在 zabbix agent端 -->命令 "sudo systemctl restart httpd"--> 添加 如图:
zabbix邮件报警及自定义脚本实战

注意此处远程执行命令方式有多种:如ssh/telnet/IPMI/全局脚本/自定义脚本等方式;最为方便的是通过agent执行
但这里有两个前提需要在agent机器上配置/etc/sudoers
修改添加以下两项:
大约在56行 注释Defaults requiretty
添加: zabbix ALL=(ALL) NOPASSWD: ALL
别一个前提是修改zabbix_agent.conf文件中的
EnableRemoteCommands=1
重启zabbix-agent服务

操作-->新的 -->步聚"2-0" 表示第二步 即第一步没有 处理好 从第二步开始一直执行 -->步聚持续时间 默认60s 可不修改 表示第一步处理时间 -->操作类型"发送消息" -->发送到用户 "选择admin" -->仅送到" 创建的localmail 信道" -->添加 -->更新 如图:
zabbix邮件报警及自定义脚本实战

恢复操作:
配置-->恢复操作-->默认接收人"恢复{TRIGGER.STATUS}:{HOSTNAME1}: {TRIGGER.NAME} OK!" -->默认信息
"
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
" -->添加
最终action动作如下:
zabbix邮件报警及自定义脚本实战
对恢复操作添加发送信息
恢复操作-->操作-->添加-->操作类型-->发送消息-->发送到用户-->选择 "Admin (Zabbix Administrator)" -->仅送到"localmail" -->添加-->更新 如图:
zabbix邮件报警及自定义脚本实战

四、测试

关闭agent 上httpd服务
[root@node2 ~]# systemctl stop httpd
查看zabbix事件信息
监测中-->问题 如图:
zabbix邮件报警及自定义脚本实战
可以发现已经监测到httpd服务宕机了,并且第一步的远程执行命令成功~!
同时在zabbix server机器上通过命令行输入mail查看root邮件

[root@zabbix ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 9 messages 9 new
>N  1 zabbix@localhost.san  Fri Mar  2 16:33  22/983   "故障PROBLEM:web service:web server down"
  N  2 zabbix@localhost.san  Fri Mar  2 16:40  21/906   "恢复OK:web service: web server down OK!"
& 
1
Message  1:
From zabbix@localhost.san.com  Fri Mar  2 16:34:24 2018
Return-Path: <zabbix@localhost.san.com>
X-Original-To: root@localhost
Delivered-To: root@localhost.san.com
From: <zabbix@localhost.san.com>
To: <root@localhost.san.com>
Date: Fri, 02 Mar 2018 16:34:24 +0800
Subject: 故障PROBLEM:web service:web server down
Content-Type: text/plain; charset="UTF-8"
Status: R

报警主机:web service
报警时间:2018.03.02 16:32:21
报警等级:High
报警信息:web server down
报警项目:net.tcp.listen[80]
问题详情:web server status:0
当前状态: PROBLEM:0

Item values:
Original event ID: 53& 

2
Message 2:
From zabbix@localhost.san.com  Fri Mar  2 16:40:55 2018
Return-Path: <zabbix@localhost.san.com>
X-Original-To: root@localhost
Delivered-To: root@localhost.san.com
From: <zabbix@localhost.san.com>
To: <root@localhost.san.com>
Date: Fri, 02 Mar 2018 16:40:55 +0800
Subject: 恢复OK:web service: web server down OK!
Content-Type: text/plain; charset="UTF-8"
Status: R

告警时间:2018.03.02 16:32:21
告警等级:High
告警信息: web server down
告警项目:net.tcp.listen[80]
问题详情:web server status:1
当前状态:OK:1
事件ID:53&

五、添加自定义脚本发送信息

添加媒介
管理-->管理媒介类型-->创建媒介类型-->媒介名称"sentscript" -->类型"脚本" -->脚本名称"sentmail.sh" -->添加三个脚本参数"{ALERT.SENDTO} ; {ALERT.SUBJECT} ; {ALERT.MESSAGE}" 分别表示收件人,标题,信息; 如图:
zabbix邮件报警及自定义脚本实战

添加收件人
管理 --> 用户 --> 报警媒介 --> 添加 --> 类型(sentscript) --> 收件人"root@localhost" -->添加-->更新

修改httpd触发器中的第二步报警信息为sentscript
在管理--动作-->Email-->操作-->编辑2-0步 -->仅送到 修改为"sentscript" -->更新 如图:
zabbix邮件报警及自定义脚本实战

编写自定义脚本
在zabbix server上默认存放自定义脚本的目录在

cat /usr/lib/zabbix/alertscripts/sentmail.sh

#!/bin/bash
contact=$1
subject="$2"
content="$3"

echo "${content}" | mail -s $subject $contact

注意这里的脚本名称必须和媒介中的脚本名保持一致!
重启zabbix-server服务

测试:
关闭node2.san.com上的httpd服务查看zabbix 信息

如图:
zabbix邮件报警及自定义脚本实战

在zabbix service上命令行输入mail

[root@zabbix alertscripts]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
......省略.......
>N 15 Zabbix Monitoring Sy  Fri Mar  2 17:17  23/998   "故障PROBLEM:web"
& 15
Message 15:
From zabbix@zabbix.san.com  Fri Mar  2 17:17:17 2018
Return-Path: <zabbix@zabbix.san.com>
X-Original-To: root@localhost
Delivered-To: root@localhost.san.com
Date: Fri, 02 Mar 2018 17:17:17 +0800
To: root@localhost.san.com, down@zabbix.san.com,
    server@zabbix.san.com
Subject: 故障PROBLEM:web
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: application/octet-stream
From: zabbix@zabbix.san.com (Zabbix Monitoring System)
Status: R

[Binary content]

说明我们算定义发送邮件脚本正常!

总结:

本次通过对zabbix web GUI添加httpd服务的监控项,定义触发器,添加报警媒介,以及自定义脚本报警媒介;同时对报警做了分级处理;如第一次尝试远程命令恢复;再发送邮件到管理的一系列日常实用的报警配置!采用3.2版本并且已经配置成中文,如有错误或遗漏之处,欢迎留言指正交流!谢谢!

转载于:https://blog.51cto.com/dyc2005/2079970

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zabbix 是一个企业级分布式开源监控解决方案。  Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。  Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。  Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。 本课程主要讲解以下方面:1.  触发器的表达式的以及事件标签的配置。2.  触发器动作和报警升级。3.  监控模板的创建及管理。4.  高级监控项的使用以及自动化配置。5.  web页面的简单监控。 注意:该课程,需要有一定的 zabbix 和 Linux 基础,建议您先把>看完,再看此套课程,这个是在它的基础上进行讲解的。                                                                                                                                                                                                                                                                                               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值