Elasticからエージェントを移行する
Elasticからのエージェントの移行
Elastic Stackは、複数の可観測性データ収集エージェントを提供しています。具体的には:
- Beatsファミリー - Filebeat、Metricbeat、およびPacketbeatなど、すべて
libbeat
ライブラリに基づいています。これらのBeatsは、Lumberjackプロトコルを介してElasticsearch、Kafka、Redis、またはLogstashにデータを送信することをサポートします。 Elastic Agent
は、ログ、メトリック、およびトレースを収集するための統合エージェントを提供します。このエージェントは、Elastic Fleet Serverを介して中央管理可能で、Elasticsearch、Logstash、Kafka、またはRedisへの出力をサポートしています。- Elasticはまた、OpenTelemetry Collector - EDOTの配布版を提供しています。現在はFleet Serverによってオーケストレーションできませんが、ClickStackへの移行を考えるユーザーにとって、より柔軟でオープンな道を提供します。
最適な移行パスは、現在使用しているエージェントに依存します。以下のセクションでは、各主要エージェントタイプに対する移行オプションを文書化しています。私たちの目標は、摩擦を最小限に抑え、可能な限りユーザーが移行中も既存のエージェントを引き続き使用できるようにすることです。
推奨移行パス
可能な限り、すべてのログ、メトリック、トレース収集にOpenTelemetry (OTel) Collectorへの移行を推奨し、エッジのエージェントロールで収集器をデプロイすることをお勧めします。これはデータを送信する最も効率的な手段を表し、アーキテクチャの複雑さやデータ変換を避けることができます。
OpenTelemetry Collectorは、可観測性データの取り込みに対して持続可能でベンダーニュートラルなソリューションを提供します。私たちは、いくつかの組織が数千、あるいは数万のElasticエージェントを運用していることを認識しています。これらのユーザーにとって、既存のエージェントインフラとの互換性を維持することが重要かもしれません。このドキュメントはそれをサポートしつつ、チームが段階的にOpenTelemetryベースの収集に移行するのを助けることを目的としています。
ClickHouse OpenTelemetryエンドポイント
すべてのデータは、ログ、メトリック、トレース、セッションデータの主な入り口として機能するOpenTelemetry (OTel) collectorインスタンスを介してClickStackに取り込まれます。このインスタンスのためには、公式のClickStack配布版を使用することを推奨します。すでにClickStackのデプロイメントモデルにバンドルされていない限り。
ユーザーは、言語SDKから、またはインフラメトリックとログを収集するデータ収集エージェントを介して、この収集器にデータを送信します(OTelコレクターのエージェント役割や、FluentdやVectorなどの他の技術を使用することができます)。
このコレクターはすべてのエージェント移行ステップで利用可能であると仮定します。
Beatsからの移行
広範なBeatsデプロイメントを持つユーザーは、ClickStackに移行する際にこれらを保持したいと考えるかもしれません。
現在、このオプションはFilebeatでのみテストされているため、ログ専用に適しています。
Beatsエージェントは、現在OpenTelemetryの仕様に統合されつつあるElastic Common Schema (ECS)を使用します。ただし、これらのスキーマは依然として著しく異なるため、ユーザーはECS形式のイベントをClickStackに取り込む前にOpenTelemetry形式に変換する責任があります。
この変換は、強力な変換言語であるVector Remap Language (VRL)をサポートする軽量で高性能な可観測性データパイプラインであるVectorを使用して行うことを推奨します。
FilebeatエージェントがKafkaにデータを送信するように構成されている場合(Beatsでサポートされている出力)、VectorはKafkaからこれらのイベントを消費し、VRLを使用してスキーマ変換を適用し、OTLPを介してClickStackに付属のOpenTelemetry Collectorに転送できます。
また、VectorはLogstashで使用されるLumberjackプロトコル経由でイベントを受信することもサポートしています。これにより、Beatsエージェントはデータを直接Vectorに送信でき、同じ変換プロセスを適用してからOTLPを介してClickStackのOpenTelemetry Collectorに転送できます。
これらのアーキテクチャの両方を以下に示します。

