zabbix 告警小试
zabbix 告警小试
1. 实验内容简述
本次实验,旨在通过zabbix监控,实现对告警信息的实时通知,主要用到了zabbix中的item、trigger、action、user、user group、media等内容,通过item监控特定的对象,当item返回值满足一定条件的时候,触发触发器的action动作,通知相关的用户。实现的功能有以下几点:
- 监控的内容是什么
- 在什么样的情况下属于异常,需要通知
- 以什么样的方式通知用户,怎么通知
- 通知用户的内容是什么
2. 实验步骤
2.1 创建触发器
在之前创建的item上,直接创建一个触发器,使用的item是nginx.active,当该item获取的最后的值,大于1时,就产生trigger,所以条件就是大于1或者是大于等于2.
在这里选择的是configuration-template-trigger,直接在模板里面创建触发器,关联该模板的所有主机就都会有这个触发器了。输入触发器的名称、该触发器触发之后的服务级别(未定义、information、warnning、average、high、disater),输入触发器的表达式,可以直接通过表达式向导编写,选择所需要的item,然后获取该item的指定规则的值,条件是该值大于1即可。生成的结果就是:
{Template Nginx Status:nginx.status[8080,active].last()}>=2
添加完成后就可以开始添加action了。
2.2 创建告警介质media
默认的告警介质有Email、jabber和SMS,实际上还可以通过脚本的形式,生成告警介质,在这里为了模拟介质,我们选择将告警内容输入到一个文本文件中,假装是通过短信接口发送出去了。首先是要找到zabbix-server上关于告警脚本的配置路径,也就是alertscripts的路径,在zabbix-server的配置文件中:
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
所以我们需要将编写的发送脚本,放在该目录下,而且还是能有可执行权限的shell脚本,这里我们写的很简单,对于发送短信,一般都是有三个参数,收件人、收件主题和收件内容。所以我们这里面模拟的时候也是需要三个参数,然后将内容写入到一个临时文件中。具体脚本如下:
#/bin/bash
ALERT_TO=$1
ALERT_TITLE=$2
ALERT_MESSAGE_BODY=$3
echo "-------A NEW MESSAGE-------">> /tmp/sms.log
echo "$ALERT_TO" >> /tmp/sms.log
echo "$ALERT_TITLE" >> /tmp/sms.log
echo "$ALERT_MESSAGE_BODY" >> /tmp/sms.log
在这脚本中,先获取三个变量参数值,然后将对应的内容写入到临时文件中。在这个地方有个小坑,就是message字段是换行的多个字段,如果直接用变量写入文件,只写入了最后一行,其他的内容内容都丢了,这是shell脚本应该注意的地方。其中这三个参数分别代表着收件人联系方式、收件主题和收件内容。
脚本编写完成之后,要添加可执行权限,一会是zabbix用户去调用该脚本写入,所以这涉及到权限问题,如果是先执行了脚本,生成了/tmp/sms.log文件,则当出现告警的时候,zabbix用户是无法写入的,因为该文件的属主是root,其他用户无法写入,需要重新修改权限。所以建议是删除该文件,由zabbix用户去创建。
脚本编写完成之后,就需要去web页面上进行配置了,主要是配置告警媒介media,在administration-media type中,我们选择新建,然后选择scripts,输入不带路径的脚本名称,因为脚本就存放在默认路径下。在这里,升级改版之后,需要输入参数,因为我们的脚本有三个参数,所以我们在这里也需要输入三个参数,分别是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE}.这三个参数,分别对应的内容是这样的:
{ALERT.SENDTO}:对应的是在user中用户的联系方式,可以是电话号码、Email-address等
{ALERT.SUBJECT}:对应的是在action中的subject主题
{ALERT.MESSAGE}:对应的是在action中的message信息,包含operation和recovery operation

