aws cloudwatch监控怎么通过钉钉机器人报警
最近在完善海外业务在aws服务的CloudWatchh监控,发现CloudWatch报警通知要通过aws的sns服务,直接支持的通道有短信和邮件,但是我们想推到钉钉群里面的群机器人里面这个就要借助aws的Lambda函数服务

然后选择用sns来触发

python脚本内容变量event是sns传过来的消息内容,有点坑的是CloudWatch的报警信息很乱还要稍微优化一下
# -*- coding: utf-8 -*-
import json
import os
import re
from botocore.vendored import requests def size_b_to_other(size):
"""用于转换容量单位"""
units = ['B', 'KB', 'MB', 'GB', 'TB']
# 处理异常
if size <= 0:
return False # 遍历单位的位置并用取整除赋值
for unit in units:
if size >= 1024:
size //= 1024
else:
size_h = '{} {}'.format(size, unit)
return size_h size_h = '{} {}'.format(size, unit)
return size_h def lambda_handler(event, context):
token = os.getenv('token')
url = "https://oapi.dingtalk.com/robot/send?access_token="
headers = {'Content-Type': 'application/json'}
# 解析要使用的字段
Sns = event['Records'][0]['Sns']
Subject = Sns['Subject']
if "ALARM" in Subject:
title = "======报警信息======"
elif "OK" in Subject:
title = "======恢复======"
Timestamp = Sns['Timestamp']
Message = Sns['Message']
Message = json.loads(Message)
try:
NewStateReason = Message['NewStateReason']
AlarmDescription = Message['AlarmDescription']
# 转换cloudwatch单位为友好单位
datapoint = re.findall(r'[[](.*?)[]]', NewStateReason)
threshold = re.findall(r'[(](.*?)[)]', NewStateReason)
count = (datapoint[0].count(","))
if count == 0:
datapoint = float(str.split(datapoint[0])[0])
threshold = float(str.split(threshold[1])[0])
if threshold > 1000:
datapoint = size_b_to_other(datapoint)
threshold = size_b_to_other(threshold)
else:
i = threshold[len(threshold) - 1]
pattern = re.compile(r'^[0-9]+\.[0-9]')
if pattern.search(i):
threshold = threshold[len(threshold) - 1]
else:
threshold = threshold[len(threshold) - 2] + threshold[len(threshold) - 1] # 定义消息内容
content = title + "\n报警主题:" + "【" + Subject + "】" \
"\n报警时间:" + "【" + Timestamp + "】" \
"\n报警原因:" + "【" + NewStateReason + "】" \
"\n友好信息:" + "【" + "当前值=" + str(datapoint) + " 连续" + str(count + 1) + "次达到 " + "阀值=" + str(threshold) + "】" \
"\n备注信息:" + "【" + str(AlarmDescription) + "】" except:
Message = json.dumps(Message, sort_keys=True, indent=2)
content = title + "\n报警主题:" + "【" + Subject + "】" \
"\n详细信息:" + "【" + Message + "】" \
"\n备注信息:【消息解析异常】" data = {
"msgtype": "text",
"text": {
"content": content
}
} data = json.dumps(data)
request = requests.post(url + token, data, headers=headers)
return request.text
测试一下

aws cloudwatch监控怎么通过钉钉机器人报警的更多相关文章
- Zabbix钉钉小机器人报警
1.下载钉钉所需要的脚本golang-zabbix-robot-64,浏览器访问https://www.appgao.com/files/192.html: 图一 脚本下载 2.将脚本路径添加到 ...
- shell+钉钉机器人完成java程序中断后自启动和实时监控
java实时程序在运行过程中偶尔出现异常信息中断的情况,通过shell脚本即可完成自启动. 以下为监控一个实时的java程序的shell脚本. 通过每10秒检查一次java程序的进程,来判断程序是否处 ...
- 远见而明察近观若明火|Centos7.6环境基于Prometheus和Grafana结合钉钉机器人打造全时监控(预警)Docker容器服务系统
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_181 我们知道,奉行长期主义的网络公司,势必应在软件开发流程管理体系上具备规范意识,即代码提交有CR(CodeReview),功能 ...
- 钉钉机器人-实现监控通知功能-python
1. 首先得创建有 一个 钉钉群.(因为只能发群通知) 2. 添加机器人,得到一个url: 3. 开始写Python脚本: # -*- coding: utf-8 -*- ""&q ...
- python 小脚本升级-- 钉钉群聊天机器人
一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...
- 钉钉机器人zabbix报警
首先在钉钉群聊里添加一个自定义的机器人 并复制webhook的内容 https://oapi.dingtalk.com/robot/send?access_token=37e23308d1b84eb4 ...
- Sentry快速开始并集成钉钉群机器人
Sentry(直译为:哨兵)是一个开源错误跟踪服务,帮助开发人员实时监控和修复崩溃 Sentry本质上是一种帮助您实时监控和修复崩溃的服务 1. 安装客户端SDK 这里我们安装Java平台的SDK, ...
- elk报警监控之sentinl 钉钉+邮件告警
注:我的elk sentinl版本都是6.5.1 前期知识 es的查询语法.es watcher使用方法. https://www.cnblogs.com/pilihaotian/p/5830754. ...
- 用python写一个预警机器人(支持微信和钉钉)
背景 线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如: 如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可, ...
随机推荐
- mysql(5.7)配置文件示例
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-con ...
- php -- 断点调试 之 选择合适的xdebug
这里不讲如何在不同的ide里安装断点调试,讲一个不起眼却很容易犯的错误: 如何寻找适合你的环境的xdebug! 不要小看这个问题,如果说xdebug都错了,你再怎么安装断点调试,都不会成功,反而还找不 ...
- Javadoc转换chm帮助文档的四种方法总结
1) 将现有的 html 文件集(比如 api) 制作成chm 文档 http://www.blogjava.net/lishunli/archive/2010/01/07/308618.html 我 ...
- Linux (OpenBSD)系统目录分析
IER(7) OpenBSD Reference Manual HIER(7) NAME hier - layou ...
- 最新最全的Java面试题整理(内附答案)
Java基础知识篇 面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发, ...
- dos 打开计算机管理
一. 首先打开[运行]程序:二. 运行中输入‘CMD’:三. 然后在上面输入‘compmgmt.msc’,就可以打开“计算机管理”命令了.
- Unity长连接
http://blog.csdn.net/claine/article/details/52374546
- Centos7 Crontab
Centos7 Crontab # 查看crontab -l # 编辑 crontab -e # 重启 service crond restart ccrontab 编写规则 # 分 时 日 月 周 ...
- Linux下的awk文本分析命令实例(一)
1. 入门实例1.1 显示最近登录的5个帐号: [root@localhost ~]# | awk '{print $1}' root root root root reboot 1.2 如果只是显 ...
- tomcat启动出错 invalid LOC header
tomcat启动出错 invalid LOC header,run as maven test 没有报错,只有警告: 'build.plugins.plugin.version' for org.ap ...