【Zabbix】中小型企业Zabbix监控实战之告警大全

转载声明:本文转载自「数睿技术」

前言

本篇文章介绍目前常用的告警方式,以及对功能实现做讲解。本篇文章中出现的代码片段可以回复"监控脚本"获取完整代码。

0x01 E-Mail

邮件告警方式

邮件告警方式是Zabbix最常见的告警方式,是每个初学者必须掌握的告警方式。在这,笔者分享邮件告警方式花样玩法——附带数据图

▲ 效果展示图

▲ 功能实现思路

zabbix告警传入item.ky参数,利用item.key获取当前的性能图 。最后构建邮件文本内容加入性能图片。

▲ 性能图

通过分析性能图有以下发现:

http://127.0.0.1/zabbix/chart.php?period=864000& \
        stime=20180317191110&itemids%5B0%5D=25464& \ 
        type=0&updateProfile=1&profileIdx=web.item.graph& \
        profileIdx2=25464&width=1778&sid=37a0a2403c5192c8& \
        screenid=&curtime=1490613155473

period       # zabbix数据时间范围
stime        # 开始时间
itemids[0]   # item.key
type         # 图表类型
profiledx    # 项类型
width        # 图表宽度
sid          # 用户sid

必须的参数有:

"period"  : "3600"               # 一小时内的性能图
"itemids[0]" : itemID            # item的id
"type" : "0"                     # 图表类型
"profileIdx" : "web.item.graph"  # 项
"width"  : "700"                 # 宽度

仔细观察这些参数,发现变化的只有item id 其他都是可以不变的,而item.ky是在告警的时候可以直接传入的。

▲ Actions

告警动作里的配置:

HOST.HOST1:{HOST.HOST1}|HOST.IP1:{HOST.IP1}|EVENT.DATE:{EVENT.DATE}|
EVENT.TIME:{EVENT.TIME}|TRIGGER.SEVERITY:{TRIGGER.SEVERITY}|
TRIGGER.NAME:{TRIGGER.NAME}|ITEM.KEY1:{ITEM.KEY1}|ITEM.NAME1:{ITEM.NAME1}|
ITEM.VALUE1:{ITEM.VALUE1}|ITEM.ID:{ITEM.ID}|TRIGGER.STATUS:{TRIGGER.STATUS}

▲ 指定item.key获取性能图功能实现

代码片段展示

import requests
myRequests = requests.Session()
def GetGraph(itemID,pName=None):

    try:
        """
        获取性能图,首先需要登录
        通过分析,可以直接Post/Get方式登录
        """
        loginUrl = "http://%s/zabbix/index.php" % HOST
        loginHeaders={            
        "Host":HOST,            
        "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        }
        
        # 构建登录所需的信息
        playLoad = {            
        "name":USER,            
        "password":PASSWD,            
        "autologin":"1",            
        "enter":"Sign in",
        }
        
        # 请求登录 
        res = myRequests.post(loginUrl,headers=loginHeaders,data=playLoad)
        """
        登入状态后,在POST数据中加入itemid
        """
        testUrl = "http://%s/zabbix/chart.php" % HOST
        testUrlplayLoad = {            
            "period" :"3600",            
            "itemids[0]" : itemID,            
            "type" : "0",            
            "profileIdx" : "web.item.graph",            
            "width" : "700",
        }
        testGraph = myRequests.get(url=testUrl,params=testUrlplayLoad)
        
        # 返回图片源码,直接保存到本地
        IMAGEPATH = os.path.join('/tmp', pName)
        f = open(IMAGEPATH,'wb')
        f.write(testGraph.content)
        f.close()        
        return pName    
        
    except Exception as e:        
        print e        
        return False


    finally:
        myRequests.close()

0x02 Phone Call

电话告警方式

现在有许多语音通知接口厂商,所以想要实现电话告警,骚一贼!(so easy)。很多小伙伴没有部署有几个原因:

Q : 增加成本/费用

A : 有这个想法,首先你得先了解接口厂商收费标准。正常请求没有接听是不需要收费的,也就是说:收到电话时掐掉电话是不需要收费的。

笔者接口厂商十块钱余额用了一年,这十块钱还是新用户注册送的...hahahaha. 这种做法显然对厂商十分不利,但是我有不接听的理由:1) 政策限制,由于政策限制,现在无法长语音转文本,通常是很有限字数,给的信息十分有限。2) 转换慢, 我们请求的时候是需要先把文本转换成语音,接着再拨打电话将这段语音推送出去的。现在文本转语音已经有限制,需要审核通过才能发送。即使有厂商不用审核,这转换过程也是非常慢的。 3) 收到响声就已经处于备战状态。当你收到这个电话号码打来时,意味着你已经拿起手机,知道有故障。那这个时候,你完全可以看邮件/微信上面显示的告警内容。