2.3 创建用户和用户组
用户和用户组,是用来接收告警信息的,所以需要创建,在trigger触发器中,可以选择将告警信息内容,发送给用户组或单独用户,比较关键的一点时,对于主机或主机组的权限,只能授权给用户组,不能单独授权给某一个用户,所以需要创建用户组。在这里我们创建的用户组是test,用户是zhangsan。在用户的media配置中,可以选择刚刚创建的sms媒介media。然后就完成用户和用户组的创建了。
2.4 创建action
创建action,就是将之前创建的触发器,和用户关联起来,并设置通知用户的内容,配置路径在configuration-action,选择新建action。
创建action的时候,需要选定条件,也就是触发器的名称。这里我们选择的是刚才创建的触发器,Template Nginx Status: Nginx Active link overload
创建了action之后,需要在operation中进行操作了,编写告警内容信息,以及发送对象。对于告警信息,默认给了一个模板,如果技术比较好,完全可以自己写,这里我就完全是照搬了。选择operation的操作内容,选择操作方式和发送方式,send message。
配置完成之后,就可以通过来模拟触发器告警,来收信息了。
2.5 模拟告警
在这里,通过对nginx的多次访问,就能触发告警,在出发告警之后,在monitor中的problem,就能直接看到告警的概要,包含告警内容、操作action方式,是否发送成功等,点击前面的时间,可以看到详细的事件信息。
同时,通过查看记录文件,可以发现,已经有了告警通知消息。
以上就完成了告警的简单配置。
zabbix 告警小试的更多相关文章
- CMDB机柜平台结合zabbix告警展示
前段时间看了刘天斯老师的机柜展示平台,非常绚丽,而且有大屏显示的话也是能够体现运维价值的.刚好最近自己也在协助朋友做一个开源的CMDB平台,这里就说下我们CMDB平台的一些数据: 开源项目地址:Git ...
- 通过微信服务号推送Zabbix告警
近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息. 分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台: 而之前文章中的A ...
- 一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- [置顶]
个人微信号发送zabbix告警信息
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- [置顶]
一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...
- zabbix告警邮件美化
为了更好的用户体验,我们需要尽量美化我们的输出内容,尽量做到整齐划一,让人看了会有很舒服的感觉, 这个好像和苹果的产品一样,给人一种美感让人感觉非常享受. 一般我们的zabbix告警邮件就是纯文字,建 ...
- zabbix告警邮件、短信发送错误快速排查方法
zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...
- zabbix告警模板
邮件 webhook模板 ZABBIX告警通知 告警状态:[{TRIGGER.STATUS}] 告警主机:[{HOST.NAME}] 主机地址:[{HOST.IP}] 告警时间:[{EVENT.DAT ...
- zabbix 告警实践分享 一键实现zabbix 电话、邮件、微信告警
众所周知Zabbix 是一款用来监控IT基础设施的监控套件,同时也具有很多方便运维人员使用的优秀功能,如:支持多条件告警,支持多种告警方式,支持多组模板.支持模板继承,因此在众多的开源运维监控软件中独 ...
随机推荐
- shell 查找与替换
grep sed 如果想把一个字符串中的一些字符删除可以如此:#Echo “2006-11-21 22:16:30” | sed ‘s/-//g’ | sed ‘s/ //g’ | sed ‘s/:/ ...
- SlidingMenu的使用详解
前言- 最近自己在做一个Android的程序,需要用到一个侧滑的菜单,发现了SlidingMenu这个开源项目.简单实用,但是实战的时候遇到了许多小问题,今天来记录一下. SlidingMenu的使用 ...
- Canvas 绘图学习笔记2
1 绘制文本 fillText(string,x,y,maxWidth) //填充试绘制文本 strokeText(string,x,y,maxWidth) 画线试绘制文本 设置字体样式: cont ...
- 用存储过程向数据库添加大量数据【mysql】
预分配ID的设计,需要先为数据库生成大量的数据.比如对用户ID有要求的系统,那么用户ID就要预先生成. 通过python,php,c/c++/c#,js等程序生成也是可以,但需要这些程序环境,而且单条 ...
- 文件去除git版本控制
git的版本控制是由其文件中的 .git文件来进行控制,但是这个文件一般情况是隐藏的. 想去除git的版本控制,有两种方式. 1.可以直接将其中的.git文件找出并删除 2.还可以通过命令的方式来操作 ...
- quartz定时任务cron表达式
cron 表达式格式:秒 分 时 日 月 周 年(可选) 子表达式范围 字段名 字段解释 值范围 特殊字符 Seconds 秒 0~59 , - * / Minutes 分 0~59 , - * / ...
- 教你一招 | 用Python实现简易可拓展的规则引擎
做这个规则引擎的初衷是用来实现一个可序列号为json,容易拓展的条件执行引擎,用在类似工作流的场景中,最终实现的效果希望是这样的: 简单整理下需求 执行结果最终返回=true= or false 支持 ...
- cmd黑客入侵命令大全
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名(03前的为用户名)-注意:参数-A要大写 tracert -参数 ip(或计算机名) 跟踪路由(数据包 ...
- log4net:ERROR XmlHierarchyConfigurator: Cannot find Property [File] to set object on [TF.Log.FileAppender]
难受,香菇. 大概研究了两个多小时,搜了很多资料都没有很完美的答案,最后突然脑子就一闪一闪,才弄明白咋回事. log4net:ERROR XmlHierarchyConfigurator: Canno ...
- Git + Docker + Jenkins自动化部署web到Linux(Centos)
1.把代码托管到Github上 2.安装Docker 3.安装Jenkins 4.在项目中编写Dockerfile.publish.sh (1)Dockerfile内容 # 基于dotnet基础环境构 ...