通过云监控(CMS)报警回调实现云服务器报警信息的语音播报

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 本文介绍了获取云监控报警回调的有趣实践。

本文介绍了获取云监控报警回调的有趣实践。

本文内容来自实战派征文,作者为wangbin_ouhin。

场景介绍

针对阿里云上部署的业务系统,现在有通过Zabbix收集指标和服务的死活监视。

为了提高业务监视的可靠性和及时性,经调查后决定通过使用阿里云的云监控和Zabbix组成双保险,并针对核心服务器进行深度定制:当云监控(CMS)监视到问题时,通过报警回调办公区树莓派的Web接口,实现办公区内的语音播报。便于运维小伙伴及时跟进。

结构图如下:

目标读者

已在使用阿里云平台,想要通过云监控的报警回调第一时间获取系统警报的运维团队。

前提条件/环境准备

  1. 已开通云监控(CMS)服务

  2. 一台云服务器(监视对象)

  3. 办公区内的树莓派(标准noobs系统)及音响

操作步骤

步骤一:在树莓派上启动报警回调服务

报警服务基于Python3实现,使用Python CGI脚本启动Web服务,并通过路由器的NAT对外公开,以供阿里云调用。

服务目录文件如下

../

├── cgi-bin

│ └── warning.py <= 语音播报脚本

├── cgiserver.py <= Web服务CGI脚本

├── warning-recovery.mp3 <= 报警事件恢复的语音文件

└── warning.mp3 <= 报警事件开始的语音文件

  1. 语音播报脚本(warning.py)的实现

使用vlc库播放语音。

使用cgi库获取云监控的回调参数。

'alertState'为OK视为问题恢复;

上述以外视为问题发生。

*报警参数文档URL:

https://help.aliyun.com/document_detail/60714.html?utm_content=g_1000230851&spm=5176.20966629.toubu.3.f2991ddcpxxvD1#h2-url-4

*源代码:

#!/usr/bin/env python3

import time,vlc
import cgi

form = cgi.FieldStorage()
audio_file = "warning.mp3"
if 'alertState' in form and form['alertState'].value == "OK":
audio_file = "warning-recovery.mp3"

audio_warning="file:///home/pi/Desktop/py-server/" + audio_file
vlc_instance = vlc.Instance()
vlc_player = vlc_instance.media_player_new()
vlc_media = vlc_instance.media_new(audio_warning)
vlc_player.set_media(vlc_media)
vlc_player.play()
time.sleep(1)
audio_length = vlc_player.get_length() / 1000
time.sleep(audio_length)
Web服务CGI脚本(cgiserver.py)的实现
使用Python标准的http.server库来启动Web服务。此处使用8000端口提供服务。
*源代码:
from http.server import CGIHTTPRequestHandler, HTTPServer

handler = CGIHTTPRequestHandler
handler.cgi_directories = ['/cgi-bin', '/htbin'] # this is the default
server = HTTPServer(('0.0.0.0', 8000), handler)
server.serve_forever()

  1. 准备报警开始和恢复时的mp3文件

建议使用10秒以内辨识度高的语音文件,文本最好重复2遍。

另外,记得在树莓派音量按钮右键点击,选择AV Jack,以便通过音响输出。

*此处非常感谢办公室的小姐姐友情录音。

  1. 启动Web服务对外公开

转到cgiserver.py脚本目录,执行如下命令启动Web服务。

python3 cgiserver.py

并在路由器上设置NAT把树莓派的8000端口服务对外公开。

*由于路由器厂商差别较大此处省略截图。

步骤二:云监控(CMS)报警规则设定

  1. 创建报警规则

打开【云监控】服务,依次点击左侧【报警服务】》【报警规则】。页面展示后点击【创建报警规则】按钮。设置截图及说明如下:

  1. 添加监视规则

本次实验以云服务器的CPU使用率为例进行展示。截图及说明如下:

方案验证

  1. 进入验证用云服务器,使CPU使用率达到100%

执行命令: yes > /dev/null &

*本服务器是双核,需要执行两次

*记录下返回的PID,测试完毕后使用kill PID命令结束进程。

  1. 树莓派接收到阿里云的调用

手机和邮件收到报警信息的同事,树莓派连接的音响播放了报警信息。

恢复的时的报警同理。

结语

通过云监控的回调来播放报警语音的尝试得到了同事们的认可,可以在开会等不方便查看短信及邮件的情况下第一时间了解到报警状况。后续还可以结合IoT配置灯光提醒,有很大的扩展潜力。有兴趣的小伙伴可以尝试一下。

相关实践学习
RocketMQ监控/告警一站式搭建应用
RocketMQ监控/告警一站式搭建演示
相关文章
|
SQL JSON Prometheus
14-TDengine安装报警模块实现报警监测Webhook回调与邮件推送
14-TDengine安装报警模块实现报警监测Webhook回调与邮件推送
521 0
14-TDengine安装报警模块实现报警监测Webhook回调与邮件推送
|
弹性计算 监控 应用服务中间件
云监控之自定义监控
云监控之自定义监控
|
监控 负载均衡 网络协议
云监控-主机监控功能介绍|学习笔记
快速学习云监控-主机监控功能介绍
183 0
云监控-主机监控功能介绍|学习笔记
|
监控 数据库 开发者
云监控-创建日志监控|学习笔记
快速学习云监控-创建日志监控
121 0
云监控-创建日志监控|学习笔记
|
监控 机器人
云监控 --- 报警回调
公网可访问的URL,用于接收云监控通过POST请求推送的报警信息;云监控除了电话、短信、邮件和钉钉机器人的报警通知方式外,还可以使用报警回调方式,让您更自由、更灵活的处理告警
516 0
云监控 --- 报警回调
|
监控
云监控 --- 报警屏蔽
云监控报警规则在指定时间内不发生报警
315 0
云监控 --- 报警屏蔽
|
JSON 监控 数据格式
云监控报警
对监控信息设置报警规则,当监控数据阈值达到报警条件时,触发相应报警通知方式。
402 0
云监控报警
|
监控 Kubernetes 容器
云监控报警最佳实践之无数据策略
本文介绍了云监控报警中的无数据策略,通过该策略用户可以实现被监控对象无数据时的响应、处理。 ## 背景 云监控报警通常情况下是通过监控数据的阈值的判断来进行报警,比如cpu超过80%报警等。但有时候被监控对象的监控数据出现不连续或断掉的情况。如果要对这种情况进行报警,就需要配置无数据策略。 ## 配置无数据策略 首先进入[云监控控制台](https://cloudmonitor.console.
485 2
云监控报警最佳实践之无数据策略
|
运维 监控 安全
SLS告警通知体验升级——移动端免登查看与操作
SLS告警通知体验重磅升级,支持了移动端免登陆的能力,从而可以随时随地在手机上查看告警信息并进行后续的管理,提升运维效率。
277 0
|
安全 机器人 Shell
WGCLOUD如何集成钉钉机器人发送告警
WGCLOUD如何集成钉钉机器人发送告警
WGCLOUD如何集成钉钉机器人发送告警