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基础设施的监控套件,同时也具有很多方便运维人员使用的优秀功能,如:支持多条件告警,支持多种告警方式,支持多组模板.支持模板继承,因此在众多的开源运维监控软件中独 ...
随机推荐
- C# 利用位运算传递多个参数方法
前言 在工作中用sendMessage的方法向另外一个进程中传递窗体的位置,长度,宽度四个值,但是sendMessage的方法签名中只有两个参数.于是在网上找到了一些代码,找到了这个利用位运算来合并参 ...
- ElasticSearch head 插件安装
head 客户端可以很方便在上面创建索引,类型,文档,还有查询,使用它管理elasticsearch 提高效率. 在安装head 客户端之前必须安装node.js 环境,因为它是用node.js 编写 ...
- tomat 欢迎页面设置在WEB-INF目录下时不显示问题
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w ...
- MyDAL - .QueryOneAsync() 使用
索引: 目录索引 一.API 列表 .QueryOneAsync() .QueryOneAsync<M>() 如: .QueryOneAsync<Agent>() , 用于 单 ...
- Hive参数
1.hive当中的参数.变量都是以命名空间开头 2.通过${}方式进行引用,其中system.env下的变量必须以前缀开头 3.hive参数设置方式 1.修改配置文件${HIVE_HOME}/conf ...
- Jenkins 配置GitLab插件和Git插件
本文演示如何在安装完Jenkins之后,配置GitLab插件和Git插件. 1 安装插件 浏览器登录Jenkins Web UI,点击系统管理,再点击管理插件,切换到可选插件,分别搜索GitLab P ...
- python使用rabbitMQ介绍一(生产-消费者模式)
1 模式介绍 生产者-消费者模式是最简单的使用模式. 一个生产者P,给队列发送消息,一个消费者C来取队列的消息. 这里的队列长度不限,生产者和消费者都不用考虑队列的长度. 队列的模型图: 2 示例代码 ...
- redis -hash(哈希.对象)
hash 用于储存对象,对象的结构为属性.值 值的类型string 增加.修改: 设置单个属性: hset 键 field 值 例如: 设置键 user 的属性name 为 python hset u ...
- js坚持不懈之13:JavaScript查找HTML元素的方法
1. 通过 id 查找 HTML 元素 <!DOCTYPE html> <html> <body> <p id = "intro"> ...
- 调研行为树jbt
最近要做游戏ai,看了一下行为树的东西,因为用的java,所以主要看了jbt: https://github.com/gaia-ucm/jbt 这玩意分编辑器JBTEditor和核心库JBTCore两 ...