如何在cloudwatch中将2个搜索指标与数学表达式结合起来?

问题描述 投票:0回答:2

我试图获取运行 lambda 时使用的内存百分比以显示在 cloudwatch 上的图表中。我知道还有其他方法可以提取数据,但由于本问题范围之外的原因,我想坚持使用搜索来提取指标。

我有以下图表

{
    "metrics": [
        [ { "expression": "SEARCH('{SomeMetricNamespace} MetricName=\"MemorySize\"', 'Average', 300)", "id": "m1", "visible": "true" } ],
        [ { "expression": "SEARCH('{SomeMetricNamespace} MetricName=\"MaxMemoryUsed\"', 'Average', 300)", "id": "m2", "visible": "true" } ],
        [ { "expression": "m2/m1*100", "label": "pecentage memory used", "id": "e1", "stat": "Average" } ]
    ],
    "view": "timeSeries",
    "stacked": false,
    "region": "us-west-2",
    "stat": "Average",
    "period": 300,
    "title": "Memory",
    "yAxis": {
        "left": {
            "label": "Percentage Usage",
            "showUnits": false
        }
    },
    "liveData": false
}

我遇到的错误

Error in expression e1 [Unsupported operand type(s) for /: '[Array[TimeSeries], Array[TimeSeries]]']

有没有办法结合前 2 个表达式来给出使用的内存百分比?

amazon-web-services amazon-cloudwatch metrics
2个回答
2
投票

表达式的结果是时间序列数组,因此不能直接应用运算(+ - * / ^)。作为解决方法,您可以将每个时间序列转换为每个表达式的单个值(平均值),然后计算百分比。

来源应该与此类似:

{
"metrics": [
    [ { "expression": "SEARCH('{SomeMetricNamespace} MetricName=\"MemorySize\"', 'Average', 300)", "id": "m1", "visible": "false" } ],
    [ { "expression": "SEARCH('{SomeMetricNamespace} MetricName=\"MaxMemoryUsed\"', 'Average', 300)", "id": "m2", "visible": "false" } ],
    [ { "expression": "AVG(m1)", "label": "AVGMemorySize", "id": "e1", "visible": "false" } ],
    [ { "expression": "AVG(m2)", "label": "AVGMaxMemoryUsed", "id": "e2", "visible": "false" } ],
    [ { "expression": "e2/e1*100", "label": "pecentage memory used", "id": "e3", "stat": "Average" } ]

    ],
    "view": "timeSeries",
    "stacked": false,
    "region": "us-west-2",
    "stat": "Average",
    "period": 300,
    "title": "Memory",
    "yAxis": {
        "left": {
            "label": "Percentage Usage",
            "showUnits": false
        }
    },
    "liveData": false
}

0
投票

如果这对其他人有帮助,我在表达中遇到了类似的错误:

Sum(m1, m2)

事实证明修复非常简单。只需添加括号即可将输入更改为时间序列数组,这是每个文档可接受的输入类型。

Sum([m1, m2])
© www.soinside.com 2019 - 2024. All rights reserved.