タダです.
以前,デッドロックの発生時にエラーログを CloudWatch Logs に出力するパラメーターを紹介しました.デッドロック発生時に Datadog Logs に流したいと思って CloudWatch Logs サブスクリプションフィルターと Datadog のモニターを設定したので備忘録として設定内容を書きます.
設定したサブスクリプションフィルター
結論ですが, "*** (1) TRANSACTION:"
で設定したところフィルタリングができています.Terraform での設定例で書くと,以下のようになります.この設定で CloudWatch Logs → Kinesis Data Strems → Lambda 等を使って Datadog Logs にログを転送することができました.
resource "aws_cloudwatch_log_subscription_filter" "deadlock_subsctiption_filter" { name = [サブスクリプションフィルター名] role_arn = [Kinesis Streams に流すための IAM ロール ARN] log_group_name = [エラーログが出力されている CloudWatch Logs のグループ名] destination_arn = [Kinesis Streams の ARN] distribution = "ByLogStream" filter_pattern = "\"*** (1) TRANSACTION:\"" }
関連ドキュメント
デッドロックの発生時に通知する Datadog のモニター設定
デッドロックの詳細情報が Datadog Logs に流れてきたら後はその内容を通知していきます.こちらも Terraform で設定したので設定例を書きます.
resource "datadog_monitor" "deadlock_notify_monitor" { name = [モニター名] type = "log alert" query = "logs(\"service:rds @aws.awslogs.logGroup:\\\"/aws/rds/cluster/[Aurora クラスター名]/error\\\"\").index(\"*\").rollup(\"count\").last(\"5m\") >= 1" message = [アラートメッセージ] monitor_thresholds { critical = 1 } enable_logs_sample = true }
まとめ
デッドロックの発生時に Datadog Logs にログを転送するための CloudWatch Logs サブスクリプションフィルターの設定と転送されたログからモニターを作ったので,その設定をまとめました.