使用m电子math - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用m电子math

指标数学使您可以查询多个 CloudWatch 指标,并使用数学表达式基于这些指标创建新的时间序列。您可以在 CloudWatch 控制台上直观显示生成的时间序列,并将其添加到控制面板中。以 Amazon Lambda 指标为例,您可以将 Errors 指标除以 Invocations 指标来获得错误率。然后,将生成的时间序列添加到 CloudWatch 控制面板上的图表中。

您也可以使用 GetMetricData API 操作以编程方式执行指标数学。有关更多信息,请参阅 GetMetricData

添加m阿特e将表达到 CloudWatchgraph

您可以向 CloudWatch 控制面板上的图表中添加数学表达式。每个图表限制为使用最多 500 个指标和表达式,因此仅当图表具有 499 个或更少的指标时,您才可以添加数学表达式。即使并非所有指标都显示在图表上,这一点也适用。

向图表中添加数学表达式

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 创建或编辑图表。图表中至少需要一个指标。

  3. 选择 Graphed metrics

  4. 选择 Math expression (数学表达式)Start with empty expression (从空表达式开始)。将为表达式显示一个新行。

  5. Details (详细信息) 列下方的新行中,输入数学表达式。“指标数学语法和函数”部分中的表列出了可以在表达式中使用的函数。

    要使用一个指标或另一个表达式的结果作为此表达式的公式的一部分,请使用 Id 列中显示的值:例如,m1+m2e1-MIN(e1)

    您可以更改 Id 的值。它可以包括数字、字母和下划线,并且必须以小写字母开头。将 Id 的值更改为更有意义的名称也可以使图表更易于理解;例如,从 m1m2 更改为 errorsrequests

    提示

    选择 Math Expression (数学表达式) 旁边的向下箭头可查看受支持的函数列表,您可以在创建表达式时使用这些函数。

  6. 对于表达式的 Label (标签) 列,输入一个描述表达式正在计算的内容的名称。

    如果某个表达式的结果是一组时间序列,则这些时间序列将在图表上单独的行中以不同的颜色显示。图表的下方是图表中的每个行的图例。对于生成多个时间序列的单个表达式,这些时间序列的图例文字的格式为 Expression-Label Metric-Label。例如,如果图形包含带有错误以及表达式填充 (指标 (), 0),它有一个填充为 0:,图例中的一行将是填充为 0:错误。要使图例仅显示原始指标标签,请将 Expression-Label 设置为空。

    当一个表达式在图表上生成了一组时间序列时,您无法更改用于这些时间序列的颜色。

  7. 在添加所需的表达式后,您可以通过隐藏某些原始指标来简化图表。要隐藏某个指标或表达式,请清除 Id 字段左侧的复选框。

指标m阿特s伊纳税和functions

以下各部分解释可用于指标数学的函数。所有函数都必须用大写字母编写(例如 AVG),所有指标和数学表达式的 Id 字段都必须以小写字母开头。

任何数学表达式的最终结果都必须是单个时间序列或一组时间序列。某些函数会生成标量数字。您可以在一个更大的函数中使用这些函数,从而最终生成一个时间序列。例如,采用单个时间序列的 AVG 会生成标量数字,因此它不能是最终的表达式结果。但是你可以在函数中使用它m1-AVG (m1)显示每个数据点和时间序列中的平均值之间的差异的时间序列。

数据typeabbreviations

某些函数仅对某些类型的数据有效。在函数表中使用以下列表中的缩写来代表每个函数支持的数据类型:

  • S 代表标量数字,例如 2、-5 或 50.25。

  • TS是时间序列 (单个 CloudWatch 指标随时间变化的一系列值):例如,CPUUtilization例如指标i-1234567890abcdef0过去 3 天内

  • TS [] 是一个时间序列数组,例如多个指标的时间序列

MELTICS ()function

METRICS() 函数将返回请求中的所有指标。数学表达式不包括在内。

