Amazon Web Services ブログ

Amazon Kinesis Agent for Microsoft Windows を使用して、Windows イベント、ログ、およびメトリックを収集、解析、変換、ストリーム配信する

Amazon Kinesis Agent for Microsoft Windows (KA4W) を含む完全なデータパイプラインは、Windows ベースのサービスのパフォーマンス、セキュリティ、および可用性を分析および監視するのに役立ちます。Windows サービスにほぼリアルタイムのダッシュボードとアラームを構築できます。また Amazon AthenaKibanaAmazon QuickSightAmazon CloudWatch などの可視化およびビジネスインテリジェンスツールを使用して、迅速に位置の特定、診断、および解決を行うこともできます。

KA4W は、ログを解析して JSON などの標準形式に変換することで、クラウドベースのログ処理を排除します。これらの形式は、データパイプラインの可視化ツールやビジネスインテリジェンスツールですぐに使用できます。

KA4W を使ってみた経験についてあるお客様から寄せられた声を少しご紹介します。

「Microsoft Windows 用の新しい Amazon Kinesis Agent は、複数の相互接続されたシステム間の複雑なオーケストレーションを排除することで、ログをストリーミングするワークフローを簡略化しました。エージェントはセットアップ、構成、更新が容易でしたが、最も重要な点は、パフォーマンスが大幅に改善された点です。総体的に見て、Amazon Kinesis Agent for Microsoft Windows は、環境内の問題の可視性を大幅に改善し、運用コストを著しく削減するポテンシャルを秘めています」- Sanjay Kumar 氏、シニアソフトウェアエンジニア、Autodesk Inc.

この記事では、新しい Kinesis Agent for Windows が Windows アプリケーション、サーバー、およびワークステーションに関連するストリーミング分析のユースケースをどのように行うかを検証します。新しいエージェントを使い始める方法もご紹介します。KA4W を使用してリアルタイムデータを Amazon Kinesis サービスにプッシュすることで、次のようなさまざまな運用上の問題を解決できます。

  • 枯渇したスコープの場合に IP リースが拒否されたことを識別するための Dynamic Host Configuration Protocol (DHCP) サーバーを監視
  • Microsoft Exchange サーバーを監視して、上位の E メール送信者、メールストームの状況や負荷の高い状態を識別
  • ウェブベースのアプリケーションおよび Internet Information Services (IIS) ログのパフォーマンス、可用性、およびセキュリティ上の問題を監視する
  • Active Directory およびセキュリティ上の問題のドメインコントローラを監視する
  • フォレンジックと侵入テストのためにセキュリティインテリジェンスプラットフォームでログファイルを取り込めるようにする

Kinesis Agent for Windows の概要

Amazon Kinesis Agent for Microsoft Windows (KA4W) は、構成可能で拡張可能なエージェントです。Windows ノートパソコン、デスクトップコンピューター、およびサーバー上でオンプレミスまたは AWS クラウドで動作します。KA4W は、Kinesis Data StreamsKinesis Data Firehose、CloudWatch、CloudWatch Logs などのさまざまな AWS サービスに、ログ、イベント、およびメトリックを効率的かつ確実に収集、解析、変換、ストリーム配信します。

Kinesis Agent for Windows には、Exchange、Active Directory、DHCP、Microsoft SharePoint、Windows セキュリティログなどの一般的な Windows サービスからのログの処理を簡素化する組み込みパーサーが用意されています。 ログ、イベント、およびメトリックを AWS のサービスにストリーミングするための以下のような多くの技術的および運用上の課題を解決します。

  • 大量のログファイルを処理し、ほぼリアルタイムでさまざまなソースやフォーマットからのログとイベントを処理し、変換する
  • さまざまな種類のログローテーションアプローチを処理し、ログファイルがログライターによってロックされている場合でもアクセスする
  • AWS サービスに配信する前に不要なデータをフィルタリングすることで、データ転送とストレージのコストを削減
  • 収集したデータにコンテキストを追加することで、運用上およびセキュリティ上の問題の正確な分析と迅速な解決を可能にする
  • エージェント自体の正常性に関するデータを提供することで、収集およびストリーミングしたデータの正確さと完全性を確認する

次の図は、Kinesis Agent for Windows とストリーム処理フレームワークを使用してカスタムのリアルタイムデータパイプラインを構築する方法を示しています。

Amazon Kinesis Agent for Microsoft Windows には一連のプラグインが含まれています。これらのプラグインを設定することで KA4W をカスタマイズして、ログ、イベント、メトリックの収集、変換、ほぼリアルタイムの配信といったほとんどの要件を満たすことができます。カスタム要件がある場合は、独自のプラグインを作成することもできます。プラグインは、ソースパイプ、およびシンクで分類されています。

ソースは、さまざまな Windows ログ、イベント、およびメトリックを収集するプラグインです。KA4W には、以下を含む複数の組み込みソースプラグインが付属しています。

  • DirectorySource
  • ExchangeLogSource
  • 3SVCLogSource
  • UlsSource (SharePoint)
  • WindowsEventLogSource
  • WindowsETWEventSource
  • WindowsPerformanceCounterSource

