我们将AWS Lambda广泛用作基础架构的一部分。 为了获得更好的可见性,我希望能够报告一个自定义的CloudWatch指标,该指标的值是memory_used / memory_allocated,可以使用CloudWatch日志和指标过滤器来实现。
考虑以下日志消息:
REPORT RequestId: de96230a-70c1-491f-97f5-f76805227173 Duration: 811.71 ms Billed Duration: 900 ms Memory Size: 256 MB Max Memory Used: 122 MB
对于以上消息,度量标准的计算值应为122/256=0.476
。
当时,我无法克服metric filter syntax。 任何帮助,我们将不胜感激。
答案 0 :(得分:0)
我认为您不能使用一个公制过滤器直接进行操作。您可以执行以下操作:
创建2个指标过滤器,两者均使用相同的规则[type=REPORT, ...]
。
这将滤除以REPORT开头的行,并将为该行的每一列创建变量。在这种情况下,它将创建变量$type, $2, $3, ...
到$19
(在日志行中有19个以空格分隔的单词)。
您需要的值在变量$13
和$18
中,因此在创建2个指标过滤器时,请在第一个指标中使用$13
,在第二个指标中使用$18
指标值字段。指标名称和名称空间可以是您想要的任何内容。我将使用MemorySize
和MaxMemoryUsed
作为名称,并将CustomLambdaMetrics
作为名称空间。
现在有了两个指标,您可以创建一个具有这样的源的小部件以获取平均使用量(您所在的地区可能会有所不同):
{
"metrics": [
[ { "expression": "m2/m1", "label": "Average memory usage", "id": "e1" } ],
[ "CustomLambdaMetrics", "MemorySize", { "id": "m1", "visible": false } ],
[ ".", "MaxMemoryUsed", { "id": "m2", "visible": false } ]
],
"view": "timeSeries",
"stacked": false,
"region": "us-east-1",
"stat": "Sum",
"period": 60
}
有关度量标准数学的更多信息,请参见此处:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html