Kinesis Agent を使用してログを Kinesis にプッシュするときに Amazon EC2 メタデータを追加するにはどうすればよいですか?

所要時間3分
0

Amazon Kinesis Agent を使用して Amazon Elastic Compute Cloud (Amazon EC2) から Amazon Kinesis にログを送信しようとしています。Amazon EC2 メタデータを各ログ行に追加するにはどうすればよいですか?

簡単な説明

EC2 メタデータを各ログ行に追加するには、以下の操作を実行します。

1.    Linux または Windows プラットフォームに Amazon Kinesis Agent をインストールして設定します。

2.    EC2 メタデータを表示するように構成設定を更新します。

3.    必要な AWS Identity and Access Management (IAM) アクセス許可があることを確認します。

注意: EC2 メタデータを取得し、Amazon Kinesis Data Firehose にデータを発行するには、IAM アクセス許可が必要です。

解決方法

Linux プラットフォームの場合

Amazon Kinesis Agent を使用して Kinesis Data Firehose にログを送信するには、以下の操作を実行します。

1.    エージェントをダウンロードしてインストールします。

2.    次の許可を持つ IAM ロールを作成します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "firehose:PutRecord",
        "firehose:PutRecordBatch"
      ],
      "Resource": ["<FIREHOSE_ARN>"
      ]
    },
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeTags"
      ],
      "Resource": "<EC2_ARN>"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": "cloudwatch:PutMetricData",
      "Resource": "*"
    }
  ]
}

: Firehose_ARNEC2_ARN には、Amazon リソースネーム (ARN) の情報を入力します。または、ワイルドカード「*」を使用することもできます。詳細については、「Amazon EC2 用の Amazon リソースネーム (ARN)」を参照してください。

3.    Amazon Kinesis Agent をインストールした EC2 インスタンスに新しく作成した IAM ロールをアタッチします。既存の IAM ロール割り当ての詳細については、「既存の IAM ロールを EC2 インスタンスに割り当てるにはどうすればよいですか?」を参照してください。

4.    /etc/aws-kinesis/agent.json ファイルを編集します。

{
  "cloudwatch.emitMetrics": true,
  "kinesis.endpoint": "",
  "firehose.endpoint": "firehose.us-east-1.amazonaws.com",
  
  "flows": [
    {
      "filePattern": "/tmp/app.log*",
      "deliveryStream": "yourdeliverystream",
      "dataProcessingOptions": [
          {
                    "optionName": "LOGTOJSON",
                    "logFormat": "COMMONAPACHELOG"
              },
          {
            "optionName": "ADDEC2METADATA",
        "logFormat": "COMMONAPACHELOG"
          }
      ]
    }
  ]
}

この例では、/etc/aws-kinesis/agent.json ファイルは COMMONAPACHELOG ログファイル形式を処理します。ログファイルの形式が異なる場合は、dataProcessingOptions 設定をログファイル形式に更新する必要があります。エージェントと処理オプションの詳細については、「エージェントを使用してデータを事前処理する」を参照してください。

重要: optionName フィールドに ADDEC2METADATA を追加して、EC2 メタデータが各ログ行に追加されるようにします。デフォルトでは、Amazon Kinesis Agent は EC2 メタデータに複数のパラメータ (privateIpavailabilityZoneinstanceIdinstanceTypeaccountIdamiIdregion、および metadataTimestamp) を追加します。

5.    エージェントを設定して起動します。エージェントはバックグラウンドでシステムサービスとして実行されるようになりました。指定されたファイルを継続的にモニタリングし、指定された配信ストリームにデータを送信します。エージェントアクティビティは、次の出力例のように、/var/log/aws-kinesis-agent/aws-kinesis-agent.log ファイルに記録されます。

{
    "host": "157.92.12.106",
    "ident": null,
    "authuser": null,
    "datetime": "31/Aug/1995:20:50:31 -0400",
    "request": "GET /history/astp/astp-spacecraft.txt HTTP/1.0",
    "response": "200",
    "bytes": "440",
    "privateIp": "X.X.X.X",
    "availabilityZone": "us-east-1c",
    "instanceId": "i-01bxxxxxxxxxx43a0",
    "instanceType": "t2.xlarge",
    "accountId": "585xxxxxx740",
    "amiId": "ami-0fc61db8544a617ed",
    "region": "us-east-1",
    "metadataTimestamp": "2020-04-20T02:28:40+0000"
  }

