写点什么

面向 Amazon CloudWatch 控制面板的 API 和 CloudFormation 支持

  • 2019-11-13
  • 本文字数:3405 字

    阅读完需:约 11 分钟

面向 Amazon CloudWatch 控制面板的 API 和 CloudFormation 支持

我们在几年前发布了 CloudWatch 控制面板。在专为这次发布撰写的文章中,我介绍了如何以交互方式创建控制面板,以便以图形形式显示所选的 CloudWatch 指标。发布之后,我们增加了其他功能,包括全屏模式、深色主题、控制 Y 轴的范围、简化的重命名、持久性存储和新的可视化选项


新 API 和 CLI


虽然控制台支持非常有利于交互式使用,但许多客户要求我们提供对控制面板及其中小部件的编程式创建和操作的支持。这些客户想要动态构建和维护控制面板,从而在创建和销毁相应的 AWS 资源时添加和删除小部件。其他客户则希望在两个或多个 AWS 账户中设置和维护一组一致的控制面板。


我非常高兴地宣布,面向 CloudWatch 控制面板的 API、CLI 和 AWS CloudFormation 支持现已推出,您可以立即开始使用!


我们新增了四个 API 函数 (和等效的 CLI 命令):


[](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListDashboards.html "undefined") / aws cloudwatch list-dashboards – 用于提取账户内所有控制面板的列表,或共享通用前缀的子集。


[](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetDashboard.html "undefined") / aws cloudwatch get-dashboard – 用于提取单个控制面板的详细信息。


[](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutDashboard.html "undefined") / aws cloudwatch put-dashboard – 用于创建新控制面板或更新现有控制面板。


[](http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DeleteDashboards.html "undefined") / aws cloudwatch delete-dashboards – 用于删除一个或多个控制面板。


控制面板概念 我将要向您展示如何使用这些函数和命令。在转入正题之前,我应该介绍几个重要的控制面板概念和属性。



全局 – 控制面板是 AWS 账户的一部分,但未与特定 AWS 区域关联。每个账户最多可以包含 500 个控制面板。


命名 – 每个控制面板都有一个在 AWS 账户内唯一的名称。名称最长可达 255 个字符。


网格模式 – 每个控制面板都由网格单元格组成。网格包括 24 个单元格,高度可根据需要调整。控制面板中的每个小部件可位于一组特定的网格坐标上,大小可跨越一个整数的网格单元格。


小部件 (可视化) – 每个小部件可以显示文本或一组 CloudWatch 指标。文本通过 Markdown 指定;指标可以显示为单个值,或以折线图或堆积面积图的形式显示。每个控制面板最多可以包含 100 个小部件。显示指标的小部件还可以与 CloudWatch 警报相关联。控制面板有 JSON 表示形式,现在您可以在控制台中看到并编辑它。只需单击 Action 菜单并选择 View/edit source 即可:



下面是我的控制面板源:



您可以使用此 JSON 作为您自己的应用程序的起点。如您所见,控制面板中每个小部件的 widgets 数组中都有一个条目;每个条目描述一个小部件,从其类型、位置和大小开始。


使用 API 创建控制面板


假设我要在特定区域为我的每个 EC2 实例创建一个含有小部件的控制面板。我会使用 Python 和适用于 Python 的 AWS 软件开发工具包,然后按如下所示开始创建 (请原谅我的代码不够专业):


Python


import boto3import json
cw = boto3.client("cloudwatch")ec2 = boto3.client("ec2")
x, y = [0, 0]width, height = [3, 3]max_width = 12widgets = []
复制代码


接着,我直接对实例进行迭代,以便为每个实例创建 widget 词典,并将其附加在 widgets 数组中:


Python


