次の方法で共有


Python アプリケーション用に Azure Monitor をセットアップします

Azure Monitor では、Python アプリケーションの分散トレース、メトリック収集、およびログ記録がサポートされています。

Microsoft でサポートされている、Python アプリケーションのデータの追跡とエクスポートを行うソリューションは、Azure Monitor エクスポーターを介した OpenCensus Python SDK です。

Microsoft では、Python 用の他のテレメトリ SDK はサポートされていないため、テレメトリ ソリューションとして使用することはお勧めしません。

OpenCensus は OpenTelemetry に統合されつつあります。 Microsoft では、OpenTelemetry が成熟するまでは、OpenCensus をお勧めしています。

前提条件

Azure サブスクリプションが必要です。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

Note

インストルメンテーション キーのインジェストのサポートは、2025 年 3 月 31 日に終了します。 インストルメンテーション キーのインジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 接続文字列に移行することで、新機能をご利用いただけます。

OpenCensus Python SDK の概要

OpenCensus は、分散トレース、メトリック、ログ テレメトリを収集できる一連のオープンソース ライブラリです。 Azure Monitor エクスポーターを使用すると、この収集されたテレメトリを Application Insights に送信できます。 この記事では、Python 用の OpenCensus および Azure Monitor エクスポーターを設定し、監視データを Azure Monitor に送信するプロセスについて説明します。

OpenCensus Python SDK と Azure Monitor エクスポーターを使用したインストルメント化

OpenCensus Azure Monitor エクスポーターをインストールします。

python -m pip install opencensus-ext-azure

SDK では 3 つの Azure Monitor エクスポーターを使用して、さまざまな種類のテレメトリを Azure Monitor に送信します。 これらは tracemetricslogs です. これらのテレメトリの種類の詳細については、データ プラットフォームの概要に関するページを参照してください。 次の手順に従い、3 つのエクスポーターを使用してこれらのテレメトリの種類を送信します。

テレメトリの種類のマッピング

Azure Monitor に表示されるテレメトリの種類にマップされる、OpenCensus のエクスポーターを以下に示します。

可観測性の重要な要素 Azure Monitor のテレメトリの種類 説明
ログ Traces, exceptions, customEvents ログ テレメトリ、例外テレメトリ、イベント テレメトリ
メトリック customMetrics, performanceCounters カスタム メトリック パフォーマンス カウンター
トレース Requests dependencies 受信要求、送信要求

ログ

  1. まず、いくつかのローカル ログ データを生成しましょう。

    
    import logging
    
    logger = logging.getLogger(__name__)
    
    def main():
        """Generate random log data."""
        for num in range(5):
            logger.warning(f"Log Entry - {num}")
    
    if __name__ == "__main__":
        main()
    
  2. 範囲内の各数値に対してログ エントリが出力されます。

    Log Entry - 0
    Log Entry - 1
    Log Entry - 2
    Log Entry - 3
    Log Entry - 4
    
  3. このログ データを Azure Monitor に表示する必要があります。 これは APPLICATIONINSIGHTS_CONNECTION_STRING 環境変数に指定できます。 connection_string を AzureLogHandler に直接渡すこともできますが、接続文字列をバージョン コントロールに追加しないでください。

    APPLICATIONINSIGHTS_CONNECTION_STRING=<appinsights-connection-string>
    

    接続文字列を使用して、テレメトリを Application Insights に送信するために使用されるエクスポーターをインスタンス化することをお勧めします。 前の手順のコードを、次のコード サンプルに基づいて変更します。

    import logging
    from opencensus.ext.azure.log_exporter import AzureLogHandler
    
    logger = logging.getLogger(__name__)
    logger.addHandler(AzureLogHandler())
    
    # Alternatively manually pass in the connection_string
    # logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))
    
    """Generate random log data."""
    for num in range(5):
        logger.warning(f"Log Entry - {num}")
    
  4. エクスポーターによって、ログ データが Azure Monitor に送信されます。 データは traces で確認できます。

    このコンテキストでは、tracestracing と同じではありません。 ここでは、traces は、AzureLogHandler を利用するときに Azure Monitor に表示されるテレメトリの種類を表します。 しかし、tracing は OpenCensus の概念を表し、分散トレースに関連します。

    Note

    ルート ロガーは warning レベルで構成されます。 つまり、重要度が低いログを送信しても無視され、Azure Monitor に送信されません。 詳細については、ログに関するドキュメントを参照してください。

  5. また、extra キーワード引数内のご自分のログ メッセージに、custom_dimensions フィールドを使用してカスタム プロパティを追加することもできます。 これらのプロパティは、Azure Monitor に customDimensions のキーと値のペアとして表示されます。

    Note

    この機能が動作するためには、custom_dimensions フィールドにディクショナリを渡す必要があります。 他の型の引数を渡すと、それらはロガーによって無視されます。

    import logging
    
    from opencensus.ext.azure.log_exporter import AzureLogHandler
    
    logger = logging.getLogger(__name__)
    logger.addHandler(AzureLogHandler())
    # Alternatively manually pass in the connection_string
    # logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))
    
    properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}
    
    # Use properties in logging statements
    logger.warning('action', extra=properties)
    