您可以在一个更大的表达式中使用 METRICS(),从而最终生成单个时间序列或一组时间序列。例如,表达式 SUM(METRICS()) 将返回作为所有绘成图表的指标值的总和的时间序列 (TS)。METRICS()/100 将返回一组时间序列,其中的每个时间序列都显示其中一个指标的各个数据点除以 100 的结果。

您可以将 METRICS() 函数与一个字符串一起使用,仅返回在其 Id 字段中包含该字符串的绘成图表的指标。例如,表达式 SUM(METRICS("errors")) 一个是所有在其 Id 字段中具有“errors”的绘成图表的指标值的总和的时间序列。您还可以使用 SUM([METRICS(“4xx”), METRICS(“5xx”)]) 来匹配多个字符串。

基本a讽刺functions

下表列出了受支持的基本算术函数。时间序列中缺少的值被视为 0。如果数据点的值导致函数试图除以零,则会丢弃该数据点。

操作 Arguments 示例

算术运算符: + - * / ^

S, S

S, TS

TS, TS

S, TS[]

TS, TS[]

PERIOD(m1)/60

5 * m1

m1 - m2

SUM(100/[m1, m2])

AVG([m1,m2]/m3)

METRICS()*100

一元减法 -

S

TS

TS[]

-5*m1

-m1

SUM(-[m1, m2])

比较和l原理operators

您可以将比较运算符和逻辑运算符与一对时间序列或一对单标量值结合使用。在将比较运算符与一对时间序列结合使用时,运算符将返回一个时间序列,其中每个数据点为 0 (false) 或 1 (true)。如果在一对标量值上使用比较运算符,则将返回一个单标量值(0 或 1)。

如果在两个时间序列之间使用比较运算符,并且仅一个时间序列具有特定时间戳值,则该函数会将另一个时间序列中的缺失值视为 0

您可以将逻辑运算符与比较运算符结合使用来创建更复杂的函数。

下表列出了受支持的运算符。

的类型O表演者 支持O表演者

比较运算符

==

!=

<=

>=

<

>

逻辑运算符

AND 或 &&

OR 或 ||

为了说明如何使用这些运算符,假设我们有两个时间序列:metric1 具有值 [30, 20, 0, 0]metric2 具有值 [20, -, 20, -],其中 - 指示未提供该时间戳的值。

Expression 输出

(metric1 < metric2)

0, 0, 1, 0

(metric1 >= 30)

1, 0, 0, 0

(metric1 > 15 AND metric2 > 15)

1, 0, 0, 0

函数s上传m电子math

下表描述了可在数学表达式中使用的函数。用大写字母输入所有函数。

任何数学表达式的最终结果都必须是单个时间序列或一组时间序列。以下部分中的表中的某些函数会生成标量数字。您可以在一个更大的函数中使用这些函数,从而最终生成一个时间序列。例如,采用单个时间序列的 AVG 会生成标量数字,因此它不能是最终的表达式结果。但您可以在函数 m1-AVG(m1) 中使用它来显示每个数据点和该数据点的平均值之间的差异的时间序列。

在下表中,Examples (示例) 列中的每个示例都是一个表达式,用于生成单个时间序列或一组时间序列。这些示例说明如何将返回标量数字的函数用作生成单个时间序列的有效表达式的一部分。

函数 Arguments 返回值type* 描述 示例

ABS

TS

TS[]

TS

TS[]

返回每个数据点的绝对值。

ABS(m1-m2)

MIN(ABS([m1, m2]))

ABS(METRICS())

ANOMALY_DETECTION_BAND

TS

TS、S

TS[]

返回指定指标的异常检测范围。该范围由两个时间序列组成,一个表示指标的“正常”预期值的上限,另一个表示下限。该函数可接受两个参数。第一个参数是要为其创建范围的指标的 ID。第二个参数是要用于范围的标准差的数目。如果您不指定此参数,则使用默认值 2。有关更多信息,请参阅CloudWatcha名义detection

