Logstashを含むデータ取り込みの簡略化ツールとAmazon Elasticsearch Serviceの統合について
はじめに
ツールを使用しない場合、Elasticsearch へのデータの取り込みには、多くの作業が必要となります。本記事では、データの取り込みについてのAmazon Elasticsearch Serviceに統合されているツールを紹介します。
Amazon Elasticsearch Service - Amazon Elasticsearch Serviceは、AWSクラウドにおいてElasticsearchをデプロイ、保護、実行するフルマネージド型サービスです。多数のツールと統合されており、必要な規模でアプリケーションを構築、監視、およびトラブルシューティングできます。
Amazon Elasticsearch Serviceのデータの取り込み方法について
Elasticsearch へのデータの取り込みには、以下に示したものを含め、多くの作業が必要です。
- データソースの収集、変換、マッピング、異なるデータソースをElasticsearch インデックスへ読み込む
- rawデータの場合は、JSONやCSVなどに変換し、データのクリーンアップを行い、対象のデータフィールドにマッピングを行う
- 効率的なロードのために、データに対するバッチ処理とバッファの設定を行う
Amazon Elasticsearch Serviceでは、LogstashやAmazon Kinesis Data Firehose、Amazon CloudWatch Logs、AWS IoTといった、統合ツールをユースケースに応じて選択し、利用することで簡単にデータの取り込みができます。
1. Logstash
Logstashは、軽量でオープンソースのデータ処理ツールで、データソースからデータを収集して変換し、Elasticsearch にロードします。Logstashの利点を紹介します。
- 非構造化データの読み込み - Logstashを利用すると、システムログやウェブサイトログ、アプリケーションサーバーログといった、さまざまなデータソースから非構造化データを簡単に読み込むことができます。
- PRE – BUILDフィルター - LogstashではPRE – BUILDフィルターが提供されています。一般的なデータ型を簡単に変換し、Elasticsearchでインデックスを作成することで、カスタムデータ変換パイプラインを作成することなく、クエリを開始できます。
- 多数のプラグインアーキテクチャ - Githubには200以上の利用可能なプラグインがありあます。そのため、データパイプラインのカスタマイズに必要なプラグインが、すでに構築されている可能性があります。もし構築されていなくても、自分で作成することができます。
<Amazon Elasticsearch Serviceとの統合>
Amazon Elasticsearch ServiceのLogstashとのサポートにより、LogstashをAmazon EC2にデプロイし、Logstashの実装を通じて発生するすべてのログのバックエンドストアとしてAmazon Elasticsearch Serviceドメインを設定できます。
また、Logstashの組込みフィルターのライブラリのサポートにより、以下に示す一般的な変換処理を簡単に実行することができます。
パターンマッチングによる非構造化ログデータの解析と構造化データへの変換、データレコードフィールドの名前変更、削除、置き換え、変更、メトリクス収集
2. Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehoseは、簡単にほぼリアルタイムでのストリーミングデータのキャプチャ、変換、ロードを行うことができるフルマネージド型サービスです。データスループットに応じて自動的にスケールされ、継続的な管理が不要となる上に、ロード前にはデータのバッチ処理、圧縮処理、暗号化が行われ、送信先でのストレージ量を最小化し、セキュリティ強化もできます。
<Amazon Elasticsearch Serviceとの統合>
Amazon Kinesis Data Firehoseを使用すると、データソースからのストリーミングデータをElasticsearchインデックスとAmazon Elasticsearch Serviceに必要なフォーマットに変換し、Amazon Elasticsearch Serviceへロードできます。独自のデータ処理パイプラインの構築は不要です。
AWS マネジメントコンソールにあるAmazon Elasticsearch Service配信ストリームの設定タブでAWS Lambda関数(AWS Lambda関数の説明は後述します。)を選択することで利用できます。Amazon Kinesis Data Firehoseでは、すべての入力データレコードにAWS Lambda関数を自動で適用し、変換されたデータをAmazon Elasticsearch Serviceインデックスにロードします。そのため、Amazon Kinesis Data Firehoseは、大量のデータを扱う場合のツールとして適しています。
AWS Lambda関数 - AWS Lambdaは、アップロードしたコードを自動的に実行するサーバーレスコンピューティングサービスです。AWS Lambda関数は、名前や説明、エントリーポイント、リソース要件などの設定情報と関連付けられた、AWS Lambdaで実行するコードのことです。
3. Amazon CloudWatch Logs
Amazon CloudWatchは、AWSクラウドリソースとAWSで実行されるアプリケーションのモニタリングおよび オブザーバビリティサービスです。Amazon CloudWatchを使用すると、メトリックの収集と追跡、ログファイルの収集とモニタリング、アラームの設定をすることができます。
Amazon CloudWatch Logsを使用すると、Amazon EC2インスタンス、AWS CloudTrail、Route S3、その他のデータソースのログファイルの監視と保存、アクセスができます。Amazon CloudWatch Logsでは、データソースに関わらず、すべてのログをイベントの1つの一貫した流れとして時間順で捉えることができます。その他にも、以下に示すことができます。
- 他のディメンションに基づくクエリとソート
- 特定のフィールドを基準にしたグループ化
- Amazon CloudWatch Logs Insightsの強力なクエリ言語を使用したカスタム計算の作成
- ダッシュボードでのログデータの可視化
<Amazon Elasticsearch Serviceとの統合>
Amazon CloudWatch Logsサブスクリプションを利用すると、ほぼリアルタイムでAmazon CloudWatch LogsロググループがAmazon Elasticsearch Serviceドメインにデータをストリーミングするように設定できます。
また、既にAmazon CloudWatch Logsを使用してアプリケーションログデータの収集をしている場合は、Amazon Elasticsearch Serviceドメインに収集したデータをロードするだけなので追加作業が少なくて済みます。
4. AWS IoT
AWS IoTは、IoTデバイスから、クラウドアプリケーションやその他のデバイスに簡単かつ安全に通信するためのマネージドクラウドプラットフォームです。AWS IoTでは、家庭用電化製品、埋め込みセンサー、テレビ用STB(放送信号の受信/変換装置)などの接続機器からデータをキャプチャできます。
<Amazon Elasticsearch Serviceとの統合>
AWSマネジメントコンソールでは、Amazon Elasticsearch Serviceへ直接データをロードするように、AWS IoTを設定することができます。これにより、IoTデータとメトリックへのほぼリアルタイムのアクセスが可能となります。
まとめ
本記事では、Amazon Elasticsearch Serviceに統合されている、データを取り込むためのツールを4つ紹介しました。これらのツールは、各々のユースケース要件によって適したものを選択する必要がありますが、ユースケースに適したものを選択すると、大幅な作業の効率化が期待できます。Amazon Elasticsearch Serviceの利用を考えている方は、これらのツールも一緒に検討してみてください。