amazon-web-services - 使用 CloudWatch 指标筛选器报告内存消耗百分比
问题描述
我们广泛使用 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。对此的任何帮助将不胜感激。
解决方案
我不认为您可以直接使用一个指标过滤器来做到这一点。你可以这样做:
1. 将 MemorySize 和 MaxMemoryUsed 提取为 2 个单独的指标
创建 2 个指标过滤器,都具有相同的规则[type=REPORT, ...]
。这将过滤掉以 REPORT 开头的行,并为该行的每一列创建变量。在这种情况下,它将创建$type, $2, $3, ...
多达$19
(日志行中有 19 个空格分隔的单词)的变量。
您需要的值位于变量$13
和$18
中,因此在创建 2 个指标过滤器时,请在指标值字段中$13
用于第一个指标和$18
第二个指标。指标名称和命名空间可以是任何你想要的。我将使用and作为名称和命名空间。MemorySize
MaxMemoryUsed
CustomLambdaMetrics
2. 使用度量数学来计算您需要的值。
现在您已经有了 2 个指标,您可以创建一个具有这样来源的小部件来获取平均使用情况(您的情况可能不同的地区):
{
"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
推荐阅读
- python - Pyqt5 QMDIarea 子类,关闭时带有自定义信号
- python - 为 KivyMD 中的图标赋予功能
- angular - Angular pwa,如何使 http-server(在 localhost:8080 上运行)与在 localhost:3333 上运行的 nodejs 服务器一起工作?
- c# - 是否可以在 ASP.NET MVC 5 中从 ADFS 获取登录名或电子邮件?
- reactjs - 使用 useState 和 useContext React Hooks 持久化 localStorage
- java - 从不同的 API 拉取数据
- c# - 按下键,中止线程
- javascript - 如何使引导导航栏的背景透明?
- google-cloud-firestore - 使用纪元时间戳对时间戳字段进行 Firestore 集合查询
- json - 颤振应用程序中的“方法'[]'在null上被调用”并且数据未显示