ANOMALY_DETECTION_BAND(m1)

ANOMALY_DETECTION_BAND(m1,4)

AVG

TS

TS[]

S

TS

单个时间序列的 AVG 将返回一个标量,表示指标中所有数据点的平均值。一组时间序列的 AVG 将返回单个时间序列。缺少的值被视为 0。

SUM([m1,m2])/AVG(m2)

AVG(METRICS())

CEIL

TS

TS[]

TS

TS[]

返回每个指标的上限。上限是大于或等于每个值的最小整数。

CEIL(m1)

CEIL(METRICS())

SUM(CEIL(METRICS()))

FILL

TS, TS/S

TS[], TS/S

TS

TS[]

当指标值缺失时,会用指定的填充值填充缺失的指标值。

FILL(m1,10)

FILL(METRICS(), 0)

FILL(m1, MIN(m1))

FIRST

LAST

TS[]

TS

返回时间序列数组中的第一个或最后一个时间序列。这在与 SORT 函数结合使用时非常有用。它还可用于从 ANOMALY_DETECTION_BAND 函数中获取高阈值和低阈值。

IF(FIRST(SORT(METRICS(), AVG, DESC))>100, 1, 0) 查看数组中的最高指标,该指标通过 AVG 进行排序。然后,它为每个数据点返回 1 或 0,具体取决于相应数据点的值是否大于 100。

LAST(ANOMALY_DETECTION_BAND(m1)) 返回异常预测带的下限。

FLOOR

TS

TS[]

TS

TS[]

返回每个指标的下限。下限是小于或等于每个值的最大整数。

FLOOR(m1)

FLOOR(METRICS())

IF

IF 表达式

TS

通过将 IF 与比较运算符结合使用,可以从时间序列中筛选出数据点或创建由多个已整理的时间序列组成的混合时间序列。有关更多信息,请参阅使用 IFexpressions

INSIGHT_RULE_METRIC

INSIGHT_RULE_METRIC(ruleName, metricName)

TS

使用 INSIGHT_RULE_METRIC 可在 Contributor Insights 中从规则提取统计数据。有关更多信息,请参阅图表m电视g充满活力rules 设置aContaintor Insightsm电子data

MAX

TS

TS[]

S

TS

单个时间序列的 MAX 将返回一个标量,表示指标中所有数据点的最大值。一组时间序列的 MAX 值将返回单个时间序列。

MAX(m1)/m1

MAX(METRICS())

METRIC_COUNT

TS[]

S

返回时间序列数组中的指标数量。

m1/METRIC_COUNT(METRICS())

METRICS()

null

字符串

TS[]

这些区域有:指标 ()函数返回请求中的所有 CloudWatch 指标。数学表达式不包括在内。

您可以在一个更大的表达式中使用 METRICS(),从而最终生成单个时间序列或一组时间序列。

您可以将 METRICS() 函数与一个字符串一起使用,仅返回在其 Id 字段中包含该字符串的绘成图表的指标。例如,表达式 SUM(METRICS("errors")) 一个是所有在其 Id 字段中具有“errors”的绘成图表的指标值的总和的时间序列。您还可以使用 SUM([METRICS(“4xx”), METRICS(“5xx”)]) 来匹配多个字符串。

AVG(METRICS())

SUM(METRICS("errors"))

MIN

TS

TS[]

S

TS

单个时间序列的 MIN 将返回一个标量,表示指标中所有数据点的最小值。一组时间序列的 MIN 将返回单个时间序列。

m1-MIN(m1)

MIN(METRICS())

PERIOD

TS

S

以秒为单位返回度量的时间段。有效输入是指标,而不是其他表达式的结果。

m1/PERIOD(m1)

RATE

TS

TS[]

TS

TS[]

返回指标每秒的变化率。此项的计算结果是最新数据点值和上一个数据点值之差除以两个值的秒数之差。

RATE(m1)

RATE(METRICS())

REMOVE_EMPTY

TS[]

TS[]

