Docs » Splunk Observability Cloud でサポートされているインテグレーション » バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する » Splunk Observability Cloud 用 Python アプリケーションのインストルメンテーション » Splunk Observability Cloud 用の Python アプリケーションを手動でインストルメンテーションする

Splunk Observability Cloud 用の Python アプリケーションを手動でインストルメンテーションする 🔗

OpenTelemetry Python の Splunk ディストリビューションのエージェントを使用して、アプリケーションを自動的にインストルメンテーションすることで、ほとんどのニーズに対応できます。アプリケーションを手動でインストルメンテーションする必要があるのは、たとえばスパンにカスタム属性を追加する必要がある場合や、スパンを手動で生成する必要がある場合のみです。

カスタムトレースの作成 🔗

カスタムのスパンとトレースを作成するには、以下の手順に従ってください:

  1. splunk-py-trace コマンドが使えない場合は、start_tracing をインポートして設定します:

    from splunk_otel.tracing import start_tracing
    
    start_tracing()
    
    # Also accepts optional settings. For example:
    #
    # start_tracing(
    #   service_name='<my-python-service>',
    #   span_exporter_factories=[OTLPSpanExporter]
    #   access_token='<access_token>',
    #   max_attr_length=12000,
    #   trace_response_header_enabled=True,
    #   resource_attributes={
    #    'service.version': '<your_version>',
    #    'deployment.environment': '<your_environment>',
    #  })
    

    別の方法として、OpenTelemetry SDKをインポートすることもできます:

    from opentelemetry import trace
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import (
       BatchSpanProcessor,
       ConsoleSpanExporter,
    )
    
  2. スパンのトレーサーを作成します:

    provider = TracerProvider()
    processor = BatchSpanProcessor(ConsoleSpanExporter())
    provider.add_span_processor(processor)
    
    trace.set_tracer_provider(provider)
    tracer = trace.get_tracer("tracer.name")
    
  3. 現在のスパンとしてスパンを作成します:

    def reticulate_splines():
       with tracer.start_as_current_span("span-name") as span:
          print("Reticulating splines...")
          # When the 'with' block goes out of scope, the 'span' is closed
    

その他の例については、OpenTelemetry 公式ドキュメント を参照してください。

カスタムメトリクスの作成 🔗

Splunk Distribution of OpenTelemetry Python は、以下のインストルメンテーションをサポートしています:

  • カウンター(同期)

  • カウンター(非同期)

  • ゲージ(非同期)

  • UpDownCounter(同期)

  • UpDownCounter (非同期)

カスタムメトリクスを作成するには、メトリクス・インストルメンテーションのタイプに応じた手順に従います。

同期インストルメンテーショントは、カウンターと同様、ビジネスロジックとインラインで呼び出されます。同期インスツルメントの例としては、サーバーに送信されたバイト数のカウンターがあります。これらはコンテキスト伝搬をサポートします。

  1. OpenTelemetry API をインポートします:

    from opentelemetry import metrics
    from opentelemetry.sdk.metrics import MeterProvider
    from opentelemetry.sdk.metrics.export import (
       ConsoleMetricExporter,
       PeriodicExportingMetricReader,
    )
    
  2. メータープロバイダーを作成します:

    meter := otel.Meter("ExampleService")
    
  3. 測定を行うインストルメンテーションを作成します:

    metric_reader = PeriodicExportingMetricReader(ConsoleMetricExporter())
    provider = MeterProvider(metric_readers=[metric_reader])
    
    metrics.set_meter_provider(provider)
    meter = metrics.get_meter("my.meter.name")
    
  4. 測定を行います:

    peanut_counter = meter.create_counter(
       "peanut.counter", unit="1", description="Counts the number of consumed peanuts"
    )
    
    def do_stuff(work_item):
       peanut_counter.add(1, {"work.type": work_item.work_type})
       print("Collecting peanuts...")
    

その他の例については、OpenTelemetry 公式ドキュメント を参照してください。

手動インストルメンテーションを必要とするフレームワーク 🔗

Python フレームワークの中には、手動インストルメンテーションしかサポートしていないものがあります。具体的な手順については、こちらを参照してください:

注釈

手動 OTel インストルメンテーションは Splunk 自動 Python インストルメンテーションと完全に互換性があり、Splunk によって完全にサポートされています。

This page was last updated on 2024年02月26日.