Kinesis Agent for Windowsで  ログファイルをS3 に送信してみた。

Kinesis Agent for Windowsで ログファイルをS3 に送信してみた。

Clock Icon2022.01.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

概要

Amazon Kinesis Agent とは

Amazon Kinesis Agent for Windows はログとイベントおよびメトリクスを収集、変換、ストリーム配信します。 Kinesis AgentをEC2 Windowsインスタンスにインストールすることができます。

Kinesis Agentは次のサービスにストリーミングできます。

  • Kinesis Data Firehose
  • CloudWatch
  • Kinesis Data Streams

この記事では、Kinesis AgentをEC2 Windowsインスタンスにインストールして、Kinesis Data Firehoseで JSON ログファイルをS3 に送信してみました。

 

やってみた

S3 バケットの作成

  • S3 コンソールで、Create bucketを選択します。
  • バケット名を入力して、S3バケットを作成しておきます。

 

 

Kinesis Data Firehose Deliveryストリームの作成

IAM ロールの作成

  • IAM コンソールで、ポリシー名を入力して、次のポリシーを作成しておきます。
  • このポリシーにより、Kinesis FirehoseがS3バケットにアクセスできるようになります。
  • このポリシーには、以前に作成したS3バケットの名前を入力します。

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::kinesis-to-s3-windows",
                "arn:aws:s3:::kinesis-to-s3-windows/*"
            ]
        }
    ]
}

 

  • この設定でIAMロールを作成しておきます。
    • 信頼されたエンティティの種類 : AWS のサービス
    • ユースケース : Kinesis Data Firehose
    • ポリシー  :  前の手順で作成したポリシーの名前

 

Deliveryストリームの作成

  • Kinesis Data Firehoseのコンソールで、Create Delivery Streamを選択します。
  • SourceでDirect PUTを選択して、 DestinationでAmason S3を選択して、Deliveryストリーム名入力しておきます。

 

 

  • Destination設定で以前に作成したS3バケットURLの名前を入力します。

 

  • Buffer intervalを60Secondsに設定しておきます。
  • Permissionsで前の手順で作成しIAMロールの名前を選択して、Deliveryストリームを作成しておきます。

 

EC2 インスタンスの作成

IAM ロールの作成

  • IAM コンソールで、ポリシー名を入力して、次のポリシーを作成しておきます。
  • このポリシーには、以前に作成したDelivery ストリームのARNを入力します。

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": "arn:aws:firehose:us-east-1:account-id:deliverystream/stream-logs"
        }
    ]
}

 

  • この設定でIAMロールを作成しておきます。
    • 信頼されたエンティティの種類 : AWS のサービス
    • ユースケース : EC2
    • ポリシー  :  前の手順で作成したポリシーの名前

 

EC2 Windows インスタンスの作成

  • この設定でEC2 Windows インスタンスを作成しておきます。
    • AMI : Microsoft Windows Server 2019
    • インスタンスタイプ : t2.micro
    • IAMロール : 前の手順で作成したIAMロール
    • Security Group : Inbound - RDP

 

Kinesis Agentの作成

  • RDPを使用してEC2インスタンスに接続しておきます。
  • PowerShellを開き、次のコマンドを実行して、Kinesisエージェントの最新バージョンをインストールします。

 

Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://s3-us-west-2.amazonaws.com/kinesis-agent-windows/downloads/InstallKinesisAgent.ps1'))

 

  • C:\LogFiles\ディレクトリを作成して、このディレクトリにJSON Formatのログファイル[JsonLogs.log]を作成しておきます。
  • 次のコードでConfigurationファイルを作成して、Program Files\Amazon\AWSKinesisTap\appsettings.jsonにファイルを保存しておきます。
{
  "Sources": [
    {
      "Id": "JsonLogFile",
      "SourceType": "DirectorySource",
      "RecordParser": "SingleLineJson",
      "Directory": "C:\\LogFiles\\",
      "FileNameFilter": "*.log",
      "InitialPosition": 0
    }
  ],
  "Sinks": [
    {
      "Id": "Firehose",
      "SinkType": "KinesisFirehose",
      "StreamName": "stream-logs",
      "Region": "us-east-1",
      "Format": "json"
    }
  ],
  "Pipes": [
    {
      "Id": "StreamLogs",
      "SourceRef": "JsonLogFile",
      "SinkRef": "Firehose"
    }
  ]
}    

 

  • 次のコマンドでKinesisエージェントを起動しておきます。
Start-Service -Name AWSKinesisTap

 

  • 次のコマンドでKinesisエージェントのステータスを確認できます。
Get-Service -Name AWSKinesisTap

 

 

  • S3バケットでログファイルを見ることができます。

 

  • 次のコマンドでKinesisエージェントを停止できます。
Stop-Service -Name AWSKinesisTap

 

 

まとめ

Kinesis Agent for Windowsで JSONログファイルをS3 に送信してみました。

Reference :

Kinesis Agent for Windows

Kinesis Agent Configuration

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.