从时间序列数组中删除所有不带数据点的时间序列。最终将获得一个时间序列数组,其中每个时间序列包含至少一个数据点。

REMOVE_EMPTY(METRICS())

SEARCH

搜索表达式

一个或多个 TS

返回一个或多个与您指定的搜索条件匹配的时间系列。SEARCH 函数使您能够使用一个表达式将多个相关时间序列添加到图表中。该图表会动态更新,以包含稍后添加并与搜索条件匹配的新指标。有关更多信息,请参阅使用s耳e在中的突射graphs

SERVICE_QUOTA

作为使用指标的 TS

TS

返回给定使用指标的服务配额。您可以使用此选项来可视化当前用量与配额的比较情况,并设置在接近配额时向您发送警告的警报。有关更多信息,请参阅Amazon 使用情况指标

SLICE

(TS[], S, S) 或 (TS[], S)

TS[]

TS

检索时间序列数组的一部分。这在与 SORT 结合使用时特别有用。例如,可以从时间序列数组中排除顶部结果。

可以使用两个标量参数来定义要返回的时间序列集。这两个标量将定义要返回的数组的开始(包含)和结束(不包含)。该数组从零开始建立索引,因此,数组中的第一个时间序列是时间序列 0。或者,您可以仅指定一个值,CloudWatch 将返回以该值开头的所有时间序列。

SLICE(SORT(METRICS(), SUM, DESC), 0, 10) 从请求中的指标数组返回具有最高 SUM 值的 10 个指标。

SLICE(SORT(METRICS(), AVG, ASC), 5) 按 AVG 统计数据对指标数组进行排序,然后返回所有时间序列(具有最低 AVG 的 5 个时间序列除外)。

SORT

(TS[], FUNCTION, SORT_ORDER)

(TS[], FUNCTION, SORT_ORDER, S)

TS[]

根据您指定的函数,对时间序列数组进行排序。您使用的函数可以是 AVGMINMAXSUM。排序顺序可以是 ASC(升序,最低值排第一位)或 DESC(降序,最高值排第一位)。您可以选择在排序顺序后指定一个数字来充当限制。例如,如果指定的限制为 5,则仅返回排序中的前 5 个时间序列。

当图表上显示此数学函数时,图表中每个指标的标签也将进行排序和编号。

SORT(METRICS(), AVG, DESC, 10) 计算每个时间序列的平均值,对时间序列进行排序(开头为最高值),并仅返回具有最高平均值的 10 个时间序列。

SORT(METRICS(), MAX, ASC) 根据 MAX 统计数据对指标数组进行排序,然后以升序顺序返回所有指标。

STDDEV

TS

TS[]

S

TS

单个时间序列的 STDDEV 将返回一个标量,表示指标中所有数据点的标准偏差。一组时间序列的 STDDEV 将返回单个时间序列。

m1/STDDEV(m1)

STDDEV(METRICS())

SUM

TS

TS[]

S

TS

单个时间序列的 SUM 将返回一个标量,表示指标中所有数据点的值的总和。一组时间序列的 SUM 将返回单个时间序列。

SUM(METRICS())/SUM(m1)

SUM([m1,m2])

SUM(METRICS("errors"))/SUM(METRICS("requests"))*100

*使用仅返回标量数字的函数是无效的,因为表达式的所有最终结果都必须是单个时间序列或一组时间序列。而应将这些函数用作返回时间序列的较大表达式的一部分。

使用 IFexpressions

通过将 IF 与比较运算符结合使用,可以从时间序列中筛选出数据点或创建由多个已整理的时间序列组成的混合时间序列。

IF 使用以下参数:

IF(condition, trueValue, falseValue)

如果条件数据点的值为 0,则条件的计算结果为 FALSE;如果条件的值为任何其他值(无论该值是正值还是负值),则条件的计算结果为 TRUE。如果条件是一个时间序列,则会为每个时间戳单独计算该条件。

