亚马逊云表构建库
AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .
计量对象
计量对象代表由AWS服务或您自己发射的度量衡
应用程序,例如 CPUUsage, (中文(简体) ), FailureCount 或者说 Bandwidth。 。 。 .
计量对象可以直接构建或被资源所暴露为
属性。 显示度量衡的资源将具有可查看的功能
喜欢 metricXxx() 它将返回带有默认的已初始化的计量对象
这有道理.
譬如说, lambda.Function 对象有: fn.metricErrors() 方法,哪个
表示 Lambda 函数报告的错误量 :
declare const fn: lambda.Function;
const errors = fn.metricErrors();
Metric 对象可以是账户,也可以是区域。 您可以指定 account 财务报告和审定财务报表 region 作为度量的属性,或使用 metric.attachTo(Construct) 方法. metric.attachTo() 将自动复制 region 财务报告和审定财务报表 account 区域 Construct,可以来自构造树的任何地方.
你也可以即兴表演 Metric 用于引用的任何对象
已公布的衡量标准
在CDK构造上没有使用方便方法曝光.
例如:
const hostedZone = new route53.HostedZone(this, 'MyHostedZone', { zoneName: "example.org" });
const metric = new cloudwatch.Metric({
namespace: 'AWS/Route53',
metricName: 'DNSQueries',
dimensionsMap: {
HostedZoneId: hostedZone.hostedZoneId
}
});
证明一个新的计量对象
如果你想参考一个尚未被现有构造所暴露的度量衡,
你可以即兴表演 Metric 用于代表它。 例如:
const metric = new cloudwatch.Metric({
namespace: 'MyNamespace',
metricName: 'MyMetric',
dimensionsMap: {
ProcessingStep: 'Download'
}
});
计量数学
数学表达式通过即时 MathExpression 课.
例如,一个将另外两个度量的数学表达式看起来是这样的:
declare const fn: lambda.Function;
const allProblems = new cloudwatch.MathExpression({
expression: "errors + throttles",
usingMetrics: {
errors: fn.metricErrors(),
faults: fn.metricThrottles(),
}
});
你用得着 MathExpression 类似任何其他度量衡的对象,包括使用
它们在其他数学表达式中:
declare const fn: lambda.Function;
declare const allProblems: cloudwatch.MathExpression;
const problemPercentage = new cloudwatch.MathExpression({
expression: "(problems / invocations) * 100",
usingMetrics: {
problems: allProblems,
invocations: fn.metricInvocations()
}
});
搜索表达式
数学表达式也支持搜索表达式. 例如,以下内容: 搜索表达式返回它找到的所有 CPUUUtili化 度量衡,并带有 显示平均统计的图表,汇总时间为5分钟:
const cpuUtilization = new cloudwatch.MathExpression({
expression: "SEARCH('{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\"', 'Average', 300)",
// Specifying '' as the label suppresses the default behavior
// of using the expression as metric label. This is especially appropriate
// when using expressions that return multiple time series (like SEARCH()
// or METRICS()), to show the labels of the retrieved metrics only.
label: '',
});
跨账户和跨区域搜索表达式也得到了支持. 使用
页:1 searchAccount 财务报告和审定财务报表 searchRegion 要指定账户的属性
和/或区域对搜索表达式进行评价.
合计
要图解或提醒测量值, 您必须先用函数组合它们
喜欢 Average 或百分位函数像 P99。默认情况下,大多数计量对象
由 CDK 库返回的将配置为 Average 结束 300 seconds (5分钟).
例外是,如果该度量值代表了一系列离散事件,例如:
失败。 在这种情况下,计量对象将被配置为 Sum 结束 300 seconds,即它代表了该事件发生在
时间段.
如果您想要更改 Metric 对象的默认集合( 例如, ), 函数或周期,您可以通过通过附加参数来实现 至度量函数调用:
declare const fn: lambda.Function;
const minuteErrorRate = fn.metricErrors({
statistic: 'avg',
period: Duration.minutes(1),
label: 'Lambda failure rate'
});
此函数还允许更改公尺标签或颜色( 这将是 插入图表时有用,见下文.
比率对和数
使用原因
Sum计算离散事件是 有点 事件为 以任一方式发射0或者说1(例如Errors和一些是 仅以1(例如NumberOfMessagesPublished用于SNS 专题).以防万一
0- 量子被射出, 它有道理采取Average这其中 衡量标准:结果将是所有处决的错误的一小部分.若为
0- 度量衡没有释放Average永远等于1, (中文(简体) ), 也没什么用.为了简化心理模式
Metric对象,我们默认为 使用汇总Sum,这两个指标类型将相同。 狦 恰好知道您想要提醒的量子 以速率计算是合理的 (单位:千美元)Average)你总是可以选择改变统计.
标签
度量衡标签在包含度量衡的图形传说中被显示.
你用得着 动态标签 显示关于显示的时间序列的汇总信息 在传说中。 例如,如果使用:
declare const fn: lambda.Function;
const minuteErrorRate = fn.metricErrors({
statistic: 'sum',
period: Duration.hours(1),
// Show the maximum hourly error count in the legend
label: '[max: ${MAX}] Lambda failure rate',
});
作为参数标签,可见范围内的最大值将 在图例中的时间序列名称旁边显示.
如果计量是一个数学表达式,产生一个以上的时间序列,则 最大值将逐个计算并显示每个时间序列的产量 通过数学表达式.
警报
警报可以通过两种方式之一在度量上生成. 创建一个 Alarm
对象,通过 Metric 将提醒设置在 :
declare const fn: lambda.Function;
new cloudwatch.Alarm(this, 'Alarm', {
metric: fn.metricErrors(),
threshold: 100,
evaluationPeriods: 2,
});
或者,你可以打电话 metric.createAlarm()数字 :
declare const fn: lambda.Function;
fn.metricErrors().createAlarm(this, 'Alarm', {
threshold: 100,
evaluationPeriods: 2,
});
创建提醒时要设置的最重要属性是:
threshold: 比较度量衡的值.comparisonOperator: 用于比较操作,默认为metric >= threshold。 。 。 .evaluationPeriods: 衡量尺度必须连续多少个周期 突破触发警报的门槛.
要创建交叉账户提醒, 请确定您已启用 交叉账户功能 在云层观察。 然后,设置 account 属性 Metric 手动或通过 metric.attachTo() 方法.
提醒动作
要将动作添加到提醒中, 请使用来自
@aws-cdk/aws-cloudwatch-actions 软件包。 例如,向
当警报中断时, SNS 主题如下:
import * as cw_actions from '@aws-cdk/aws-cloudwatch-actions';
declare const alarm: cloudwatch.Alarm;
const topic = new sns.Topic(this, 'Topic');
alarm.addAlarmAction(new cw_actions.SnsAction(topic));
通知格式
提醒可以在两个"格式"中创建一个:
- 有"顶级参数"(这些是"云表警报"的经典风格).
- 并有一份测量规格清单(这些是"云表警报"的现代风格).
对于后向兼容性, CDK 将尝试创建经典的顶级 Cloud Watch 提醒 尽可能多,除非您正在使用无法以该格式表达的特性. 需要新式提醒格式的特征有:
- 计算数学
- 交叉计量
- 标签
两者的区别并不影响提醒的功能 无论如何, 除外 提醒生成的通知格式为 他们之间不同 这影响到通过SNS发出的通知, 以及这个警报引发的事件 如果你在写 输入这些通知的代码, 确保处理两种格式.
综合警报
综合警报 可以从现有的提醒资源中创建.
declare const alarm1: cloudwatch.Alarm;
declare const alarm2: cloudwatch.Alarm;
declare const alarm3: cloudwatch.Alarm;
declare const alarm4: cloudwatch.Alarm;
const alarmRule = cloudwatch.AlarmRule.anyOf(
cloudwatch.AlarmRule.allOf(
cloudwatch.AlarmRule.anyOf(
alarm1,
cloudwatch.AlarmRule.fromAlarm(alarm2, cloudwatch.AlarmState.OK),
alarm3,
),
cloudwatch.AlarmRule.not(cloudwatch.AlarmRule.fromAlarm(alarm4, cloudwatch.AlarmState.INSUFFICIENT_DATA)),
),
cloudwatch.AlarmRule.fromBoolean(false),
);
new cloudwatch.CompositeAlarm(this, 'MyAwesomeCompositeAlarm', {
alarmRule,
});
关于单位的说明
在 " 云表 " 中,计量基准与单位一起排放,如 seconds 或者说
bytes时 Metric 对象为 unit 属性,将用来
过滤器 用同一种方法排放的基线数据流 unit
属性.
特别是 unit 字段为 没有 用于调整基准或提醒阈值
值(例如,它不能用于在
兆字节 如果公尺流作为 字节) (中文(简体) ).
你几乎肯定不想说明 unit 创建时的属性
Metric 对象(它将检索所有数据,而不论其单位),
除非你有非常具体的要求。 注意,无论如何,云表
只支持过滤 unit 用于提醒,而不是在 Dashboard 图形.
关于实际单位的讨论,请参见以下 GitHub 问题 cDK中的计算 : https://github.com/aws/aws-cdk/issues/5595 (英语)
盘子
Dashboard 是存储在服务器侧的部件,可以快速访问 从AWS控制台。 可用的部件是一段时间以来一个度量的图表 参数的当前值,或 Markdown 的静态块来解释 图表的意思.
以下部件可供使用:
GraphWidget- 显示左右两侧的任何度量衡 竖轴.AlarmWidget-- 显示单个提醒的图表和提醒行 .SingleValueWidget-- 显示一组计量的当前值.TextWidget显示一些静态的Markdown.AlarmStatusWidget-- 显示您在网格视图中的提醒状态 .
图形部件
图形元件可以在任意一个 left 或者说
right 垂直轴 :
declare const dashboard: cloudwatch.Dashboard;
declare const executionCountMetric: cloudwatch.Metric;
declare const errorCountMetric: cloudwatch.Metric;
dashboard.addWidgets(new cloudwatch.GraphWidget({
title: "Executions vs error rate",
left: [executionCountMetric],
right: [errorCountMetric.with({
statistic: "average",
label: "Error rate",
color: cloudwatch.Color.GREEN,
})]
}));
使用方法 addLeftMetric() 财务报告和审定财务报表 addRightMetric() 您可以在以后的图形部件中添加参数.
图形部件也可以显示左侧或右Y轴所附加的注释.
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.GraphWidget({
// ...
leftAnnotations: [
{ value: 1800, label: Duration.minutes(30).toHumanString(), color: cloudwatch.Color.RED, },
{ value: 3600, label: '1 hour', color: '#2ca02c', }
],
}));
图形图例可以从部件底部的默认位置来调整 .
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.GraphWidget({
// ...
legendPosition: cloudwatch.LegendPosition.RIGHT,
}));
该图可以在尚未完全汇总的最后一分钟内发布活数据.
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.GraphWidget({
// ...
liveData: true,
}));
图视图可以从默认的"timeSeries"改为"bar"或"pie".
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.GraphWidget({
// ...
view: cloudwatch.GraphWidgetView.BAR,
}));
提醒部件
提醒部件显示单个提醒的图形和提醒行 :
declare const dashboard: cloudwatch.Dashboard;
declare const errorAlarm: cloudwatch.Alarm;
dashboard.addWidgets(new cloudwatch.AlarmWidget({
title: "Errors",
alarm: errorAlarm,
}));
单值部件
单值部件显示一组度量标准的最新值(相反) 改为随时间推移的数值图:
declare const dashboard: cloudwatch.Dashboard;
declare const visitorCount: cloudwatch.Metric;
declare const purchaseCount: cloudwatch.Metric;
dashboard.addWidgets(new cloudwatch.SingleValueWidget({
metrics: [visitorCount, purchaseCount],
}));
在四舍五入前显示尽可能多的数字.
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.SingleValueWidget({
metrics: [ /* ... */ ],
fullPrecision: true,
}));
文本部件
一个文本部件显示 MarkDown 的任意一块 。 用此来添加解释 到您的仪表板:
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.TextWidget({
markdown: '# Key Performance Indicators'
}));
提醒状态部件
提醒状态部件立即显示任何类型提醒的状态并给出 能够将一个或多个警报集合到一个小表面.
declare const dashboard: cloudwatch.Dashboard;
declare const errorAlarm: cloudwatch.Alarm;
dashboard.addWidgets(
new cloudwatch.AlarmStatusWidget({
alarms: [errorAlarm],
})
);
提醒状态部件仅显示点火提醒, 按状态和时间戳排序 :
declare const dashboard: cloudwatch.Dashboard;
declare const errorAlarm: cloudwatch.Alarm;
dashboard.addWidgets(new cloudwatch.AlarmStatusWidget({
title: "Errors",
alarms: [errorAlarm],
sortBy: cloudwatch.AlarmStatusWidgetSortBy.STATE_UPDATED_TIMESTAMP,
states: [cloudwatch.AlarmState.ALARM],
}));
查询结果部件
A 类 LogQueryWidget 显示 Logs Insights 查询的结果 :
declare const dashboard: cloudwatch.Dashboard;
dashboard.addWidgets(new cloudwatch.LogQueryWidget({
logGroupNames: ['my-log-group'],
view: cloudwatch.LogQueryVisualizationType.TABLE,
// The lines will be automatically combined using '\n|'.
queryLines: [
'fields @message',
'filter @message like /Error/',
]
}));
自定义部件
A 类 CustomWidget 显示 AWS Lambda 函数的结果 :
declare const dashboard: cloudwatch.Dashboard;
// Import or create a lambda function
const fn = lambda.Function.fromFunctionArn(
dashboard,
'Function',
'arn:aws:lambda:us-east-1:123456789012:function:MyFn',
);
dashboard.addWidgets(new cloudwatch.CustomWidget({
functionArn: fn.functionArn,
title: 'My lambda baked widget',
}));
您可以在 亚马逊云表用户指南。 。 。 .
平面板布局
仪表盘上的部件被直观地放入24列的网格 宽度。 通常您指定 X 和 Y 坐标,用于 Dash 板上的部件, 但由于手动操作不方便,库中包含一个简单的 排版系统可以帮助您设置您想要的仪表板.
部件有一个 width 财务报告和审定财务报表 height 财产,将自动成为
横向或纵向堆放,以填写可用的
空间.
通过调用将部件添加到 Dashboard 中 add(widget1, widget2, ...)。 。 。 .
同一呼叫中给出的部件将横向排列. 给定部件
在不同的呼叫中,将垂直排列。 更复杂的布局,
您可以使用下列部件以不同方式将部件组合在一起:
Column:垂直堆放两个或多个部件.Row: 水平显示两个或两个以上部件.Spacer: 取出空格