Note

Application Insights インストルメンテーションの使用時に、診断データが収集され、Microsoft に送信されます。 このデータは、Application Insights の実行と改善に役立ちます。 重要でないデータ収集を無効にするオプションがあります。 詳細については、「Application Insights の Statsbeat」を参照してください。

Django アプリケーション用にログ記録を構成する

Django アプリケーション用に、上記のようなアプリケーション コードでログ記録を明示的に構成することも、Django のログ記録構成で指定することもできます。 このコードは、Django サイトの設定の構成に使用する任意のファイルに入れることができます。一般的には、settings.py です。

Django 設定を構成する方法については、「Django 設定」を参照してください。 ログ記録を構成する方法については、Django のログ記録に関するページを参照してください。

LOGGING = {
    "handlers": {
        "azure": {
            "level": "DEBUG",
            "class": "opencensus.ext.azure.log_exporter.AzureLogHandler",
            "connection_string": "<appinsights-connection-string>",
        },
        "console": {
            "level": "DEBUG",
            "class": "logging.StreamHandler",
            "stream": sys.stdout,
        },
      },
    "loggers": {
        "logger_name": {"handlers": ["azure", "console"]},
    },
}

必ず、構成で指定したものと同じ名前のロガーを使用してください。

# views.py

import logging
from django.shortcuts import request

logger = logging.getLogger("logger_name")
logger.warning("this will be tracked")

例外を送信する

OpenCensus Python では、exception テレメトリの追跡と送信が自動的には行われません。 これは、Python ログ ライブラリ経由の例外を使用し、AzureLogHandler を通じて送信されます。 通常のログと同様、カスタム プロパティを追加することができます。

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler())
# Alternatively, manually pass in the connection_string
# logger.addHandler(AzureLogHandler(connection_string=<appinsights-connection-string>))

properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}

# Use properties in exception logs
try:
    result = 1 / 0  # generate a ZeroDivisionError
except Exception:
    logger.exception('Captured an exception.', extra=properties)

例外は明示的にログに記録する必要があるため、ハンドルされない例外をどのようにログに記録するかはユーザーしだいです。 OpenCensus では、このログ記録の実行方法に制限はありませんが、例外のテレメトリを明示的にログに記録する必要があります。

送信イベント

代わりに AzureEventHandler を使用することを除き、trace テレメトリを送信するのとまったく同じ方法で customEvent テレメトリを送信できます。

import logging
from opencensus.ext.azure.log_exporter import AzureEventHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureEventHandler())
# Alternatively manually pass in the connection_string
# logger.addHandler(AzureEventHandler(connection_string=<appinsights-connection-string>))

logger.setLevel(logging.INFO)
logger.info('Hello, World!')

サンプリング

OpenCensus のサンプリングの詳細については、OpenCensus でのサンプリングに関するページを参照してください。

ログの関連付け

トレース コンテキスト データを使用してログを強化する方法については、OpenCensus Python ログの統合に関するページを参照してください。

テレメトリの変更

追跡されたテレメトリを Azure Monitor に送信する前に変更する方法については、OpenCensus Python のテレメトリ プロセッサに関するセクションを参照してください。

メトリック

OpenCensus.stats では 4 つの集計メソッドがサポートされますが、Azure Monitor に対するサポートは部分的に提供されます。

  • Count: 測定ポイントのカウント数。 値は累積的であり、増加のみ可能です。再起動時に 0 にリセットできます。
  • Sum: 測定ポイントの合計。 値は累積的であり、増加のみ可能です。再起動時に 0 にリセットできます。
  • LastValue: 最後に記録された値を保持し、他のすべてを削除します。
  • Distribution: Azure エクスポーターでは、測定ポイントのヒストグラム分布がサポートされていません。

