Amazon CloudWatch Logsに記録されたSlow QueryをSlackに通知するLambda関数
Amazon RDS PostgreSQLでは、処理が遅いクエリの実行計画をCloudWatch Logsに記録することができる。 本プロジェクトは、CloudWatch Logsに記録された遅延クエリログをトリガーとして起動し、 パースしてSlackに通知するLambda関数を構築する。
-
auto_explain.log_min_durationパラメータでslackへ通知する閾値を設定する
1. AWS SAMをインストールする
認証情報の設定が必要なので注意。
> git clone レポジトリURL
> cd slow-query-notification
- samconfig.toml
- stack_name, s3_bucket, s3_prefix は必要に応じて変更
- region にはLambda関数を構築するAWSリージョンを指定
- template.yaml
- コメントアウトされている箇所は修正が必須です。
- CloudWatch LogsのログストリームARN
- CloudWatch Logsのロググループ名
- 環境変数を設定
- TZ: タイムゾーン('Asia/Tokyo')
- CLOUDWATCH_REGION: 通知したいログが存在するリージョン
- SLACK_API_TOKEN: SlackアプリのAPIトークン
- SLACK_CHANNEL_ID: 通知したいSlackチャンネルのID
- POSTPONEMENT_BEFORE_LOG_EXTRACTION: ログ取得失敗時の待機時間(秒)
- MAX_RETRY_COUNT_GET_LOG: ログ再取得実行の上限回数
- PERIOD_LOG_EXTRACTION: ログ取得時間の幅(秒)
- NOTIFICATION_COLOR_STANDARD: Slack通知色を決めるクエリ実行時間の基準値(秒)
条件
- python3.8の環境が構築されていること
> sam build
> sam deploy
├── slow_query_notification
│ ├── __init__.py
│ ├── app.py : lambda関数を定義
│ └── requirements.txt : デプロイパッケージに含めるモジュールを定義
├── tests
├── __init__.py
├── .gitignore
├── README.md
├── samconfig.toml : AWS SAMの設定ファイル
└── template.yaml : CloudFormationのテンプレートファイル