热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AWS告警优化

(1)AWS添加sns,略过(2)添加自定义webhook钉钉机器人,略过。(3)编写lambda函数脚本,利用cloudwatch触发告警。#-*-coding:utf-8-*-

(1)AWS添加sns,略过

(2)添加自定义webhook钉钉机器人,略过。

(3)编写lambda函数脚本,利用cloudwatch触发告警。


# -*- coding: utf-8 -*-
import json
import os
import re
import datetime
from botocore.vendored import requests
def time_format(str_time):
‘‘‘ 时间的时区转换为东8区 ‘‘‘
Ymd
= str_time.split(T)[0]
HMS
= str_time.split(T)[1].split(.)[0]
str_time
= %s %s % (Ymd, HMS)
time
= datetime.datetime.strptime(str_time, "%Y-%m-%d %H:%M:%S")
format_time
= time + datetime.timedelta(hours=8)
return format_time
def size_b_to_other(size):
"""用于转换容量单位"""
units
= [B, KB, MB, GB, TB]
# 处理异常
if size <1024:
return size
# 遍历单位的位置并用取整除赋值
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):
#钉钉机器人url
url
= "xxxxxxxx"
# 解析要使用的字段
Sns
= event[Records][0][Sns]
Subject
= Sns[Subject]
if "ALARM" in Subject:
title
= "AWS 报警触发"
tag_word
= " 连续"
elif
"OK" in Subject:
title
= "AWS 报警恢复"
tag_word
= " 未连续"
elif
"INSUFFICIENT_DATA" in Subject:
title
= "AWS 报警异常(数据不足)"
tag_word
= " , Insufficient Data 未连续"

Timestamp
= Sns[Timestamp]
Message
= Sns[Message]
Message
= json.loads(Message)

try:

Region
= Message[Region]
AlarmName
= Message[AlarmName]
service_key
= Message[Trigger][Dimensions][0][name]
service_value
= Message[Trigger][Dimensions][0][value]
MetricName
= Message[Trigger][MetricName]
Namespace
= Message[Trigger][Namespace]
Period
= Message[Trigger][Period]
EvaluationPeriods
= Message[Trigger][EvaluationPeriods]
Threshold
= Message[Trigger][Threshold]
StateChangeTime
= Message[StateChangeTime]
NewStateReason
= Message[NewStateReason]
AlarmDescription
= Message[AlarmDescription]
if "INSUFFICIENT_DATA" not in Subject:

# 转换cloudwatch单位为友好单位
lastpoint
= re.findall(r[[](.*?)[)], NewStateReason)
lastpoint_data
= size_b_to_other(float(%.2f % float(lastpoint[0].split( ()[0])))
lastpoint_time
= datetime.datetime.strptime(lastpoint[0].split( ()[1],"%d/%m/%y %H:%M:%S")
lastpoint_time
= lastpoint_time + datetime.timedelta(hours=8)
else:
lastpoint_data
= null
lastpoint_time
= time_format(StateChangeTime)
except:
Message
= json.dumps(Message, sort_keys=True, indent=2)
content
= title + "\n\n>报警主题:" + Subject + "\n\n>详细信息:" + Message + "\n\n>备注信息:消息解析异常"
pagrem
= {
"msgtype":"markdown",
"markdown": {
"title": "AWS告警" + "...." ,
"text":"报警主题 :" + title +
"\n\n>监控指标:" + AlarmName +
"\n\n>报警时间:" + str(lastpoint_time) +
"\n\n>报警资源:" + str(service_key) + " : " + str(service_value) +
"\n\n>报警信息:" + "当前值=" + str(lastpoint_data) + tag_word + str(EvaluationPeriods) + "次达到 " + "阀值=" + str(size_b_to_other(Threshold)) +
"\n\n>业务备注:" + str(AlarmDescription)
},
"at":{
"atMobiles":[
"15527453712"
]
},
"isAtAll": "False"
}
headers
={
Content-Type:application/json
}
requests.post(url, data
=json.dumps(pagrem), headers=headers)

效果图:

技术分享图片


推荐阅读
  • Postman工具使用教程
    Postman的基础功能1.GET请求GET请求:点击Params,输入参数及value,可输入多个,即时显示在URL链接上,所以,GET请求的请求头与请求参数如在接口文档中无特别 ... [详细]
  • Linux     系统安装
    Linux系统安装linux系统安装准备工作电脑、u盘、光盘、网络、硬盘主要使用光盘、网络虚拟化软件vmwarevi ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 2019.4.14第1001题:SumProblemProblemDescriptionHey,welcometoHDOJ(HangzhouDianziUniversityOnli ... [详细]
  • 抓取百万知乎用户设计之实体设计
    一.实体的关系实体是根据返回的Json数据来设计的教育经历方面用户可以有很多教育经理,USER和education是一对多的关系,一个education对应一个education一 ... [详细]
  • jquery popupDialog 使用 加载jsp页面办法
    php教程|PHP开发jqueryphp教程-PHP开发如下所示:软件市场源码,vsCode字体不变,ubuntu的所有版本,taotomcat,sqlite连接php,个人域名服 ... [详细]
  • 本文实例讲述了jQueryajax实现滚动到页面底部自动加载图文列表效果。分享给大家供大家参考,具体如下:phttp:www.w3.orgTRxht ... [详细]
  • 大数据分析Python有哪些爬虫框架
    一、ScrapyScrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用 ... [详细]
  • rbac 4表 常规设计
    rbac4表常规设计设计模型:1、管理员表(users)Schema::create('users',function(Blueprint$table){$tabl ... [详细]
  • 《每个设计师都应该掌握的50个css代码段》11~20段
    2019独角兽企业重金招聘Python工程师标准11.胶卷边框img.polaroid{background:#000;*Changethistoabackgroundima ... [详细]
  • 读书这件事
    没事晒下自己的借书清单。60多本了,不知道自己一本子能读多少本?可惜的就是没写读书笔记,都是一些泛读。图书馆要 ... [详细]
  • phpstorm使用和配置技巧
    1.使用phpstorm的过程中,有时光标不小心变成了方块状,怎么修复回来呢?见下图,去掉“Useblockcare ... [详细]
  • 记录工作和学习中遇到和使用过的Python库。Target四个Level整理Collect学习Learn练习Practice掌握Master1.Python原生和功能增强1.1py ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
author-avatar
霞慧水灵灵_973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有