カウント集計の例

  1. まず、いくつかのローカル メトリック データを生成しましょう。 ユーザーが Enter キーを選択した回数を追跡するメトリックを作成します。

    
    from datetime import datetime
    from opencensus.stats import aggregation as aggregation_module
    from opencensus.stats import measure as measure_module
    from opencensus.stats import stats as stats_module
    from opencensus.stats import view as view_module
    from opencensus.tags import tag_map as tag_map_module
    
    stats = stats_module.stats
    view_manager = stats.view_manager
    stats_recorder = stats.stats_recorder
    
    prompt_measure = measure_module.MeasureInt("prompts",
                                               "number of prompts",
                                               "prompts")
    prompt_view = view_module.View("prompt view",
                                   "number of prompts",
                                   [],
                                   prompt_measure,
                                   aggregation_module.CountAggregation())
    view_manager.register_view(prompt_view)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()
    
    def main():
        for _ in range(4):
            mmap.measure_int_put(prompt_measure, 1)
            mmap.record(tmap)
            metrics = list(mmap.measure_to_view_map.get_metrics(datetime.utcnow()))
            print(metrics[0].time_series[0].points[0])
    
    if __name__ == "__main__":
        main()
    
  2. メトリックは、何度も追跡するために作成されます。 各エントリに対して、値がインクリメントされ、メトリック情報がコンソールに表示されます。 この情報には、メトリックが更新されたときの現在の値と現在のタイムスタンプが含まれます。

    Point(value=ValueLong(5), timestamp=2019-10-09 20:58:04.930426)
    Point(value=ValueLong(6), timestamp=2019-10-09 20:58:05.170167)
    Point(value=ValueLong(7), timestamp=2019-10-09 20:58:05.438614)
    Point(value=ValueLong(7), timestamp=2019-10-09 20:58:05.834216)
    
  3. 値の入力はデモとしても有用ですが、メトリック データを Azure Monitor に送信するようにします。 接続文字列をエクスポーターに直接渡します。 または、APPLICATIONINSIGHTS_CONNECTION_STRING 環境変数で指定することができます。 接続文字列を使用して、テレメトリを Application Insights に送信するために使用されるエクスポーターをインスタンス化することをお勧めします。 前の手順のコードを、次のコード サンプルに基づいて変更します。

    from datetime import datetime
    from opencensus.ext.azure import metrics_exporter
    from opencensus.stats import aggregation as aggregation_module
    from opencensus.stats import measure as measure_module
    from opencensus.stats import stats as stats_module
    from opencensus.stats import view as view_module
    from opencensus.tags import tag_map as tag_map_module
    
    stats = stats_module.stats
    view_manager = stats.view_manager
    stats_recorder = stats.stats_recorder
    
    prompt_measure = measure_module.MeasureInt("prompts",
                                               "number of prompts",
                                               "prompts")
    prompt_view = view_module.View("prompt view",
                                   "number of prompts",
                                   [],
                                   prompt_measure,
                                   aggregation_module.CountAggregation())
    view_manager.register_view(prompt_view)
    mmap = stats_recorder.new_measurement_map()
    tmap = tag_map_module.TagMap()
    
    exporter = metrics_exporter.new_metrics_exporter()
    # Alternatively manually pass in the connection_string
    # exporter = metrics_exporter.new_metrics_exporter(connection_string='<appinsights-connection-string>')
    
    view_manager.register_exporter(exporter)
    
    def main():
        for _ in range(10):
            input("Press enter.")
            mmap.measure_int_put(prompt_measure, 1)
            mmap.record(tmap)
            metrics = list(mmap.measure_to_view_map.get_metrics(datetime.utcnow()))
            print(metrics[0].time_series[0].points[0])
    
    if __name__ == "__main__":
        main()
    
  4. エクスポーターによって、一定の間隔でメトリック データが Azure Monitor に送信されます。 Application Insights バックエンドでは 60 秒の時間間隔でメトリック ポイントの集計が想定されるため、この値を 60 秒に設定する必要があります。 1 つのメトリックを追跡しているので、このメトリック データは、それに含まれる値およびタイムスタンプに関係なく、間隔ごとに送信されます。 データは累積的であり、増加のみ可能です。再起動時に 0 にリセットできます。

    customMetrics の下にデータがありますが、customMetrics プロパティ valueCountvalueSumvalueMinvalueMaxvalueStdDev は効果的に使用されていません。

メトリックでのカスタム ディメンションを設定する

OpenCensus Python SDK を使用すると、tags を使ってメトリック テレメトリにカスタム ディメンションを追加できます。これは、キーと値のペアのディクショナリのようなものです。

  1. 使用するタグをタグ マップに挿入します。 タグ マップは、使用可能なすべてのタグの一種の "プール" として機能します。

    ...
    tmap = tag_map_module.TagMap()
    tmap.insert("url", "http://example.com")
    ...
    
  2. 特定の View について、タグ キーを使用して、そのビューでメトリックを記録するときに使用するタグを指定します。

    ...
    prompt_view = view_module.View("prompt view",
                                "number of prompts",
                                ["url"], # <-- A sequence of tag keys used to specify which tag key/value to use from the tag map
                                prompt_measure,
                                aggregation_module.CountAggregation())
    ...
    
  3. 測定マップで記録する場合、必ずタグ マップを使用してください。 View で指定されるタグ キーは、記録に使用されるタグ マップ内に存在する必要があります。

    ...
    mmap = stats_recorder.new_measurement_map()
    mmap.measure_int_put(prompt_measure, 1)
    mmap.record(tmap) # <-- pass the tag map in here
    ...
    
  4. customMetrics テーブルでは、prompt_view を使用して出力されるすべてのメトリック レコードにカスタム ディメンション {"url":"http://example.com"} が含まれます。

  5. 同じキーを使用して異なる値を持つタグを生成するには、それらに対して新しいタグ マップを作成します。

    ...
    tmap = tag_map_module.TagMap()
    tmap2 = tag_map_module.TagMap()
    tmap.insert("url", "http://example.com")
    tmap2.insert("url", "https://www.wikipedia.org/wiki/")
    ...
    

パフォーマンス カウンター

既定では、メトリック エクスポーターによって、Azure Monitor に一連のパフォーマンス カウンターが送信されます。 この機能を無効にするには、メトリックス エクスポーターのコンストラクターで enable_standard_metrics フラグを False に設定します。

...
exporter = metrics_exporter.new_metrics_exporter(
  enable_standard_metrics=False,
  )
...

現在、以下のパフォーマンス カウンターが送信されます。

  • Available Memory (bytes) (使用可能なメモリ (バイト))
  • CPU Processor Time (percentage) (CPU プロセッサ時間 (%))
  • Incoming Request Rate (per second) (受信要求率 (1 秒あたり))
  • Incoming Request Average Execution Time (milliseconds) (受信要求の平均実行時間 (ミリ秒))
  • Process CPU Usage (percentage) (プロセスの CPU 使用率 (%))
  • Process Private Bytes (bytes) (プロセスのプライベート バイト (バイト))

これらのメトリックは performanceCounters で確認できます。 詳細については、パフォーマンス カウンターに関するページを参照してください。

テレメトリの変更

追跡されたテレメトリを Azure Monitor に送信する前に変更する方法については、OpenCensus Python のテレメトリ プロセッサに関するセクションを参照してください。

トレース

Note