Windows プラットフォームの場合

Amazon Kinesis Tap Agent を使用して Kinesis Data Firehose にデータを送信するには、以下の手順を実行します。

1.    Microsoft Windows 用 Amazon Kinesis Agent をインストールします

2.    次の許可を持つ IAM ロールを作成します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "firehose:DeleteDeliveryStream",
        "firehose:PutRecord",
        "firehose:PutRecordBatch",
        "firehose:UpdateDestination"
      ],
      "Resource": ["<KFH_ARN>"
      ]
    },
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeTags"
      ],
      "Resource": "<EC2_ARN>"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": "cloudwatch:PutMetricData",
      "Resource": "*"
    }
  ]
}

: KFH_ARNEC2_ARN には、Amazon リソースネーム (ARN) の情報を入力します。詳細については、「Amazon EC2 用の Amazon リソースネーム (ARN)」を参照してください。

3.    Kinesis Tap Agent をインストールした EC2 インスタンスに新しく作成した IAM ロールを添付します。

4.    C:\Program Files\Amazon\AWSKinesisTap\appsettings.json ファイルを開きます。

{
  "Sources": [
    {
      "Id": "W3SVCLog1",
      "SourceType": "W3SVCLogSource",
      "Directory": "C:\\inetpub\\logs\\LogFiles\\W3SVC1",
      "FileNameFilter": "*.log",
      "TimeZoneKind": "UTC"
    }
  ],
  "Sinks": [
    {
      "Id": "W3SVCLogSink",
      "SinkType": "KinesisFirehose",
      "Region": "eu-central-1",
      "StreamName": " W3SVCLogStream",
  "Format": "json",
  <b>"ObjectDecoration": "instance_id={instance_id};hostname={hostname};ec2:local-hostname={ec2:local-hostname};computername={computername};env:computername={env:computername};timestamp:yyyyMMdd={timestamp:yyyyMMdd}"</b>
    }    
  
  ],
  "Pipes": [
    {
      "Id": "W3SVCLog1ToKinesisStream",
      "SourceRef": "W3SVCLog1",
      "SinkRef": "W3SVCLogSink"
    }
  ]
}

重要: "ObjectDecoration": "instance_id={instance_id};hostname={hostname};ec2:local-hostname={ec2:local-hostname};computername={computername};env:computername={env:computername};timestamp:yyyyMMdd={timestamp:yyyyMMdd}" をシンクに追加して、EC2 メタデータが各ログ行に確実に追加されるようにします。Kinesis Tap Agent は、複数のパラメータ (instance_idhostnameec2:local-hostnamecomputernameenv:computername、および timestamp:yyyyMMdd) を EC2 メタデータとして追加します。これらのパラメータをすべて表示しない場合は、追加するパラメータを指定します。

設定オプションの詳細については、Microsoft Windows 向け Amazon Kinesis Agent の設定を参照してください。

5.    Windows 向け Kinesis Agent を設定して起動し、Kinesis Tap Agent を開始します。次の出力が各ログ行に表示されます。

{
  "EventId": 7036,
  "Description": "The WinHTTP Web Proxy Auto-Discovery Service service entered the stopped state.",
  "LevelDisplayName": "Informational",
  "LogName": "System",
  "MachineName": "EC2AMAZ-GLL60A7",
  "ProviderName": "Service Control Manager",
  "TimeCreated": "2020-04-20T06:02:51.5847181Z",
  "Index": 34427,
  "UserName": null,
  "Keywords": "Classic",
  "instance_id": "i-0183xxxxxxxxxx4b7",
  "hostname": "ip-x-x-x-x.ec2.internal",
  "ec2:local-hostname": "ip-x-x-x-x.ec2.internal",
  "computername": "EC2AMAZ-GLL60A7",
  "env:computername": "EC2AMAZ-GLL60A7",
  "timestamp:yyyyMMdd": "20200420"
}

関連情報

Collect, parse, transform, and stream Windows events, logs, and metrics using Amazon Kinesis Agent for Microsoft Windows (Microsoft Windows 向けに Amazon Kinesis Agent を使用して Windows イベント、ログ、およびメトリクスを収集、解析、変換、ストリーミングする)

AWS公式
AWS公式更新しました 2年前
コメントはありません