LogicMonitor用OpenTelemetryコレクターの概要

LogicMonitorは、OpenTelemetryを利用して、事前に構成されたラップされたバージョンのOpenTelemetry Collectorを提供し、計測されたアプリケーションからLogicMonitorプラットフォームにトレースを転送します。 OpenTelemetryコレクターを、LogicMonitorポータルのネイティブリソースとしてインストール、アップグレード、構成、および監視できます。 OpenTelemetryコレクターは、オプションで、インストルメントされたアプリケーションとテレメトリバックエンドの間にテレメトリパイプラインコンポーネントとして展開できます。 OpenTelemetryコレクターを使用すると、テレメトリ信号を複数の形式で取り込み、OpenTelemetryネイティブに変換できます。 pdata フォーマットし、最終的にバックエンドのネイティブフォーマットにエクスポートされます。

LogicMonitorポータルのウィザードを使用して、Linux、Docker、またはKubernetesにOpenTelemetryCollectorをインストールできます。

次の図は、OpenTelemetry Collectorが、計測されたアプリケーションからLogicMonitorにトレースデータを受信、処理、およびエクスポートする方法を示しています。

OpenTelemetry Collectorは、OpenTelemetryCollectorの構成ファイルで変更できる次の主要コンポーネントで構成されています。

  • 受信機-受信者はデータをコレクターに取り込みます。 レシーバーは、プッシュベースとプルベースのどちらでもかまいません。 通常、レシーバーは指定された形式のデータを受け取り、それを内部形式に変換して、該当するパイプラインで定義されたプロセッサーとエクスポーターに渡します。 サポートされているトレースとメトリックの形式は、レシーバー固有です。
  • プロセッサ-プロセッサは、データをエクスポータに送信する前にデータを処理します。 プロセッサを使用して、メトリックを変換したり、スパンの名前を変更したりできます。 また、データを送信する前にデータをバッチ処理するようにプロセッサを構成し、エクスポートが失敗した場合に再試行し、メタデータを追加し、テールベースのサンプルを追加することもできます。 
  • 輸出国-エクスポーターは、データを複数のオープンソースバックエンドと商用バックエンドにエクスポートします。 たとえば、ロギングエクスポータを使用してデータをコンソール出力にエクスポートし、ファイルエクスポータを使用してデータをファイルにダンプすることができます。

レシーバー、プロセッサー、およびエクスポーターの組み合わせにより、トレース、メトリック、およびログのパイプラインを設定できます。

OpenTelemetry Collectorの構成には、パイプラインの一部ではない次のコンポーネントも含まれています。

  • 拡張-これは、OpenTelemetryCollectorの追加のオプションコンポーネントです。 拡張機能は、コレクターの主要な機能に加えて機能を提供します。 拡張機能は、テレメトリデータに直接アクセスする必要はなく、主にOpenTelemetryCollectorの管理と監視に使用されます。 
  • サービス-これは、レシーバー、プロセッサー、エクスポーター、および拡張機能内で構成されているコンポーネントを有効にするために使用されます。 サービスセクションは、拡張機能とパイプラインで構成されています。 拡張機能は、有効にするすべての拡張機能のリストで構成されています。 パイプラインは、トレース、メトリック、およびログタイプであり、一連のレシーバー、プロセッサー、およびエクスポーターで構成されます。 各レシーバー/プロセッサー/エクスポーターは、パイプラインに含めるために、サービスセクションの外側の構成で定義する必要があります。

OpenTelemetry Collectorをインストールした後、LogicMonitorを使用してCollectorを管理できます。 これには、ステータスの表示、設定の管理、およびLogicMonitorからの削除が含まれます。 詳細については、を参照してください。 OpenTelemetryコレクターの管理.

次に、OpenTelemetryCollectorの構成例を示します。

receivers:

  hostmetrics:

    collection_interval: 5m

    scrapers:

      cpu:

      disk:

      filesystem:

      memory:

      network:

  prometheus:

    config:

      scrape_configs:

        - job_name: “Test-Job”

          scrape_interval: 5m

          static_configs:

          - targets: ["0.0.0.0:8888"]

  otlp:

    protocols:

      http:

      grpc:

processors:

  batch:

  memory_limiter:

    check_interval: 60s

    limit_mib: 200

  tail_sampling:

    decision_wait: 10s

    num_traces: 10000

    policies:

      [

         {

            name: sample_error_http,

            type: numeric_attribute,

            numeric_attribute: {key: http.status_code, min_value: 300, max_value: 500}

         },

         {

            name: sample_error_grpc,

            type: numeric_attribute,

            numeric_attribute: {key: rpc.grpc.status_code, min_value: 1, max_value: 16}

         }

      ]

  probabilistic_sampler:

    sampling_percentage: 20

exporters:

  lmexporter:

    url: https://${LOGICMONITOR_ACCOUNT}.logicmonitor.com/rest

  logging:

    logLevel: debug

  file:

    path: ./fileout.json

extensions:

  lmextension:

    properties:

       system.categories: lmotel

  health_check:



service:

  extensions: [lmextension,health_check]

  pipelines:

    traces:

      receivers : [ otlp ]

      processors: [batch]

      exporters : [lmexporter]

    metrics:

      receivers: [prometheus, hostmetrics]

      exporters: [lmexporter]