カスタムメトリクスを Splunk Observability Cloud に送信する

例えば、まだサポートされていないサービスをインストルメンテーションするために、カスタムメトリクスを Splunk Observability Cloud に送信することができます。

たとえば、カスタムのインフラやアプリケーションメトリクスを Splunk Observability Cloud に送信して、まだサポートされていないサービスをインストルメンテーションすることができます。カスタム指標を送信するには、次の手順に従います。

カスタム・インフラストラクチャまたはサービス・メトリクスを送信する

Splunk Observability Cloud は、OpenTelemetry contrib の既存の OpenTelemetry コンポーネントや、OpenTelemetry の意味上の規約に準拠したカスタムコンポーネントを通じて、カスタムのインフラやサービスメトリクスを取り込むことができます。サポートされるメトリクスタイプのリストについては、「メトリクスタイプ」 を参照してください。

カスタムアプリケーション・メトリクスを Splunk Observability Cloud に送信するには、以下の手順に従います。

カスタムメトリクスのレシーバーを追加する

Splunk Distribution of the OpenTelemetry Collector を介してカスタム指標を送信するには、Collector 設定でデータの受け入れ準備ができているレシーバーを定義します。使用可能なレシーバーのリストについては、「Collector コンポーネント」を参照してください。

次の例は、10 秒ごとにポート 8889 のライブ・エンドポイントをスクレイピングするカスタム Prometheus レシーバーを示しています:

prometheus/custom:
  config:
    scrape_configs:
      - job_name: 'otel-collector-custom'
        scrape_interval: 10s
        static_configs:
          - targets: [ '0.0.0.0:8889' ]

新しいレシーバーがコンフィギュレーションの metrics パイプラインであることを確認します:

metrics:
  receivers: [ prometheus/custom, otlp, ... ]
  processors: [ memory_limiter, batch, resourcedetection ]
  exporters: [ signalfx ]

詳しくは Prometheusレシーバー を参照してください。

必要な依存関係を追加する

アプリケーションのコードから、または定期的にサービスを照会するスクリプトから、カスタム・インフラストラクチャまたはサービス・メトリクスを送信するには、OpenTelemetry パッケージを含む必要な依存関係を追加します。

次の例は、cron によって実行されるたびにメトリクスを送信する Python スクリプトの依存関係を示しています。

from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import (
   OTLPMetricExporter,
)
from opentelemetry.metrics import (
   CallbackOptions,
   Observation,
   get_meter_provider,
   set_meter_provider,
)
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader

この例のrequirements.txtファイルには以下の内容が含まれています:

opentelemetry-api==1.12.0
opentelemetry-sdk==1.12.0
opentelemetry-proto==1.12.0
opentelemetry-exporter-otlp-proto-grpc==1.12.0

カスタムメトリクスを Collector に送信する

カウンタ、ゲージ、その他のメトリクスデータタイプを作成し、OTLP メトリクスエクスポータを使用して送信するようにコードを設定します。この Python の例では、OpenTelemetry 用のエクスポータ、リーダー、プロバイダーを定義する方法を示します。

exporter = OTLPMetricExporter(endpoint='<collector_ip_address>:4317', headers=None, insecure=True)
reader = PeriodicExportingMetricReader(exporter)
provider = MeterProvider(metric_readers=[reader])
set_meter_provider(provider)

完全な例については、GitHub の「example.py」ファイル:https://github.com/open-telemetry/opentelemetry-python/blob/main/docs/examples/metrics/instruments/example.py を参照してください。

Collector をバイパスしてメトリクスを送信する場合は、Ingest REST API エンドポイントを使用します。「Send Metrics and Events」を参照してください。

カスタムアプリケーション・メトリクスを送信する

Splunk Observability Cloud は、OpenTelemetry の意味上の規約とアップストリームの OpenTelemetry API および SDK に従って作成されたカスタムのアプリケーションメトリクスを取り込むことができます。サポートされるメトリクスタイプのリストについては、「メトリクスタイプ」 を参照してください。

カスタムアプリケーション・メトリクスを Splunk Observability Cloud に送信するには、以下の手順に従ってください:

  1. アプリケーション言語用の APM インストルメンテーションをインストールします。「バックエンドアプリケーションをインストルメンテーションして Splunk APM にスパンを送信する」を参照してください。

  2. インストルメンテーションのメトリクス・エクスポーターをアクティブにします:

    • Java

    • Node.js

    • .NETのメトリクス収集はデフォルトでオンになっています。
    • 囲碁のメトリクス収集はデフォルトでオンになっています。

    • Pythonのメトリクス収集はデフォルトでオンになっています。

    AlwaysOn Profiling をアクティブ化している場合、プロファイリングをサポートするすべての言語でメトリクス収集がデフォルトでオンになります。

  3. 作成したいメトリクスが、ビルトインメトリクスを使用してすでに収集されていないことを確認してください。

  4. 各言語の説明に従って、カスタムメトリクスを作成します: