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 告警小试的更多相关文章

  1. CMDB机柜平台结合zabbix告警展示

    前段时间看了刘天斯老师的机柜展示平台,非常绚丽,而且有大屏显示的话也是能够体现运维价值的.刚好最近自己也在协助朋友做一个开源的CMDB平台,这里就说下我们CMDB平台的一些数据: 开源项目地址:Git ...

  2. 通过微信服务号推送Zabbix告警

    近期看到一篇通过微信实现Zabbix告警的文章,但实践时发现,无法成功发送消息. 分析原因,应该是微信公众平台加强了登录验证,在登录时会需要管理员进行扫描二维码操作才能成功登陆后台: 而之前文章中的A ...

  3. 一个简单好用的zabbix告警信息发送工具

    之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...

  4. [置顶] 个人微信号发送zabbix告警信息

    之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...

  5. [置顶] 一个简单好用的zabbix告警信息发送工具

    之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员. 后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了. zabbix告警一直是我的痛 ...

  6. zabbix告警邮件美化

    为了更好的用户体验,我们需要尽量美化我们的输出内容,尽量做到整齐划一,让人看了会有很舒服的感觉, 这个好像和苹果的产品一样,给人一种美感让人感觉非常享受. 一般我们的zabbix告警邮件就是纯文字,建 ...

  7. zabbix告警邮件、短信发送错误快速排查方法

    zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...

  8. zabbix告警模板

    邮件 webhook模板 ZABBIX告警通知 告警状态:[{TRIGGER.STATUS}] 告警主机:[{HOST.NAME}] 主机地址:[{HOST.IP}] 告警时间:[{EVENT.DAT ...

  9. zabbix 告警实践分享 一键实现zabbix 电话、邮件、微信告警

    众所周知Zabbix 是一款用来监控IT基础设施的监控套件,同时也具有很多方便运维人员使用的优秀功能,如:支持多条件告警,支持多种告警方式,支持多组模板.支持模板继承,因此在众多的开源运维监控软件中独 ...

随机推荐

  1. windows下vagrant的安装使用

    vagrant是简便虚拟机操作的一个软件,而使用虚拟机有几个好处: 1.为了开发环境与生产环境一致(很多开发环境为windows而生产环境为linux),不至于出现在开发环境正常而移步到正式生产环境时 ...

  2. rabbitmq之基本原理及搭建单机环境

    1.RabbitMQ基本原理 1.MQ全称Message Queue,是一种分布式应用程序的通信方法,是消费-生产者模型的典型代表,producer向消息队列中不断写入消息,而另一端consumer则 ...

  3. 怎樣添加設置GridView,CheckBox全選功能

    GridView內CheckBox控件全選設置 不需要添加後台代碼操作,前端即可完成設置,如下: 前端代碼: 1.設置javascript. <html xmlns="http://w ...

  4. nginx笔记----解决windows80端口被iis占用

    打开注册表:regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP 数值数据修改成0或者其他 然后重启

  5. JavaScript 节流函数 Throttle 详解

    在浏览器 DOM 事件里面,有一些事件会随着用户的操作不间断触发.比如:重新调整浏览器窗口大小(resize),浏览器页面滚动(scroll),鼠标移动(mousemove).也就是说用户在触发这些浏 ...

  6. Docker-Dockerfile及基本语法

    Dockerfile的作用是通过它可以生成自定镜像,先介绍几个基本的docker命令. [docker镜像相关的命令]docker search 镜像名: 搜索镜像docker pull 镜像名: 镜 ...

  7. Postgres中文分词

    环境 CentOS Linux release 7.2.1511 (Core) 安装Postgres 安装postgres很简单 yum安装 sudo yum install postgresql-s ...

  8. Vue.js04:vue样式-通过属性绑定方式为元素设置class类样式

    <!-- 传统写法 --> <h1 class="red thin">这是一个h1标签</h1> <!-- 第一种使用方式,直接传递一个数 ...

  9. 百度地图引用时 报出A Parser-blocking, cross site (i.e. different eTLD+1) script

    页面引入百度地图api时 chrome控制台报出警示问题 A Parser-blocking, cross site (i.e. different eTLD+1) script, http://ap ...

  10. 【spring源码分析】IOC容器初始化(六)

    前言:经过前几篇文章的讲解,我们已经得到了BeanDefinition,接下来将分析Bean的加载. 获取Bean的入口:AbstractApplicationContext#getBean publ ...