【CloudwatchLogs】WindowsサーバーのログごとにLogStreamを分ける設定方法

記事タイトルとURLをコピーする

こんにちは、技術4課の城です。
最近では暑すぎて、アイスにハマっています。
今年はセブンイレブンの限定アイス「黄ぐま」が売り切れることなく販売されており、嬉しい限りです。

さて話は変わりますが、CloudwatchLogs、すごく便利なサービスと思いつつも、今までほとんど触れることがなかったです。
掲題の設定をするにあたり、かなり四苦八苦してしまいました。
簡単なことではあるのですが、備忘としてブログに残しておこうと思います。

CloudwatchLogsの設定方法

AWSドキュメントです。

主には以下の3つの方法で設定可能です。

  • Run Command を使用する
  • ステートマネージャー を使用する
  • ローカル設定ファイルを使用する

どれを選んでも実際のインスタンスの設定としては C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\AWS.EC2.Windows.CloudWatch.jsonにCloudwatchLogsへの出力設定を記載します。

ステートマネージャーによる設定

当社ブログに詳細記載しておりますので、ご参照ください。

AWS.EC2.Windows.CloudWatch.jsonの設定内容

設定したい内容に合わせてjsonを書く必要があります。
ドキュメントを色々と見てみましたが、記載方法などが見当たらず、四苦八苦、右往左往でした。
最終的にCloudFormationの設定テンプレートの中に設定したい内容がそのまま書いてあり、解決しました。
ポイントとしては次の2点です。

  • LogStream毎にIdを用意する
  • ログ(LogStream)ごとにFlowを分ける
    今回作成した内容は下記になります。
    LogGroupをインスタンスごと、System、Security、Applicationの各イベントログでログストリームを分ける設定です。
{
  "IsEnabled" : true,
  "EngineConfiguration": {
    "PollInterval": "00:00:15",
    "Components": [
      {
        "Id": "SystemEventLog",
        "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
          "LogName": "System",
          "Levels": "7"
        }
      },
      {
        "Id": "SecurityEventLog",
        "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
          "LogName": "Security",
          "Levels": "7"
        }
      },
      {
        "Id": "ApplicationEventLog",
        "FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
          "LogName": "Application",
          "Levels": "7"
        }
      },
      {
        "Id": "CloudWatchLogsSystemEventLog",
        "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
          "AccessKey": "",
          "SecretKey": "",
          "Region": "ap-northeast-1",
          "LogGroup": "Windows2016",
          "LogStream": "{instance_id}_System"
        }
      },
      {
        "Id": "CloudWatchSecurityEventLog",
        "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
          "AccessKey": "",
          "SecretKey": "",
          "Region": "ap-northeast-1",
          "LogGroup": "Windows2016",
          "LogStream": "{instance_id}_Security"
        }
      },
      {
        "Id": "CloudWatchLogsApplicationEventLog",
        "FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
          "AccessKey": "",
          "SecretKey": "",
          "Region": "ap-northeast-1",
          "LogGroup": "Windows2016",
          "LogStream": "{instance_id}_Application"
        }
      }
    ],
    "Flows": {
      "Flows": [
        "SystemEventLog,CloudWatchLogsSystemEventLog",
        "SecurityEventLog,CloudWatchSecurityEventLog",
        "ApplicationEventLog,CloudWatchLogsApplicationEventLog"
      ]
    }
  }
}

最後に

簡単ではありますが、CloudwatchLogsの設定について紹介しました。
どなたかのお役に立てれば幸いです。

城 航太 (記事一覧)

サイトリライアビリティエンジニアリング部・CSM課・課長

AWSへの移行、AWSアカウントセキュリティ、ネットワーク広く浅くといった感じです。最近はAmazon WorkSpacesやAmazon AppStream2.0が好きです。APN Ambassador 2019,2020