如何将指标附加到现有的 Lambda 日志组?
Posted
技术标签:
【中文标题】如何将指标附加到现有的 Lambda 日志组?【英文标题】:How to attach a Metric to an existing Lambda log group? 【发布时间】:2020-06-17 14:02:42 【问题描述】:我正在尝试使用 CloudFormation 创建自定义指标。我遵循了https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html 的示例。我现有的 lambda 日志记录到 CloudWatch 日志组,该日志组在 CloudWatch 中显示为 /aws/lambda/my-function-name
。这是我的 CloudFormation YAML 指标:
ErrorsLogMetric:
Type: AWS::Logs::MetricFilter
Properties:
LogGroupName: !Sub "/aws/lambda/$AWS::StackName"
FilterPattern: "[ERROR]"
MetricTransformations:
- MetricValue: "1"
MetricNamespace: "LogMetrics"
MetricName: "MyCustomMetric"
$AWS::StackName 在运行时解析为“my-function-name”。 CloudFormation 脚本成功运行并表示已创建指标,但当我转到 CloudWatch 的 lambda 日志组时,它显示零过滤器。当通过 CloudFormation 创建此自定义指标时,我需要采取哪些不同的措施才能使该自定义指标显示为我的 lambda 日志组的过滤器?
如果我将该属性硬编码为LogGroupName: "/aws/lambda/my-function-name"
,那么它可以工作。但我不想对其进行硬编码,因为 $AWS::StackName 的值在不同的用例中是动态的。
【问题讨论】:
您的模板看起来不错。如果日志组错误,则创建将失败。显示可能没有更新。运行多久后,您查看了日志组? 您是否尝试过使用cli的describe-metric-filters来检查过滤器是否存在?我想我和你有类似的经历,在云端创建过滤器后,在控制台中找不到过滤器。 您是否在模板中创建日志组?如果是这样,请将LogGroupName
更改为!Ref LogGroupLogicalId
。
【参考方案1】:
对我来说,解决方案似乎是添加
DependsOn: LambdaLogGroup
其中 LambdaLogGroup 是前面在我的模板中定义的资源。它让我失望了,因为日志组已经存在了一段时间,我试图更新堆栈并添加指标。即使日志组已经存在并且在我添加 Metric 时未由 CloudFormation 更新,这仍然需要依赖项。
【讨论】:
以上是关于如何将指标附加到现有的 Lambda 日志组?的主要内容,如果未能解决你的问题,请参考以下文章
如何附加到现有的 java.io.ObjectStream? [复制]
如何将 Excel 转换为 JSON 并将其附加到现有的 JSON 文件?