OpenCensus では、tracing分散トレースを表します。 AzureExporter パラメーターによって requests および dependency テレメトリが Azure Monitor に送信されます。

  1. まずいくつかのトレース データをローカルで生成しましょう。 Python IDLE か任意のエディターで、次のコードを入力します。

    from opencensus.trace.samplers import ProbabilitySampler
    from opencensus.trace.tracer import Tracer
    
    tracer = Tracer(sampler=ProbabilitySampler(1.0))
    
    def main():
        with tracer.span(name="test") as span:
            for value in range(5):
                print(value)
    
    
    if __name__ == "__main__":
        main()
    
  2. 各エントリに対して、値がシェルに出力されます。 OpenCensus Python モジュールによって、SpanData の対応する部分が生成されます。 OpenCensus プロジェクトでは、複数範囲のツリーとしてトレースが定義されます。

    0
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='15ac5123ac1f6847', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:22.805429Z', end_time='2019-06-27T18:21:44.933405Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    1
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='2e512f846ba342de', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:44.933405Z', end_time='2019-06-27T18:21:46.156787Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    2
    [SpanData(name='test', context=SpanContext(trace_id=8aa41bc469f1a705aed1bdb20c342603, span_id=None, trace_options=TraceOptions(enabled=True), tracestate=None), span_id='f3f9f9ee6db4740a', parent_span_id=None, attributes=BoundedDict({}, maxlen=32), start_time='2019-06-27T18:21:46.157732Z', end_time='2019-06-27T18:21:47.269583Z', child_span_count=0, stack_trace=None, annotations=BoundedList([], maxlen=32), message_events=BoundedList([], maxlen=128), links=BoundedList([], maxlen=32), status=None, same_process_as_parent_span=None, span_kind=0)]
    
  3. 出力を表示すると、デモ目的では有用ですが、SpanData を Azure Monitor に出力するようにします。 接続文字列をエクスポーターに直接渡します。 または、APPLICATIONINSIGHTS_CONNECTION_STRING 環境変数で指定することができます。 接続文字列を使用して、テレメトリを Application Insights に送信するために使用されるエクスポーターをインスタンス化することをお勧めします。 前の手順のコードを、次のコード サンプルに基づいて変更します。

    from opencensus.ext.azure.trace_exporter import AzureExporter
    from opencensus.trace.samplers import ProbabilitySampler
    from opencensus.trace.tracer import Tracer
    
    tracer = Tracer(
        exporter=AzureExporter(),
        sampler=ProbabilitySampler(1.0),
    )
    # Alternatively manually pass in the connection_string
    # exporter = AzureExporter(
    #   connection_string='<appinsights-connection-string>',
    #   ...
    # )
    
    def main():
        with tracer.span(name="test") as span:
            for value in range(5):
                print(value)
    
    if __name__ == "__main__":
        main()
    
  4. これで、Python スクリプトを実行すると、値のみがシェルに出力されます。 作成された SpanData は Azure Monitor に送信されます。 送信されたスパン データは dependencies で確認できます。

    送信要求の詳細については、OpenCensus Python の「依存関係」を参照してください。 受信要求の詳細については、OpenCensus Python の「要求」を参照してください。

サンプリング

OpenCensus のサンプリングの詳細については、OpenCensus でのサンプリングに関するページを参照してください。

トレースの相関付け

トレース データにおけるテレメトリの相関付けの詳細については、OpenCensus Python のテレメトリの相関付けに関するページを参照してください。

テレメトリの変更

追跡されたテレメトリを Azure Monitor に送信する前に変更する方法の詳細については、OpenCensus Python のテレメトリ プロセッサに関するセクションを参照してください。

Azure Monitor エクスポーターを構成する

次に示すように、OpenCensus をサポートする Azure Monitor エクスポーターには 3 つの異なる種類があります。 それぞれにより、Azure Monitor に異なる種類のテレメトリが送信されます。 各エクスポーターによって送信されるテレメトリの種類を確認する場合は、以下の表を参照してください。

各エクスポーターによって、コンストラクターを介して渡される構成に対する同じ引数が受け入れられます。 それぞれの情報については、以下を参照してください。

エクスポーター テレメトリ 説明
connection_string Azure Monitor リソースへの接続に使用される接続文字列。 instrumentation_key よりも優先されます。
credential Azure Active Directory 認証で使用される資格情報クラス。 以下の「認証」セクションを参照してください。
enable_standard_metrics AzureMetricsExporter に使用されます。 パフォーマンス カウンター メトリックを Azure Monitor に自動的に送信するように、エクスポーターに通知します。 既定値は True です。
export_interval エクスポートの頻度を秒単位で指定するために使用されます。 既定値は 15s です。 メトリックについては、これを 60 秒に設定する必要があります。そうしないと、メトリクス エクスプローラーでメトリックを集計する意味がありません。
grace_period エクスポーターのシャットダウンのタイムアウトを秒単位で指定するために使用されます。 既定値は 5s です。
instrumentation_key Azure Monitor リソースへの接続に使用されるインストルメンテーション キー。
logging_sampling_rate AzureLogHandler および AzureEventHandler で使用されます。 ログ/イベントをエクスポートするためのサンプリング レート [0,1.0] を指定します。 既定値は 1.0 です。
max_batch_size 一度にエクスポートされるテレメトリの最大サイズを指定します。
proxies Azure Monitor にデータを送信するために使用する一連のプロキシを指定します。 詳細については、「proxies」 (プロキシ) を参照してください。
storage_path ローカル ストレージ フォルダーが存在する場所へのパス (未送信のテレメトリ)。 opencensus-ext-azure v 1.0.3 以降の既定のパスは、OS の一時ディレクトリ + opencensus-python + your-ikey です。 v1.0.3 より前の既定のパスは、$USER + .opencensus + .azure + python-file-name です。
timeout インジェスト サービスにテレメトリを送信する際のネットワーク タイムアウトを秒単位で指定します。 既定値は 10s です。

Azure Functions との統合

Azure Functions 環境でカスタム テレメトリをキャプチャするには、OpenCensus Python Azure Functions 拡張機能を使用します。 詳細については、Azure Functions Python 開発者向けガイドを参照してください。

認証 (プレビュー)

Note

認証機能は、opencensus-ext-azure v1.1b0 以降で利用できます。

Azure Monitor エクスポーターはそれぞれ、Azure Active Directory による OAuth 認証を用いて安全にテレメトリのペイロードを送信する構成をサポートします。 詳細については、認証に関するドキュメントを参照してください。

クエリを使用してデータを表示する

アプリケーションから送信されたテレメトリ データは、 [Logs(Analytics)] (ログ (分析)) タブを使用して表示できます。

[Logs (Analytics)] (ログ (分析)) タブが選択された概要ウィンドウのスクリーンショット。

[アクティブ] の一覧で次のようにします。

  • Azure Monitor のトレース エクスポーターで送信されたテレメトリについては、requests の下に受信した要求が表示されます。 送信または処理中の要求は、dependencies の下に表示されます。
  • Azure Monitor メトリック エクスポーターを使用して送信されたテレメトリの場合、送信されたメトリックは customMetrics の下に表示されます。
  • Azure Monitor ログ エクスポーターを使用して送信されたテレメトリの場合、ログは traces の下に表示されます。 例外は exceptions の下に表示されます。

クエリとログの使用方法については、Azure Monitor のログに関する記事を参照してください。

Microsoft Entra ID ベースの認証を構成して有効にする

Note

Microsoft Entra 認証は、Python v2.7、v3.6、v3.7 でのみ使用できます。 Application Insights OpenCensus Python SDK での Microsoft Entra ID のサポートは、ベータ バージョン opencensus-ext-azure 1.1b0 以降に含まれています。

Note

OpenCensus Python SDK は非推奨ですが、Microsoft は 2024 年 9 月 30 日に廃止されるまでサポートします。 現在は OpenTelemetry ベースの Python オファリングを推奨しており、移行ガイダンスを提供しています。

適切な資格情報を作成して、Azure Monitor エクスポーターのコンストラクターに渡します。 リソースのインストルメンテーション キーとインジェスト エンドポイントを使用して接続文字列が設定されていることを確認してください。

OpenCensus Azure Monitor エクスポーターは、これらの認証の種類をサポートしています。 運用環境ではマネージド ID を使用することをお勧めします。

システム割り当てマネージド ID

from azure.identity import ManagedIdentityCredential

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

credential = ManagedIdentityCredential()
tracer = Tracer(
    exporter=AzureExporter(credential=credential, connection_string="InstrumentationKey=<your-instrumentation-key>;IngestionEndpoint=<your-ingestion-endpoint>"),
    sampler=ProbabilitySampler(1.0)
)
...

ユーザー割り当てマネージド ID

from azure.identity import ManagedIdentityCredential

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

credential = ManagedIdentityCredential(client_id="<client-id>")
tracer = Tracer(
    exporter=AzureExporter(credential=credential, connection_string="InstrumentationKey=<your-instrumentation-key>;IngestionEndpoint=<your-ingestion-endpoint>"),
    sampler=ProbabilitySampler(1.0)
)
...

OpenCensus for Python に関する詳細情報

トラブルシューティング

アプリケーション ホストとインジェスト サービスの間の接続をテストする

Application Insights SDK とエージェントからテレメトリが送信され、インジェスト エンドポイントへの REST 呼び出しとして取り込まれます。 Web サーバーまたはアプリケーション ホスト マシンからインジェスト サービス エンドポイントへの接続は、PowerShell の生の REST クライアントを使用するか、curl コマンドを使用してテストできます。 「Azure Monitor Application Insights でアプリケーション テレメトリが見つからない場合のトラブルシューティング」をご覧ください。

リリース ノート

最新のリリース ノートについては、Python Azure Monitor エクスポーターに関するページを参照してください

Application Insights の主な機能強化は、サービスの更新に関するページでも要約しています。

次のステップ

警告

  • 可用性概要: サイトが Web で表示できることを確認するために、テストを作成します。
  • スマート診断: これらのテストは自動的に実行されます。セットアップするために何かをする必要はありません。 アプリの要求が失敗する割合が異常な場合に通知します。
  • メトリック アラート: メトリックがしきい値を超えた場合に警告するようにアラートを設定 します。 メトリック アラートはカスタム メトリックで設定し、コード化してアプリに組み込むことができます。