Alibaba Cloud Elasticsearch は、Elastic Beats、Logstash、Elasticsearch クライアント、Kibana コンソールの 4 つのデータ収集メソッドをサポートしています。データの型、変換要件、およびデータがインフラストラクチャ、アプリケーション、または直接の API インタラクションから取得されるかに基づいて選択します。
Elasticsearch は、アプリケーション検索、ウェブサイト検索、ロギング、インフラ監視、アプリケーションパフォーマンスモニタリング (APM)、セキュリティ分析など、多くのシナリオで広く使用されています。これらのシナリオ向けのソリューションは無料で提供されています。それらを使用する前に、必要なデータを Elasticsearch にインポートする必要があります。
収集メソッドの選択
要件を満たす最もシンプルなオプションから始めます。
| シナリオ | 推奨メソッド |
|---|---|
| サーバー、エッジデバイス、または IoT センサーからログ、メトリック、またはシステムイベントを収集する | Elastic Beats |
| 同じデータの型を収集するが、エンリッチメント、条件付きルーティング、または複数のアウトプットが必要 | Logstash |
| アプリケーションコードからプログラムでデータを送信する | Elasticsearch クライアント |
| Elasticsearch リクエストのテスト、デバッグ、または個々のドキュメントのインデックス作成 | Kibana コンソール |
要件が明確でない場合は、Beats から始めてください。セットアップのオーバーヘッドが最も低く、ほとんどのログとメトリックの収集シナリオで機能します。Beats モジュールが変換やルーティングの要件を満たせない場合にのみ、Logstash に移行してください。
Elastic Beats
Beats は、軽量なデータシッパーのコレクションです。各シッパーは特定のデータの型を対象とし、最小限のリソースオーバーヘッドで実行されます。これにより、Beats はエッジデバイス、IoT センサー、ファイアウォール、およびより重いエージェントが実用的でないホストにとって、デフォルトの選択肢となります。
Beats は、十分なリソースを持つサーバーでも動作します。収集のニーズが単純な場合、Beats は Logstash よりも設定が迅速です。事前構築済みのモジュールが、一般的なソフトウェアスタックの解析、インデックス作成、ダッシュボードのセットアップを処理します。基本的なデプロイメントは、通常 5 分未満で実行できます。
利用可能なシッパー
| シッパー | 収集対象 | 主なデータソース |
|---|---|---|
| Filebeat | ログファイルとテキストストリーム | ファイル、TCP、UDP、コンテナ、Redis、syslog。Apache、MySQL、Kafka 用のモジュール |
| Metricbeat | システムおよびサービスのメトリック | CPU、メモリ、ディスク、ネットワーク、実行中のプロセス。Kafka、Redis、Palo Alto Networks 用のモジュール |
| Packetbeat | リアルタイムのネットワークトラフィック | DHCP、DNS、HTTP、MongoDB、NFS、TLS。セキュリティ分析と APM |
| Winlogbeat | Windows イベントログ | アプリケーション、ハードウェア、セキュリティ、およびシステムイベント |
| Auditbeat | ファイル整合性と監査イベント | Linux 監査フレームワーク。セキュリティ分析 |
| Heartbeat | サービスの可用性 | ICMP、TCP、HTTP プローブ。インフラ監視 |
| Functionbeat | サーバーレスのログとメトリック | AWS Lambda およびその他のサーバーレス環境 |
Metricbeat を使用した実践的な例については、「自己管理型の Metricbeat を使用してシステムメトリックを収集する」をご参照ください。他のシッパーも同じセットアップパターンに従います。
Logstash
Logstash は、ほぼすべてのソースからデータを読み取り、変換し、ルーティングします。外部データソースのクエリ、条件付きロジックの適用、イベントの複数のアウトプットへの同時ルーティングなど、Beats 単独では実行できない複雑なエンリッチメントタスクを処理します。
Logstash は Beats よりも多くの CPU とメモリを必要とします。低リソースのデバイスでは使用しないでください。Beats モジュールが提供する機能を超える変換要件がある場合に Logstash を使用してください。
Alibaba Cloud Logstash はフルマネージドサービスです。Logstash インフラストラクチャをプロビジョニングまたは維持する必要はありません。すべてのオープンソース Logstash 機能と互換性があり、複数のソースから同時にデータを収集できます。
パイプラインコンポーネント
Logstash パイプラインは、次の 3 つのステージで構成されます。
入力プラグイン — ファイル、HTTP エンドポイント、IMAP、JDBC、Kafka、syslog、TCP、または UDP からデータを読み取ります。
フィルタープラグイン — データを解析し、エンリッチメントを行います。Grok フィルタープラグインは、正規表現、CSV、JSON、およびキーと値のペアを処理します。他のプラグインは、IP 位置情報、DNS ルックアップ、またはカスタムディレクトリや Elasticsearch インデックスからの値のルックアップを追加します。mutate プラグインは、フィールドの名前変更、コピー、または削除を行います。
出力プラグイン — 結果を送信先に書き込みます。Elasticsearch 出力プラグインは、処理されたデータをご利用のクラスターに送信します。
例:RSS フィードのインジェスト
次のパイプラインは、Elastic Blogs の RSS フィードを読み取り、HTML タグを削除し、クリーンアップされたデータを Elasticsearch に送信します。
前提条件
開始する前に、以下を確認してください。
Alibaba Cloud Logstash インスタンスがあること。
内部エンドポイントとアクセス認証情報がわかっている Alibaba Cloud Elasticsearch クラスターがあること。
Logstash インスタンスと Elasticsearch クラスター間にネットワーク接続が存在すること。
パイプラインの設定
input {
rss {
url => "https://www.elastic.co/blog/feed"
interval => 120
}
}
filter {
mutate {
rename => [ "message", "blog_html" ]
copy => { "blog_html" => "blog_text" }
copy => { "published" => "@timestamp" }
}
mutate {
gsub => [
"blog_text", "<.*?>", "",
"blog_text", "[\n\t]", " "
]
remove_field => [ "published", "author" ]
}
}
output {
stdout {
codec => dots
}
elasticsearch {
hosts => [ "https://<your-elasticsearch-internal-endpoint>:9200" ]
index => "elastic_blog"
user => "elastic"
password => "<your-elasticsearch-password>"
}
}パイプラインを実行する前に、次のプレースホルダーを置き換えてください。
| プレースホルダー | 説明 | 例 |
|---|---|---|
<your-elasticsearch-internal-endpoint> | Elasticsearch クラスターの内部エンドポイント | es-cn-xxxx.elasticsearch.aliyuncs.com |
<your-elasticsearch-password> | クラスター上の elastic ユーザーのパスワード | — |
結果の確認
パイプラインの実行後、Kibana コンソールからインデックスにクエリを実行します。
POST elastic_blog/_searchクエリ結果の読み取りに関する詳細については、「手順 3:同期結果の表示」をご参照ください。
Elasticsearch クライアント
Elasticsearch クライアントは、RESTful API の低レベルな HTTP の詳細を抽象化する、言語固有のライブラリです。アプリケーションがプログラムでデータをインデックス作成またはクエリする必要がある場合に使用します。また、RESTful API を使用して Elasticsearch クラスターとインデックスを管理することもできます。
公式にサポートされている言語には、Java、JavaScript、Go、.NET、PHP、Perl、Python、Ruby があります。完全なドキュメントとコードサンプルについては、「Elasticsearch クライアント」をご参照ください。
ご利用の言語が上記のリストにない場合は、「コミュニティ提供のクライアント」をご確認ください。
Kibana コンソール
Kibana コンソールは、Elasticsearch RESTful API へのブラウザベースのインターフェイスを提供します。基盤となる HTTP リクエストの技術的な詳細を抽象化します。開発、デバッグ、および 1 回限りのインデックス作成タスクに使用します。
次の例では、単一の JSON ドキュメントをインデックスに追加します。
PUT my_first_index/_doc/1
{
"title" : "How to Ingest Into Elasticsearch Service",
"date" : "2019-08-15T14:12:12",
"description" : "This is an overview article about the various ways to ingest into Elasticsearch Service"
}スクリプト化または自動化されたワークフローの場合、cURL は、同じ RESTful API を介して Elasticsearch と通信し、カスタマイズされたスクリプトを統合するために使用できるコマンドラインの代替手段です。
まとめ
データソースと運用上の制約に一致するメソッドを選択してください。
Beats — 便利で軽量、すぐに使えます。事前構築済みのモジュールは、一般的なデータベース、オペレーティングシステム、コンテナ、Web サーバー、キャッシュをカバーしています。ダッシュボードは 5 分未満で実行できます。リソースが限られている組み込みデバイス、IoT センサー、またはファイアウォールに最適です。
Logstash — Beats がエンリッチメント、フィルタリング、またはルーティングの要件を満たせない場合に使用します。Alibaba Cloud Logstash はフルマネージドであり、インフラストラクチャを運用する必要はありません。
Elasticsearch クライアント — アプリケーションがプログラムで送信する必要のあるデータを収集または生成する場合に推奨されます。
Kibana コンソール — Elasticsearch リクエストを対話的に開発、テスト、またはデバッグする場合に推奨されます。