下面列出了有效语法。对于其中的每个语法,输出是单时间序列。

  • 如果 (TS)比较运算符S, S | TS,S | TS

  • 如果 (TS, TS,TS

  • 如果 (TS, S,TS

  • IF(TS, TS, S)

  • IF(TS, S, S)

  • 如果 (S, TS,TS

以下部分提供了这些语法的更多详细信息和示例。

如果 (TS)比较运算符S,scalar2 | metric2,scalar3 | metric3)

对应的输出时间序列值:

  • 值为 scalar2metric2(如果 TS 比较运算符 S 为 TRUE)

  • 值为 scalar3metric3(如果 TS 比较运算符 S 为 FALSE)

  • 是一个空白时间序列(如果 metric3 中没有对应的数据点,或者如果表达式中省略了 scalar3/metric3

IF (metric1, metric2, metric2指标 3

对于 metric1 的每个数据点,对应的输出时间序列值:

  • 值为 metric2(如果 metric1 的对应数据点为 TRUE)。

  • 值为 metric3(如果 metric1 的对应数据点为 FALSE)。

  • 值为 0(如果 metric1 的对应数据点为 TRUE 且 metric2 中没有对应的数据点)。

  • 被删除(如果 metric1 的对应数据点为 FALSE 且 metric3 中没有对应的数据点,或者如果表达式中省略了 metric3)。

下表显示了此语法示例。

指标或f剪裁

(metric1)

[1, 1, 0, 0, -]

(metric2)

[30, -, 0, 0, 30]

(metric3)

[0, 0, 20, -, 20]

IF(metric1, metric2, metric3)

[30, 0, 20, -, -]

IF(metric1, scalar2, metric3)

对于 metric1 的每个数据点,对应的输出时间序列值:

  • 值为 scalar2(如果 metric1 的对应数据点为 TRUE)。

  • 值为 metric3(如果 metric1 的对应数据点为 FALSE)。

  • 被删除(如果 metric1 的对应数据点为 FALSE 且 metric3 中没有对应的数据点,或者如果表达式中省略了 metric3)。

指标或f剪裁

(metric1)

[1, 1, 0, 0, -]

scalar2

5

(metric3)

[0, 0, 20, -, 20]

IF(metric1, scalar2, metric3)

[5, 5, 20, -, -]

IF(metric1, metric2, scalar3)

对于 metric1 的每个数据点,对应的输出时间序列值:

  • 值为 metric2(如果 metric1 的对应数据点为 TRUE)。

  • 值为 scalar3(如果 metric1 的对应数据点为 FALSE)。

  • 值为 0(如果 metric1 的对应数据点为 TRUE 且 metric2 中没有对应的数据点)。

  • 如果 metric1 中的相应数据点不存在,则被删除。

指标或f剪裁

(metric1)

[1, 1, 0, 0, -]

(metric2)

[30, -, 0, 0, 30]

scalar3

5

IF(metric1, metric2, scalar3)

[30, 0, 5, 5, -]

IF (scalar1, metrar2, metrar2指标 3

对应的输出时间序列值:

  • 值为 metric2(如果 scalar1 为 TRUE)。

  • 值为 metric3(如果 scalar1 为 FALSE)。

  • 是一个空白时间序列(如果表达式中省略了 metric3)。

使用cASEe适用于 IF 的扩展expressions

以下示例说明 IF 函数的可能用法。

  • 要仅显示指标的低值,请使用:

    IF(metric1<400, metric1)

  • 要将指标中的每个数据点更改为两个值之一,以显示原始指标的相对高值和低值,请使用:

    IF(metric1<400, 10, 2)

  • 要为延迟超过阈值的每个时间戳显示 1,并为所有其他数据点显示 0,请使用:

    IF(latency>threshold, 1, 0)

使用m电子m使用 GetMetricData APIoperation

您可以使用 GetMetricData 来通过数学表达式执行计算,还可以在一个 API 调用中检索大量指标数据。有关更多信息,请参阅 GetMetricData