Q : 大半夜收到电话

A : 电话告警只限最紧急的故障,平常一些普通级别的告警不建议使用电话通知方式,频繁收到紧急严重的故障问题,那你考虑的不应该是告警了,而是这套系统本身。故障是客观存在的,遇到故障一味更改告警阈值或告警方式,却忽略最根本的问题,有问题在,才会有告警,不解决问题,这告警一直在。再者就是一个对工作态度的问题了。

▲ 功能实现思路

根据严重级别分类触发电话告警脚本,回复"监控脚本"获取脚本。

0x03 SMS

短信告警方式

短信告警同样采用接口厂商提供的API接口,收取费用标准一般是3-5分钱/次。适用于中等到严重级别的告警。

▲ 功能实现思路

根据严重级别分类触发短信告警脚本,回复"监控脚本"获取脚本。

▲ 效果展示图

0x04 Wechat

微信公众号告警方式

微信告警方式也作为常用的告警方式,需要申请微信公众号。

▲ 功能实现思路:

根据严重级别分类触发微信告警脚本,回复"监控脚本"获取脚本。

▲ 效果展示图

0x05 Other

其他告警方式

一些其他的有趣告警,例如:QQ 、微信号、RTX、钉钉等告警方式都需要通过自己写脚本去请求接口完成,这里不做演示。QQ/微信都是通过分析网页版去模拟请求,RTX与钉钉有自己的接口。

▲ Github上相关的项目

QQ    https://github.com/pandolia/qqbot
Wechat https://github.com/liuwons/wxBot
RTX  https://github.com/rainfiel/rtx
...

▲ 效果展示图

RTX

总结

………………………………

各种告警方式对比:

# 文中如若出现错误,欢迎各位指出。

# 若有更好的解决方案,也非常期待能够与您交流!

「获取源码」

回复 '监控脚本'

《Linux云计算及运维架构师高薪实战班》2018年05月14日即将开课中,120天冲击Linux运维年薪30万,改变速约~~~~

*声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

- END -


原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2018-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全栈工程师成长之路

全栈开发自学路线

这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程.

91413
来自专栏java架构师

Hadoop学习1--解决启动过程中的问题

方法:http://www.aboutyun.com/thread-12694-1-1.html  http://www.linuxidc.com/topicn...

3226
来自专栏FreeBuf

自己动手打造工具系列之自动刷新简历

话说搞安全的大佬们都非常忙,自己在一步一步成长中无暇顾及其他琐碎的事情,比如让猎头注意到各位大佬。如何让猎头和大厂注意到自己呢?第一、提高自己在整个行业的曝光度...

1415
来自专栏Java3y

两个月的Java实习结束,继续努力

另外值得一说的是:别以为我写了那么多博客的就很厉害,很牛逼,其实我渣得一批!校招的算法笔试题基本没有ac的,在面试的时候,知识点说忘就忘。我写博客主要是记录一下...

2242
来自专栏Android相关

处理器结构--PipeLine&SuperScalar

最初开始,指令一条一条顺序执行,后来当工艺进步了,CPU中的元件越来越多,而在原来的顺序执行的过程中,只有一条指令的某一个阶段在执行,如取指,取数据等等,其他元...

1495

内存数据网格主要特性简介

将主存储器用作存储区域而不是使用磁盘是并不是一种全新的尝试。你可以在日常生活中发现许多使用主内存DBMS(数据库管理系统)(MMDB)执行比磁盘快得多的情况。一...

4244
来自专栏Android-JessYan

解决Retrofit多BaseUrl及运行时动态改变BaseUrl?

原文地址: http://www.jianshu.com/p/2919bdb8d09a

2983
来自专栏Java技术栈

为什么比起 IntelliJ IDEA,我更喜欢 Eclipse…

2183
来自专栏SDNLAB

P4和POF的对比

一、简介 软件定义网络(SDN)技术的发展已经历了多年,新技术层出不穷。OpenFlow作为其中的一个代表性协议,已经进化了多个版本,并被工业界和学术界广泛接受...

6283
来自专栏猿天地

微信中页面二次分享小图标丢失问题

在我们有房APP1.1的版本中增加了房产资讯的功能,昨天晚上有同事在群里反馈从APP中分享的资讯到微信中,然后再次分享出去的时候标题和小图标不见了,见下图:

1712

扫码关注云+社区

领取腾讯云代金券