トロポスフィア スクリプトを使用して、CloudWatch メトリック フィルターとアラームをプロビジョニングしています。CloudWatchではメトリックフィルターでログから集計したデータを基にアラームを手動で作成することも可能ですが、可能であれば対流圏スクリプト内でフィルターとアラームを連携させて手作業を省きたいと考えています。
これが私がスクリプトのために持っているものです(注:簡潔にするために省略されているいくつかの他のリソースが以下で定義および参照されています):
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 テンプレートが生成されますが、変更セットを実行して作成されたメトリクス フィルターを観察すると、フィルターにリンクしたかったアラームが自動的に設定されず、手動で作成する必要があることがわかります。
私の考えでは、MetricTransformation と Alarm が同じMetricNameプロパティを共有している場合、アラームが既にメトリック フィルターにリンクされていることを願っていますが、そうではないようです。メトリック フィルターのドキュメントを見ると、操作するプロパティは 3 つしかないようです (LogGroupName、FilterPattern、および MetricTransformations のリスト)。アラームを対流圏のメトリック フィルターにリンクする方法はありませんか?