環境
- EC2
- OS: Amazon Linux 2023
- EC2インスタンスは起動済みであること
手順1:EC2インスタンスにIAMロールをアタッチ
手順1:IAMロールの作成
IAMのロールのロールを作成をクリック
信頼されたエンティティを選択
| 設定項目 | 入力内容 |
|---|---|
| 信頼されたエンティティタイプ | AWSのサービス |
| サービスまたはユースケース | EC2 |
| ユースケース | EC2 |
入力が完了しましたら、次へをクリックします
許可を追加
| 設定項目 | 入力内容 |
|---|---|
| 許可ポリシー | CloudWatchAgentServerPolicy |
入力が完了しましたら、次へをクリックします
名前、確認、および作成
| 設定項目 | 入力内容 |
|---|---|
| ロール名 | sample-ec2-role |
| 説明 | Allows EC2 instances to call AWS services on your behalf. |
入力が完了しましたら、ロールを作成をクリックします
手順2:EC2のIAMロールを変更
EC2管理画面 → インスタンス選択 → 「アクション」→「セキュリティ」→「IAM ロールの変更」
| 設定項目 | 入力内容 |
|---|---|
| IAMロール | sample-ec2-role |
入力が完了しましたら、IAM ロールの更新をクリックします
手順2:CloudWatchのロググループの作成
| 設定項目 | 入力内容 |
|---|---|
| ロググループ名 | /ec2/sample |
| 保持期間の設定 | 7日 |
| ログクラス | スタンダード |
入力が完了しましたら、作成をクリックします
手順3:CloudWatch Logs連携用のDockerログ設定
コンテナ毎に下記のようなコードを書いて、EC2上でDockerを起動します
logging:
driver: "awslogs"
options:
awslogs-group: "/ec2/sample"
awslogs-region: "ap-northeast-1"
awslogs-stream: "sample-web"
手順4:CloudWatch Logs Insightsの作成
選択基準はec2/sampleを選択
クエリ文には下記を入力
fields @timestamp, @message
| filter @message like /"[Batch Logic] SUCCESS:"/
| stats count() as success_count
入力が完了しましたら、保存をクリックします
| 設定項目 | 入力内容 |
|---|---|
| クエリ名 | [Batch] sample - batch - success - log |
入力が完了しましたら、保存をクリックします
手順5:メトリクスフィルターの作成
対象のロググループを選択し、「メトリクスフィルターを作成」をクリック
パターンを定義
| 設定項目 | 入力内容 |
|---|---|
| フィルターパターン | "[Batch Logic] SUCCESS:" |
| テストするログデータを選択 | sample-batch |
入力が完了しましたら、NEXTをクリックします
メトリクスの割り当て
| 設定項目 | 入力内容 |
|---|---|
| フィルター名 | sample-batch-success |
| メトリクス名前空間 | Sample/Batch |
| メトリクス名 | SampleBatchSuccessCount |
| メトリクス値 | 1 |
| デフォルト値 | 0 |
| Unit | Count |
入力が完了しましたら、NEXTをクリックします
プレビューと作成
入力内容に問題がなかった場合、メトリクスフィルターを作成をクリックします
手順6:アラームの作成
- 「Sample/Batch」 → 「ディメンションなしのメトリクス」 → 「SampleBatchSuccessCount」
- 1日合計1回未満バッチ処理が成功しなかった場合通知
メトリクスと条件の指定
メトリクス
| 設定項目 | 入力内容 |
|---|---|
| 名前空間 | Sample/Batch |
| メトリクス名 | SampleBatchSuccessCount |
| 統計 | 合計 |
| 期間 | 1日 |
条件
| 設定項目 | 入力内容 |
|---|---|
| しきい値の種類 | 静的 |
| SampleBatchSuccessCount が次の時... | より低い |
| ... よりも | 1 |
入力が完了しましたら、次へをクリックします
アクションの設定
通知
| 設定項目 | 入力内容 |
|---|---|
| アラーム状態トリガー | アラーム状態 |
| 次の SNS トピックに通知を送信 | 新しいトピックの作成 |
| 新規トピックの作成中... | alarm-sample |
| 通知を受け取る E メールエンドポイント … | メールアドレス |
入力が完了しましたら、トピックの作成、次へをクリックします
名前と説明を追加
名前と説明
| 設定項目 | 入力内容 |
|---|---|
| アラーム名 | Sample-Batch-DailySuccessMissing |
入力が完了しましたら、次へをクリックします
プレビューと作成
以上で問題がない場合、アラームの作成をクリックします
まとめ
EC2上のDockerコンテナのログをCloudWatch Logsに送信し、バッチ成功ログをもとにメトリクスとアラームを作成して、バッチの実行有無を自動で監視できるようにする手順を解説しました。