これらのソースの詳細については、Kinesis Agent for Windows ユーザガイドの「Source Declarations」をご覧ください。

パイプはソースとシンクを接続します。パイプを使用して不要なデータをフィルタリングすることで、データの転送を改善し、ストレージと API の使用コストを削減できます。フィルタリングはデータ品質を向上させ、分析するデータ量を制限するのに効果的です。パイプの設定の詳細については、Kinesis Agent for Windows ユーザーガイドの「Pipe Declarations」をご覧ください。

シンクは、ログ、イベントやメトリックデータをさまざまな AWS サービスにストリーミングするプラグインです。Kinesis Agent for Windows には、KinesisStream、KinesisFirehose、CloudWatch、CloudWatchLogs などの複数のビルトインシンクプラグインが付属しています。Kinesis Agent for Windows では、AWS のサービスで認証した後でなければデータを送信できません。シンクとセキュリティ設定の詳細については、Kinesis Agent for Windows ユーザガイドの「Synk Declarations」をご覧ください。

ウェブサーバーの監視例

ウェブベースのアプリケーションがあり、基盤となるウェブサーバーを監視するとします。これを行うには、次の手順に従って、分析のために Windows イベントとウェブサーバーのログを Kinesis Data Firehose および Amazon S3 に移動するのに必要なデータパイプラインを構築します。

  1. Kinesis Agent for Windows をインストールする
  2. ストリームを作成する
  3. 権限を設定する
  4. Kinesis Agent for Windows を設定する
  5. Kinesis Agent for Windows を起動する
  6. 取り込んだログを表示する

Kinesis Agent for Windows をインストールする

[Amazon Kinesis Agent for Microsoft Windows のダウンロード] ページに移動し、指示に従ってエージェントをダウンロードします。たとえば、昇格した PowerShell コマンドプロンプトで次のコマンドを実行できます。

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

ストリームを作成する

EventLogStream および W3SVCLogStream という名前の 2 つの Kinesis Data Firehose 配送ストリームを作成します。Amazon Simple Storage Service (Amazon S3) にデータを配信するように両方のストリームを設定します。Amazon S3 へのログ配信を迅速に行うには、配信ストリームのバッファサイズを 1 MB に、バッファ間隔を 60 秒に減らてください。そうすることで、Amazon S3 への書き込みが頻繁に行われるようになります。

権限を設定する

ホストが Amazon EC2 インスタンスの場合は、セキュリティ設定が簡単で、作業は作成したストリームに Amazon EC2 インスタンスロール PutRecordBatch 権限を付与するだけで済みます。サンプルの IAM (セキュリティ) ポリシーは、次のようになります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecordBatch"
            ],
            "Resource": [
                "arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name"
            ]
        }
    ]
}

Kinesis Agent for Windows を設定する

この例では、「C:\Program Files\Amazon\AWSKinesisTap\appsettings.json」の内容を次のように置き換えます。

{
    "Sources": [
        {
            "Id": "ApplicationLog",
            "SourceType": "WindowsEventLogSource",
            "LogName": "Application"
        },
        {
            "Id": "SecurityLog",
            "SourceType": "WindowsEventLogSource",
            "LogName": "Security"
        },
        {
            "Id": "SystemLog",
            "SourceType": "WindowsEventLogSource",
            "LogName": "System"
        },
        {
            "Id": "W3SVCLog1",
            "SourceType": "W3SVCLogSource",
            "Directory": "C:\\inetpub\\logs\\LogFiles\\W3SVC1",
            "FileNameFilter": "*.log",
            "TimeZoneKind": "UTC"
        }
    ],
    "Sinks": [
        {
            "Id": "EventLogSink",
            "SinkType": "KinesisFirehose",
            "StreamName": "EventLogStream",
            "Format": "json"
        },
        {
            "Id": "W3SVCLogSink",
            "SinkType": "KinesisFirehose",
            "Region": "us-west-2",
            "StreamName": "W3SVCLogStream",
            "Format": "json"
        }
    ],
    "Pipes": [
        {
            "Id": "ApplicationLogToFirehose",
            "SourceRef": "ApplicationLog",
            "SinkRef": "EventLogSink"
        },
        {
            "Id": "SecurityLogToFirehose",
            "SourceRef": "SecurityLog",
            "SinkRef": "EventLogSink"
        },
        {
            "Id": "SystemLogToFirehose",
            "SourceRef": "SystemLog",
            "SinkRef": "EventLogSink"
        },
        {
            "Id": "W3SVCLog1ToKinesisStream",
            "SourceRef": "W3SVCLog1",
            "SinkRef": "W3SVCLogSink"
        }
    ]
}

前述の設定ファイルには、4 つのソースがあります。最初の 3 つは異なる Windows イベントログ用で、最後は IIS (W3SVC) ログ用のソースです。通常、IIS はログを C:\inetpub\logs\LogFiles\W3SVC1 ディレクトリに書き込みます。

