🪟

CloudWatchでのログとメトリクス収集(Windows)

2023/03/15に公開

はじめに

WindowsServerでのCloudWatch Agentを利用したサーバ内のメトリクス、ログ、サービス監視について備忘録として残しておく。
通常、CPU使用率のメトリクスやステータスチェックのメトリクスは標準で監視ができているが、ディスク使用率やメモリ使用率はカスタムメトリクスが必要になる。CloudWatch Agentを利用することでサーバ内の色んなメトリクスを収集する事が出来るようになる。
また、ログについても設定ファイルに記載することでCloudWatch Logsに出力する事が出来る。

IAMロールの付与

対象のEC2にIAMロールを付与する。

  1. IAMロールを新規作成する。

  2. エンティティは「EC2」を選択する。

  3. 「CloudWatchAgentServerPolicy」のポリシーをアタッチする。

  4. 任意の名前でロールを作成し、対象のEC2に作成したIAMロールをアタッチする。

CloudWatch Agentの設定

1.対象のEC2にログインしてインストールファイルをダウンロードする。
Microsoft Edgeで「CloudWatch Agent インストール windows」を検索し、公式ページからダウンロードする。以下のURLを使用した。
https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi

  1. メトリクス設定ファイルを作成する。
    今回はWindowsのイベントビューアーにあるログ(Application,Security,System)と各種メトリクス(ディスク使用率、メモリ使用率、各種サービスの起動確認)を設定した。
{
  "logs": {
    "logs_collected": {
      "windows_events": {
        "collect_list": [
          {
            "event_format": "xml",
            "event_levels": [
                "VERBOSE",
                "INFORMATION",
                "WARNING",
                "ERROR",
                "CRITICAL"
            ],
            "event_name": "System",
            "log_group_name": "/aws/ec2/Windows/System",
            "log_stream_name": "{instance_id}"
          },
          {
            "event_format": "xml",
            "event_levels": [
                "VERBOSE",
                "INFORMATION",
                "WARNING",
                "ERROR",
                "CRITICAL"
            ],
            "event_name": "Security",
            "log_group_name": "/aws/ec2/Windows/Security",
            "log_stream_name": "{instance_id}"
          },
          {
            "event_format": "xml",
            "event_levels": [
                "VERBOSE",
                "INFORMATION",
                "WARNING",
                "ERROR",
                "CRITICAL"
            ],
            "event_name": "Application",
            "log_group_name": "/aws/ec2/Windows/Application",
            "log_stream_name": "{instance_id}"
          }
        ]
      }
    }
  },
  "metrics": {
    "metrics_collected": {
      "LogicalDisk": {
        "measurement": [
          "% Free Space"
        ],
        "resources": [
          "*"
        ]
      },
      "Memory": {
        "measurement": [
          "% Committed Bytes In Use"
        ]
      },
      "procstat": [
        {
          "pattern": "C:\\Windows\\system32\\svchost.exe -k LocalService -s W32Time",
          "measurement": [
            "pid_count"
          ],
          "metrics_collection_interval": 60
        },
        {
          "pattern": "C:\\Windows\\system32\\svchost.exe -k termsvcs -s TermService",
          "measurement": [
            "pid_count"
          ],
          "metrics_collection_interval": 60
        },
        {
          "pattern": "C:\\Windows\\system32\\svchost.exe -k netsvcs -p -s Schedule",
          "measurement": [
            "pid_count"
          ],
          "metrics_collection_interval": 60
        },
        {
          "pattern": "C:\\Windows\\system32\\svchost.exe -k LocalServiceNetworkRestricted -p -s EventLog",
          "measurement": [
            "pid_count"
          ],
          "metrics_collection_interval": 60
        }
      ]
    }
  }
}
  1. 設定ファイル適用
    2で作成したファイルを適用する
cd  "C:\Program Files\Amazon\AmazonCloudWatchAgent\"
dir    #config.jsonがあることを確認する
.\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -c file:config.json

問題なければ以下のような表示が最終行に出てくる。

  1. サービス起動確認
    サービスからAmazon CloudWatch Agentを起動し、実行中になることを確認する。

メトリクス/ログ確認

[CloudWatch]→[すべてのメトリクス]→[カスタム名前空間]にメトリクスがあることを確認する。
[CloudWatch]→[ロググループ]に各種ログがあることを確認する。

おわりに

今後はSystems Managerでの実施やログに対してアラームを発砲させたり、アラートをテンプレートで作成していきたい。

Discussion