使用对流层将 CloudWatch 警报与 MetricFilter 相关联
Associating CloudWatch Alarm with MetricFilter using Troposphere
我正在使用对流层脚本来配置 CloudWatch 指标过滤器和警报。在 CloudWatch 中,可以手动创建一个警报,该警报会根据指标过滤器从日志中聚合的数据发出警报,但我想 link Troposphere 脚本中的过滤器和警报,以尽可能节省体力劳动.
这是我的脚本内容(注意:为简洁起见,下面定义和引用了一些其他资源):
t.add_resource(logs.MetricFilter(
"PlanReconciliationPlansStepMetricFilter",
FilterPattern="INFO generatePlanReconciliationStepKnownToMorningstarInPlans",
LogGroupName=Ref("logGroupName"),
MetricTransformations=[logs.MetricTransformation(
"planReconciliationPlansStepMetricTransformation",
MetricNamespace=Ref("metricNamespace"),
MetricName=Join("", [Ref("springProfile"), "-", "plan-reconciliation-plans-step"]),
MetricValue="1")]
))
alarmPlans = t.add_resource(
Alarm(
"PlanReconciliationPlansAlarm",
AlarmDescription="Alarm if plan reconciliation metric filter is exceeded",
Namespace="AWS/Logs",
MetricName=Join("", [Ref("springProfile"), "-", "plan-reconciliation-plans-step"]),
Statistic="Sum",
Period="60",
EvaluationPeriods="1",
Threshold="0",
ComparisonOperator="GreaterThanThreshold",
AlarmActions=[Ref(alarmTopic), ]
)
)
这会生成一个定义明确的 CloudFormation 模板,但是,当我执行更改集并观察创建的指标筛选器时,我发现我想要 link 到筛选器的警报不会自动设置并且我需要手动创建它:
我的想法是,如果 MetricTransformation 和 Alarm 共享相同的 MetricName 属性,希望警报已经 linked 到指标过滤器, 但似乎并非如此。查看 documentation for metric filters,似乎只有三个属性可以使用(LogGroupName、FilterPattern 和 MetricTransformations 列表)。有没有办法link用Troposphere的metric filter报警?
根据评论。
问题是 Ref("metricNamespace")
与 "AWS/Logs" 不同。随后,MetricFilter 和 Alarm 使用了不同的命名空间。
将命名空间设置为与 BATCH-ERRORS
相同的值 解决了问题。
我正在使用对流层脚本来配置 CloudWatch 指标过滤器和警报。在 CloudWatch 中,可以手动创建一个警报,该警报会根据指标过滤器从日志中聚合的数据发出警报,但我想 link Troposphere 脚本中的过滤器和警报,以尽可能节省体力劳动.
这是我的脚本内容(注意:为简洁起见,下面定义和引用了一些其他资源):
t.add_resource(logs.MetricFilter(
"PlanReconciliationPlansStepMetricFilter",
FilterPattern="INFO generatePlanReconciliationStepKnownToMorningstarInPlans",
LogGroupName=Ref("logGroupName"),
MetricTransformations=[logs.MetricTransformation(
"planReconciliationPlansStepMetricTransformation",
MetricNamespace=Ref("metricNamespace"),
MetricName=Join("", [Ref("springProfile"), "-", "plan-reconciliation-plans-step"]),
MetricValue="1")]
))
alarmPlans = t.add_resource(
Alarm(
"PlanReconciliationPlansAlarm",
AlarmDescription="Alarm if plan reconciliation metric filter is exceeded",
Namespace="AWS/Logs",
MetricName=Join("", [Ref("springProfile"), "-", "plan-reconciliation-plans-step"]),
Statistic="Sum",
Period="60",
EvaluationPeriods="1",
Threshold="0",
ComparisonOperator="GreaterThanThreshold",
AlarmActions=[Ref(alarmTopic), ]
)
)
这会生成一个定义明确的 CloudFormation 模板,但是,当我执行更改集并观察创建的指标筛选器时,我发现我想要 link 到筛选器的警报不会自动设置并且我需要手动创建它:
我的想法是,如果 MetricTransformation 和 Alarm 共享相同的 MetricName 属性,希望警报已经 linked 到指标过滤器, 但似乎并非如此。查看 documentation for metric filters,似乎只有三个属性可以使用(LogGroupName、FilterPattern 和 MetricTransformations 列表)。有没有办法link用Troposphere的metric filter报警?
根据评论。
问题是 Ref("metricNamespace")
与 "AWS/Logs" 不同。随后,MetricFilter 和 Alarm 使用了不同的命名空间。
将命名空间设置为与 BATCH-ERRORS
相同的值 解决了问题。