KinesisFirehose には、EventLogStream にデータを送信する EventLogSink と、W3SVCLogStream にデータを送信する W3SVCLogSink という 2 つのシンクがあります。どちらのシンクでも、Format キーと値のペアを [json] に設定します。これにより、JSON 形式のデータを Kinesis Data Firehose に送信するようにエージェントに指示が出されます。

最初の 3 つのパイプは最初の 3 つのソースを EventLogSink に接続し、最後のパイプは最後のソースを W3SVCLogSink に接続します。

この例では、認証と承認は、Kinesis Agent for Windows を実行している Amazon EC2 インスタンスに関連付けられているインスタンスプロファイルに基づいています。認証と承認には他にもアプローチがあります。詳細については、Kinesis Agent for Windows ユーザーガイドの「Sink Declarations」の「Sink Security Configuration」をご覧ください。

Kinesis Agent for Windows を起動する

注意: Kinesis Agent for Windows の開発中、内部名は「AWSKinesisTap」でした。下位互換性を維持するために、エージェントの設定内でこの用語を維持しています。

エージェントを起動する方法は、次のようにいくつかあります。

  1. サービスアプレットからエージェントを起動する方法。
  2. 昇格したコマンドプロンプトからエージェントを起動し、net start AWSKinesisTap を実行する方法。
  3. 昇格した PowerShell コマンドプロンプトからエージェントを起動し、Start-Service -Name AWSKinesisTap を実行する方法。

Kinesis Agent for Windows が起動しない場合は、アプリケーションイベントログを確認してください。エージェントが起動すると、「C:¥Program Data¥Amazon¥AWSKinesisTap¥logs」にログが記録されます。

問題が発生した場合は、Kinesis Agent for Windows ユーザーガイドの「トラブルシューティング」をご覧ください。

ログデータを表示する

Amazon S3 に取り込まれたデータをすばやく簡単に表示する方法は次のとおりです。

  1. AWS マネジメントコンソールにサインインし、Amazon S3 コンソールを開きます。Kinesis Data Firehose 配信ストリームがストリーミングされている S3 バケットに移動し、オブジェクトを選択します。
  2. [選択元] を選択します。
  3. [ファイル形式] で JSON を選択し、[ファイルプレビューの表示] を選択します。

Windows イベントログの例を以下に示します。

Amazon Kinesis Agent for Microsoft Windows ユーザーガイドには、Amazon Athena を使用して Amazon S3 でデータをクエリする強力なシナリオを示すチュートリアルが含まれています。

費用

Amazon Kinesis Agent for Microsoft Windows は無料で使用できます。ただし、Kinesis Data Streams、Kinesis Data Firehose、Amazon S3 など、完全なデータパイプラインとやりとりする AWS リソースについては有料です。

パフォーマンス

Amazon Kinesis Agent for Microsoft Windows は、システムリソースの消費量を最小限に抑えます。メモリと CPU 使用率は、AWS サービスへのデータストリーミング量、および Kinesis Agent for Windows をホストしているマシンの仮想または物理的なハードウェア設定によって異なります。

概要

Amazon Kinesis Agent for Microsoft Windows は、ログ、イベントやメトリックを AWS サービスにストリーミングします。これは、Windows デスクトップおよびサーバーマシンの複雑な運用上およびセキュリティ上の問題を発見、防止、解決するための効率的で信頼性が高く、費用対効果の高いデータパイプラインを構築するための重要な要素です。この記事で紹介した例では、ウェブサーバーホストから運用データを収集してストリーミングするためのカスタム調整ソリューションを簡単に設定できることが示されています。Kinesis Agent for Windows を使用すると、シナリオに適した AWS のサービスを選択してデータパイプラインを構築し、運用上の課題を深く理解することができます。

応用

Kinesis Agent for Kinesis Agent は非常に柔軟で多くの追加機能を備えています。次のステップに進む上で、いくつかヒントをご紹介します。

  • Kinesis Agent for Windows ユーザーガイドで、設定例を数多く確認してください。
  • Windows ファイルシステムに格納されている多くの種類のテキストベースのログを解析する柔軟なソースプラグイン、DirectorySource について学びましょう。サポートされているパーサーの詳細については、「Source Declarations」をご覧ください。
  • エージェントが環境変数と Amazon EC2 メタデータから情報を取得できるように変数のサポートがある設定ファイルを表示します。
  • TextDecoration と ObjectDecoration を使用してログを飾りましょう。
  • Kinesis Agent for Windows を設定して、それ自体とその設定ファイルを更新します。詳細については、「Configuring Automatic Updates」ご覧ください。

その他のリソース


著者について

Harvir Singh は、Amazon Kinesis Agent for Microsoft Windows のソフトウェア開発マネージャーです。

 

 

 

 

Li Chen は、Amazon Kinesis Agent for Microsoft Windows のシニアソフトウェア開発エンジニアです。

 

 

 

 

Bonnie Feinberg は、Amazon Kinesis Agent for Microsoft Windows のシニアソフトウェア開発エンジニアです。