3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【簡単Terraform】【初心者向け】TerraformでCloudWatch Logsを管理する方法 --- Log Group・Retention・Metric Filter をまとめてIaC化

Posted at

本記事では、AWS CloudWatch Logs を Terraform で管理する実践的な方法について解説します。
Log Group の作成、ログ保持期間(Retention)の設定、Metric Filter の定義までを一通りカバーし、運用でそのまま使える構成を紹介します。

CloudWatch Logs をコンソール操作に頼らず、IaC(Infrastructure as Code)として安全・再現可能に管理したい方向けの記事です。


🎯 対象読者

  • CloudWatch Logs を手動で設定している方
  • ログ保持期間や課金が気になり始めた方
  • Terraform で監視・運用系リソースも管理したいエンジニア

🧩 なぜ Terraform で CloudWatch Logs を管理するのか

CloudWatch Logs をコンソールで管理していると、以下の課題が発生しがちです。

  • Log Group が自動生成され、設定が統一されない
  • Retention 未設定でログが無期限保存される
  • Metric Filter の設定内容がブラックボックス化する

Terraform を使うことで、

  • ログ設定をコードで明示
  • 保持期間を強制しコストを最適化
  • 監視ルールのレビュー・再利用が可能

になります。


🛠 今回構築する構成

  • CloudWatch Log Group
  • Retention(ログ保持期間)
  • Metric Filter(ログ → メトリクス変換)

ディレクトリ構成例

cloudwatch/
 ├─ main.tf
 ├─ variables.tf
 ├─ outputs.tf

📁 CloudWatch Log Group を Terraform で作成

resource "aws_cloudwatch_log_group" "app" {
  name              = "/aws/app/example"
  retention_in_days = 14

  tags = {
    Environment = "dev"
    Service     = "example-app"
  }
}

📌 ポイント

  • retention_in_days を必ず指定
  • 未指定だとログは無期限保存(=コスト増)

⏳ Retention 設計の考え方

よく使われる目安:

用途 Retention
開発環境 7〜14 日
検証環境 14〜30 日
本番環境 30〜90 日

👉 要件・監査ポリシーに応じて調整しましょう。


📊 Metric Filter を設定する

例:ERROR ログをメトリクス化

resource "aws_cloudwatch_log_metric_filter" "error_count" {
  name           = "error-count"
  log_group_name = aws_cloudwatch_log_group.app.name
  pattern        = "ERROR"

  metric_transformation {
    name      = "ErrorCount"
    namespace = "ExampleApp"
    value     = "1"
  }
}

この設定により:

  • ログ内の ERROR を検知
  • CloudWatch メトリクスとしてカウント
  • Alarm と連携可能

🔔 (補足)Alarm との連携イメージ

Metric Filter は、以下と組み合わせることで真価を発揮します。

  • CloudWatch Alarm
  • SNS 通知
  • Ops / 障害検知フロー

※ Alarm 設定は別記事で解説するとよいでしょう。


🚨 実務での注意点

1️⃣ 自動生成 Log Group との競合

  • Lambda / ECS などは Log Group を自動作成する
  • 事前に Terraform で作成するのがおすすめ

2️⃣ 名前規則を統一する

/aws/{service}/{application}

命名ルールを決めることで運用が楽になります。


📦 運用を楽にする工夫

  • Retention を変数化して環境別制御
  • Metric Filter を module 化
  • CI で terraform plan をレビュー

✅ まとめ

Terraform を使って CloudWatch Logs を管理すると、

  • 📄 ログ設定の可視化
  • 💰 不要なログ保存コスト削減
  • 🔁 再現性の高い監視構成

が実現できます。

ログ・監視系こそ IaC 化の効果が高い領域です。
ぜひ Terraform 管理に取り入れてみてください。


🔗 参考リンク

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?