以下の例では、Lumberjackプロトコルを介してFilebeatからログイベントを受信するためにVectorを構成する初期ステップを提供します。ECSイベントをOTel仕様にマッピングするためのVRLを提供し、これらをOTLPを介してClickStackのOpenTelemetryコレクターに送信します。Kafkaからイベントを消費するユーザーは、VectorのLogstashソースをKafkaソースに置き換えることができ、他のステップは同じままとなります。
Vectorのインストール
公式インストールガイドを使用してVectorをインストールします。
これは、Elastic Stack OTelコレクターと同じインスタンスにインストールできます。
ユーザーは、Vectorをプロダクションに移行する際のベストプラクティスに従って、アーキテクチャやセキュリティに関して配慮することができます。
Vectorの構成
Vectorは、Logstashインスタンスを模倣してLumberjackプロトコル経由でイベントを受信するように構成する必要があります。これは、Vectorのlogstash
ソースを構成することで達成できます。
相互TLSが必要な場合は、Elasticガイドの"Logstash出力のSSL/TLSを構成する"を使用して証明書とキーを生成します。これらは、上記のように構成で指定できます。
イベントはECS形式で受信されます。これらは、Vector Remap Language (VRL)トランスフォーマーを使用してOpenTelemetryスキーマに変換できます。このトランスフォーマーの構成は簡単で、スクリプトファイルは別のファイルに保持されます。
上記のbeats
ソースからイベントを受信することを注意してください。我々のリマップスクリプトを以下に示します。このスクリプトはログイベントのみでテストされていますが、他の形式の基盤となることができます。VRL - ECSからOTelへ
最後に、変換されたイベントはOTLPを介してClickStackにOpenTelemetryコレクターに送信できます。これには、Vectorでremap_filebeat
変換からイベントを取り込むOTLPシンクの構成が必要です。
ここでのYOUR_INGESTION_API_KEY
はClickStackによって生成されます。このキーは、HyperDXアプリのTeam Settings → API Keys
で見つけることができます。

私たちの最終的な完全な構成は以下に示されています。
Filebeatの構成
既存のFilebeatインストールは、単にイベントをVectorに送信するように変更される必要があります。これには、Logstash出力の構成が必要で、再びTLSはオプションで構成できます。
Elastic Agentからの移行
Elastic Agentは、異なるElastic Beatsを1つのパッケージに統合します。このエージェントは、Elastic Fleetと統合されており、中央集権的にオーケストレーションおよび構成することができます。
Elastic Agentsを展開しているユーザーは、いくつかの移行パスがあります:
- エージェントをLumberjackプロトコル経由でVectorエンドポイントに送信するように構成します。これは、Elastic Agentでログデータを収集しているユーザーに対してのみテストされています。 これは、KibanaのFleet UIを通じて中央に設定できます。
- Elastic OpenTelemetry Collector (EDOT)としてエージェントを実行します。Elastic Agentには、アプリケーションとインフラを一度の手間で計器化し、複数のベンダーやバックエンドにデータを送信できる埋め込まれたEDOTコレクターが含まれています。この構成では、ユーザーは単にEDOTコレクターを構成して、OTLPを介してClickStack OTelコレクターにイベントを転送することができます。このアプローチはすべてのイベントタイプをサポートします。
これらのオプションの両方を下に示します。
Vector経由でデータを送信
Vectorのインストールと構成
Filebeatからの移行用に文書化された手順と同じ手順を使用して、Vectorをインストールおよび構成します。
Elasticエージェントを構成
Elastic Agentは、LogstashプロトコルLumberjackを介してデータを送信するように構成する必要があります。これはサポートされているデプロイメントパターンで、中央に設定するか、エージェント構成ファイルelastic-agent.yaml
を通じて設定することができます(Fleetなしで展開する場合)。
Kibanaを通じた中央設定は、Fleetに出力を追加することによって実現できます。

この出力は、エージェントポリシーで使用できます。これにより、ポリシーを使用しているすべてのエージェントが自動的にそのデータをVectorに送信することになります。

これにはTLSによる安全な通信が必要であるため、ユーザーがそのVectorインスタンスをLogstashの役割として想定していることを前提とした、"Logstash出力のSSL/TLSを構成する"ガイドを推奨します。
この設定には、Vector内のLogstashソースも相互TLSを設定する必要があります。ガイドで生成されたキーと証明書を使用して、入力を適切に構成してください。
ElasticエージェントをOpenTelemetryコレクターとして実行
Elastic Agentには、アプリケーションとインフラを一度の手間で計器化し、複数のベンダーやバックエンドにデータを送信できる埋め込まれたEDOTコレクターが含まれています。
Elastic Agentに埋め込まれたEDOTコレクターを実行しているユーザーは、エージェントが提供する既存の統合機能を利用できません。また、コレクターはFleetによって中央管理できず、ユーザーは独立モードでエージェントを実行することを余儀なくされ、自ら構成を管理する必要があります。
Elastic AgentをEDOTコレクターで実行するには、公式Elasticガイドを参照してください。ガイドに示されているようにElasticエンドポイントの構成を行うのではなく、既存のexporters
を削除し、OTLP出力を構成してClickStack OpenTelemetryコレクターにデータを送信します。たとえば、エクスポーターの構成は次のようになります。
ここでのYOUR_INGESTION_API_KEY
はClickStackによって生成されます。このキーは、HyperDXアプリのTeam Settings → API Keys
で見つけることができます。

もしVectorが相互TLSを使用するように構成されており、ガイドから生成された証明書とキーが使用されている場合、otlp
エクスポーターは次のように構成される必要があります。
Elastic OpenTelemetryコレクターからの移行
すでにElastic OpenTelemetry Collector (EDOT)を実行しているユーザーは、エージェントをClickStack OpenTelemetryコレクターにOTLP経由で送信するように単に再構成できます。これに関与する手順は、Elastic AgentをOpenTelemetryコレクターとして実行するための手順と同じです。このアプローチはすべてのデータタイプで使用できます。