instances = ec2.describe_instances()for r in instances['Reservations']:    for i in r['Instances']:
widget = {'type' : 'metric', 'x' : x, 'y' : y, 'height' : height, 'width' : width, 'properties': {'view' : 'timeSeries', 'stacked' : False, 'metrics' : [['AWS/EC2', 'NetworkIn', 'InstanceId', i['InstanceId']], ['.', 'NetworkOut', '.', '.'] ], 'period' : 300, 'stat' : 'Average', 'region' : 'us-east-1', 'title' : i['InstanceId'] } }
widgets.append(widget)
复制代码


我更新循环内的位置 (xy),并形成一个网格 (如果我不指定位置,则小部件会从左向右、从上至下进行排列):


Python


x += width        if (x + width > max_width):            x = 0            y += height
复制代码


处理完所有实例后,我创建一个 JSON 版本的小部件数组:


Python


body   = {'widgets' : widgets}body_j = json.dumps(body)
复制代码


接下来,我创建或更新我的控制面板:


Python


cw.put_dashboard(DashboardName = "EC2_Networking",                 DashboardBody = body_j)
复制代码


运行代码后,会获得以下控制面板:



CloudWatch 团队建议,以编程方式创建的控制面板应包括文本小部件 (用于说明控制面板是自动生成的) 以及指向所使用的源代码或 CloudFormation 模板的链接。这样可防止用户在外部对控制面板进行手动更改。如前所述,每个指标小部件还可以与一个 CloudWatch 警报相关联。您可以通过编程方式或使用 CloudFormation 模板来创建警报,如示例 CPU 使用率警报。如果您决定这样做,则警报阈值会显示在小部件中。要详细了解此操作,请阅读 Tara Walker 近期发布的文章 Amazon CloudWatch 发布了控制面板警报功能。更进一步的操作是,我可以使用 CloudWatch Events 和 Lamba 函数来跟踪某些资源的创建与删除,并在发生更改时更新控制面板。要了解如何执行此类操作,请阅读使用 AWS Lambda 让 CloudWatch 控制面板保持最新


使用 CLI 访问控制面板 我还可以通过命令行访问和操作我的控制面板。例如,我可以生成一个简单的列表:


Bash


$ aws cloudwatch list-dashboards --output table----------------------------------------------|               ListDashboards               |+--------------------------------------------+||             DashboardEntries             |||+-----------------+----------------+-------+|||  DashboardName  | LastModified   | Size  |||+-----------------+----------------+-------+|||  Disk-Metrics   |  1496405221.0  |  316  ||||  EC2_Networking |  1498090434.0  |  2830 ||||  Main-Metrics   |  1498085173.0  |  234  |||+-----------------+----------------+-------+|
复制代码


然后,我删除 Disk-Metrics 控制面板:


Bash


$ aws cloudwatch delete-dashboards --dashboard-names Disk-Metrics
复制代码


此外,也可以检索用于定义控制面板的 JSON:



使用 CloudFormation 创建控制面板


控制面板还可以在 CloudFormation 模板中进行指定。下面是一个简单的 YAML 格式的模板 ( DashboardBody 仍以 JSON 指定):


YAML


Resources:  MyDashboard:    Type: "AWS::CloudWatch::Dashboard"    Properties:      DashboardName: SampleDashboard      DashboardBody: '{"widgets":[{"type":"text","x":0,"y":0,"width":6,"height":6,"properties":{"markdown":"Hi there from CloudFormation"}}]}'
复制代码


我将模板放置在一个文件中,然后使用控制台或 CLI 创建堆栈:


Bash


$ aws cloudformation create-stack --stack-name MyDashboard --template-body file://dash.yaml{    "StackId": "arn:aws:cloudformation:us-east-1:xxxxxxxxxxxx:stack/MyDashboard/a2a3fb20-5708-11e7-8ffd-500c21311262"}
复制代码


下面是控制面板:



现已推出


此功能现已推出,您可以立即开始使用。您可以免费创建 3 个控制面板,每个控制面板最多包含 50 项指标;如果创建的控制面板超过 3 个,则每月需支付 3 USD (相关价格信息,请访问 CloudWatch 定价页面)。您每月最多可以免费调用 100 万次新 API 函数;如果超出此范围,则每调用 1000 次需支付 0.01 USD。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/new-api-cloudformation-support-for-amazon-cloudwatch-dashboards/


