カスタムメトリクスを 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 に送信するには、以下の手順に従ってください:
アプリケーションの言語用のAPMインストルメンテーションをインストールします。バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する を参照してください。
インストルメンテーションのメトリクス・エクスポーターをアクティブにします:
.NETのメトリクス収集はデフォルトでオンになっています。
囲碁のメトリクス収集はデフォルトでオンになっています。
Pythonのメトリクス収集はデフォルトでオンになっています。
AlwaysOn Profiling を有効にしている場合、プロファイリングをサポートするすべての言語でメトリクス収集がデフォルトでオンになります。
作成したいメトリクスが、ビルトインのメトリクスを使ってすでに収集されていないことを確認してください:
各言語の説明に従って、カスタムメトリクスを作成します: