Amazon Web Services ブログ
Amazon Kinesis Agent for Windows を使用して、集中化された Microsoft Exchange サーバーのログ管理
Microsoft Exchange サーバーは様々な種類のログを保管しています。これらのログには、メッセージ追跡、Exchange ウェブサービス(EWS)、Information Services(IIS)、およびアプリケーション/システムイベントログの種類が含まれます。グローバルにデプロイされた Exchange サーバーでは、これらのサーバーのローカルで複数のディレクトリにログが散在している場合があります。この場合、Exchange 管理者が各サーバーにログインして、ステータス、ヘルス、およびイベントをモニタリングする必要があります。Exchange 管理者は、これらのログを集中化し、有用なメトリクスに変換することで、各サーバーにログインすることなく、高負荷やサービス/アプリケーションエラーなどの多くの問題を特定できます。
このブログ記事では、Microsoft Exchange サーバーのログをストリーミング、分析、および保存するための効率的なアーキテクチャについて説明します。頻繁なクエリと運用分析用に、Amazon Elasticsearch Service(Amazon ES)と Kibana を使用してリアルタイムで可視化を行います。例えば、さまざまな種類のレポートを提供します。これらのレポートは、上位のメール送信者と受信者、IIS ログの上位 HTTP ステータスコード、EWS ログの上位エラーコード、負荷/エラーのスパイク絞り込みに関するものです。監査、法的要件、コンプライアンス要件などの低頻度クエリについては、Amazon S3 を最終宛先として使用しています。標準SQL を使用した簡単なクエリ向けに、低コストのストレージオプションと高い耐久性、Amazon Athena を提供します。
Amazon Kinesis Agent for Microsoft Windows(Kinesis Agent for Windows)は、構成可能で拡張可能な高度なエージェントです。Kinesis Agent for Windows は、Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose、Amazon CloudWatch など、さまざまな AWS のサービスに、ログ、イベント、およびメトリクスを、収集、解析、変換、ストリーム配信します。Windows ベースのサービスからログを集中化するために、より効率的で信頼性の高い方法を提供します。これにより、問題の及ぶ範囲を確認したり、問題をモニタリングしたり、エラーや負荷が特定のしきい値を超えた場合にアラームを生成したりすることができます。Kinesis Agent for Windows について詳しくは、Amazon Kinesis Agent for Microsoft Windowsとはを参照してください。
ログの解析
Amazon ES には JSON 形式のデータが必要です。Kinesis Agent for Windows は、CSV 形式の Exchange ログ行を効率的に解析し、JSON に変換します。Kinesis Agent for Windows を使用すると、ホスト名、EC2 インスタンス ID、およびカスタム日付と時刻形式などの詳細を追加して、ログに記録された正確な問題を特定するのに役立ちます。Kinesis Agent for Windows は動的にログヘッダーを計算します。ヘッダー名が変更された場合、またはサービスを再起動するために単一のログファイルに複数のヘッダー行がある場合でも実行されます。 ログをローテーションしても、正しいデータをストリーミングします。
ログのフロー
この使用例では、同じログを、リアルタイム分析するために Amazon ES へ、 Amazon Athena をオフライン分析するために Amazon S3 へと両方に送信します。ホストから各宛先にデータを 2 回ストリーミングする代わりに、Kinesis Agent for Windows を構成して、Kinesis データストリームに一度ストリーミングすることができます。ストリームから Amazon Kinesis Data Firehose がログを収集し、Amazon ES に配信します。別の Kinesis Data Firehose は、同じログを収集し、Amazon Athena の Amazon S3 バケットに配信します。ログを別の宛先に送信する必要がある場合は、別の Kinesis Data Firehose インスタンスを使用できます。
AWS Lambda は Amazon ES のログを定期的に分析し、統計を CloudWatch メトリクスに投稿します。CloudWatch アラームは、投稿されたメトリクスで検出された異常をトリガーするために使用されます。
Kibana はログデータを可視化します。グラフのスパイクや異常を探して、特定のログデータをドリルダウンすることができます。Exchange サービスの特定の問題を診断するのに役立ちます。また、いくつかの認証機能によって、 Kibana へのアクセスが保護されます。Amazon Cognito を ID プロバイダで使用する方法については、Amazon Cognito Authentication for Kibana を参照してください。
Agent の設定
Kinesis Agent for Windows の設定は、%PROGRAMFILES%\Amazon\AWSKinesisTap\ の appsettings.json にて説明されています。ここでは、ソース(ログの位置)、シンク(Kinesis Data Stream information)、およびソースとシンクを接続するパイプを定義します。
指定されたディレクトリの下に .log 拡張子を持つすべてのファイルをクエリするソース設定の例を次に示します。ExchangeLogSource がタイプに設定されている場合、ヘッダーのログ行が動的に解析されます。次に、「タイムスタンプ」に必要な列が自動的に選択されます。
メッセージ追跡ログは、次のサンプルと同様になります。
2018-10-22T10:53:13.404Z, 10.00.00.00, ExchangeServer01,10.00.00.00,ExchangeServer01,;250 2.0.0 OK;ClientSubmitTime:2018-10-22T10:53:10.680Z,Intra-Organization SMTP Send Connector,SMTP,SEND,157882997807893,<6d606502441648f993b7b6d1b8fbb5fb@ExchangeServer01>,9b3f4489-a158-4126-0d41-08d6380c8f0f,recipient@Somedomain.com,250 2.1.5 Recipient OK,sender@Somedomain.com, return-path@Somedomain.com,…
// Sinks (Destinations) は、ログの行き先を定義します
次に、ログが保存されるシンクまたは宛先を定義します。また、ロールがストリームにアクセスできる場合を想定して、別の AWS アカウントの Kinesis データストリームにログをストリーミングすることもできます。アクセスを設定する方法については、シンクセキュリティの構成を参照してください。形式 が指定されると、ログは JSON に変換されます。
// Pipesは 、ソースとシンクを接続します。
パイプは、ソースと宛先を接続します。宛先に複数のソースを取り込む必要がある場合、またはその逆の場合に役立ちます。
Kinesis Agent for Windows は、Kinesis Data Streams にログを送信する前に、各ログラインを JSON BLOB に変換します。以下のサンプルをご覧ください。
視覚化による操作分析停電や深刻な問題に取り組んでいるとき、ログをすぐに利用できるようになります。
以下に例を示します。スパムがの可能性があるため、上位の送信者と受信者を知る必要があります。問題が発生したときにこれらの結果が得られれば、Exchange 管理者がスパムメッセージを削除するルールを作成して、リスクを緩和できます。
例えば、次の Kibana グラフは、Amazon ES のデータを視覚化します。時間ウィンドウに上位のメール送信者を示します。グラフには、上位の送信者 spam@somedomain.com が表示されます。これについてはさらに調査する必要があります。Amazon ES API コールを使用すると、集約された結果を取得し、プログラムでアクションを実行できます。このデータにアラートを配置することで、早期検出が可能になり、スパム削除アクションに繋がり、より多くのスパムを防くことができます。Kibana で視覚化を作成する方法について詳しくは、視覚化作成を参照してください。
以下は、Amazon CloudWatch の線グラフで、Amazon ES からの AWS Lambda クエリーログによって投稿された統計を示しています。
しきい値およびアラームは、CloudWatch アラームでアラートを設定できます。
Amazon ES エンドポイントをクエリする Python のAWS Lambda コードの例を示します。最新 15 分間の Microsoft Exchange メッセージ追跡ログから上位 5 つの送信者が返されます。次に、最上位の送信者が送信したメッセージの数を CloudWatch メトリクスに送信します。
まとめ
Amazon Kinesis Agent for Microsoft Windows は解析し、ログラインを JSON に変換し、データを Amazon Kinesis Data Streams にストリームします。このブログ記事のユースケースでは、数百の Microsoft Exchange Server ログを Amazon Kinesis Data Streams に 1 分以内にストリーミングしました。Kinesis Agent for Windows は、AWS のサービスとのネイティブ統合により、集中化された AWS ストレージおよび AWS 分析サービスに効率的にログを反映します。お客様のユースケースと楽しいログもお知らせください!
その他のリソース
- Kinesis Agent for Windows ユーザーガイド
- Kinesis Agent for Windows ダウンロード
- Kinesis Agent for Windows ソースコード
- ブログ : Amazon Kinesis Agent for Microsoft Windows を使用して、Windows イベント、ログ、およびメトリックを収集、解析、変換、ストリーム配信する
- ブログ: Persist Streaming Data to Amazon S3 using Amazon Kinesis Firehose and AWS Lambda
著者について
Vijay Amirtharaj は アマゾン ウェブ サービスのシステム開発エンジニアです。Vijay は、Well-Architected メールソリューションを開発することに熱心です。彼は、新しい技術を学ぶために読書を楽しみ、家族や友人と時間を過ごすのが大好きです。