2019-11-13 08:00962

评论

发布
暂无评论
发现更多内容

Cornerstone for Mac – 最强大的SVN客户端,让版本控制更流畅!

Rose

编程开发!IntelliJ IDEA 2025.1.1中文激活教程-Mac/win

Rose

mestrenova 14下载安装(核磁数据处理软件)-Mac/win

Rose

小红书笔记详情API接口(附代码示例)

tbapi

小红书笔记详情接口 小红书API 小红书笔记数据采集 小红书笔记详情api

【HarmonyOS】鸿蒙实现刻度尺

鸿蒙 HarmonyOS HarmonyOS NEXT 实践分享

vm虚拟机安装教程 附VMware Fusion Pro 13密钥及win11镜像包

Rose

密码测评:确保数字安全的必要手段

黑龙江陆陆信息测评部

演讲大咖预告丨2025 Altair离散元仿真技术研讨会火热报名中!

Altair RapidMiner

数字孪生 仿真 CAE 离散元仿真 工程机械

私有化im即时通讯及协同办公平台推荐!

BeeWorks

即时通讯 IM 私有化部署 企业级应用软件

文献解读-LettuceGDB: The community database for lettuce genetics and omics

INSVAST

基因测序 基因数据分析 Sentieon 变异检测 精准医疗

FunProxy - 使用 Rust 构建跨平台全链路测试抓包代理工具

vivo互联网技术

效率 rust 测试 代理 抓包工具

专为MacOS设计的视频下载器:Downie 4

Rose

Amazon Q 从入门到精通 – 快速实战篇

亚马逊云科技 (Amazon Web Services)

Autodesk AutoCAD 2026破解版(cad2026中文安装包)-Mac/win

Rose

仓库拣货优化的领域建模

PeterOne

人工智能 运筹优化

我在 Google L4 面试中的经验和教训

Nackydeng

程序员求职 谷歌面经 北美求职 google interview

Mac Axure RP 11中文安装教程 附 Axure RP 11密钥

Rose

SecureCRT:工程师的终极终端仿真器 ⚡ 支持SSH/Telnet/Serial,安全高效!

Rose

百度公布动物语言转换专利!可实现与动物深度交流

科技热闻

千万级成品数据集:OCR全能选手的“硬核底座”

数据堂

OCR 实现光学字符识别 数据标注 大模型 人工智能、

HarmonyOS App 如何实现全网比价工具

网罗开发

鸿蒙 HarmonyOS HarmonyOS NEXT

麦杰工业数据底座亮相德阳,为工业设备管理贡献力量

麦杰科技

Bolt.diy 创意建站 | 不懂代码,你也可以快速建站

六月的雨在InfoQ

CAP 函数计算 Bolt.diy 自然语言建站

BeeWorks IM:专业安全的企业私有化即时通讯软件

BeeWorks

即时通讯 IM 私有化部署 企业级应用

《算法导论(第4版)》阅读笔记:p10-p10

codists

算法

麦杰工业数据底座亮相德阳,为工业设备管理贡献力量

麦杰研究院

AI驱动仿真未来丨2025 Altair区域技术交流会华东站,报名开启!

Altair RapidMiner

AI 汽车 数字孪生 仿真 CAE

第二章:数据治理的边界在哪里

数据小吏

数据治理

职场人必备! Acrobat Pro DC 2023 – 轻松搞定合同、表单、电子签名!

Rose

2D动画设计 Reallusion Cartoon Animator Mac中文激活版

Rose

影响LED显示屏清晰度的三大关键要素

Dylan

商业 LED显示屏 全彩LED显示屏 led显示屏厂家 舞台表演

面向 Amazon CloudWatch 控制面板的 API 和 CloudFormation 支持_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章