Python アプリケーション用に Azure Monitor をセットアップします
注意事項
OpenCensus Python SDK は廃止されました。 OpenTelemetry ベースの Python オファリングを推奨し、移行ガイダンスを提供します。
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 に送信します。 これらは trace
、metrics
、logs
です. これらのテレメトリの種類の詳細については、データ プラットフォームの概要に関するページを参照してください。 次の手順に従い、3 つのエクスポーターを使用してこれらのテレメトリの種類を送信します。
テレメトリの種類のマッピング
Azure Monitor に表示されるテレメトリの種類にマップされる、OpenCensus のエクスポーターを以下に示します。
可観測性の重要な要素 | Azure Monitor のテレメトリの種類 | 説明 |
---|---|---|
ログ | Traces, exceptions, customEvents | ログ テレメトリ、例外テレメトリ、イベント テレメトリ |
メトリック | customMetrics, performanceCounters | カスタム メトリック パフォーマンス カウンター |
トレース | Requests dependencies | 受信要求、送信要求 |
ログ
まず、いくつかのローカル ログ データを生成しましょう。
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()
範囲内の各数値に対してログ エントリが出力されます。
Log Entry - 0 Log Entry - 1 Log Entry - 2 Log Entry - 3 Log Entry - 4
このログ データを 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}")
エクスポーターによって、ログ データが Azure Monitor に送信されます。 データは
traces
で確認できます。このコンテキストでは、
traces
はtracing
と同じではありません。 ここでは、traces
は、AzureLogHandler
を利用するときに Azure Monitor に表示されるテレメトリの種類を表します。 しかし、tracing
は OpenCensus の概念を表し、分散トレースに関連します。Note
ルート ロガーは
warning
レベルで構成されます。 つまり、重要度が低いログを送信しても無視され、Azure Monitor に送信されません。 詳細については、ログに関するドキュメントを参照してください。また、
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 エクスポーターでは、測定ポイントのヒストグラム分布がサポートされていません。
カウント集計の例
まず、いくつかのローカル メトリック データを生成しましょう。 ユーザーが 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()
メトリックは、何度も追跡するために作成されます。 各エントリに対して、値がインクリメントされ、メトリック情報がコンソールに表示されます。 この情報には、メトリックが更新されたときの現在の値と現在のタイムスタンプが含まれます。
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)
値の入力はデモとしても有用ですが、メトリック データを 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()
エクスポーターによって、一定の間隔でメトリック データが Azure Monitor に送信されます。 Application Insights バックエンドでは 60 秒の時間間隔でメトリック ポイントの集計が想定されるため、この値を 60 秒に設定する必要があります。 1 つのメトリックを追跡しているので、このメトリック データは、それに含まれる値およびタイムスタンプに関係なく、間隔ごとに送信されます。 データは累積的であり、増加のみ可能です。再起動時に 0 にリセットできます。
customMetrics
の下にデータがありますが、customMetrics
プロパティvalueCount
、valueSum
、valueMin
、valueMax
、valueStdDev
は効果的に使用されていません。
メトリックでのカスタム ディメンションを設定する
OpenCensus Python SDK を使用すると、tags
を使ってメトリック テレメトリにカスタム ディメンションを追加できます。これは、キーと値のペアのディクショナリのようなものです。
使用するタグをタグ マップに挿入します。 タグ マップは、使用可能なすべてのタグの一種の "プール" として機能します。
... tmap = tag_map_module.TagMap() tmap.insert("url", "http://example.com") ...
特定の
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()) ...
測定マップで記録する場合、必ずタグ マップを使用してください。
View
で指定されるタグ キーは、記録に使用されるタグ マップ内に存在する必要があります。... mmap = stats_recorder.new_measurement_map() mmap.measure_int_put(prompt_measure, 1) mmap.record(tmap) # <-- pass the tag map in here ...
customMetrics
テーブルでは、prompt_view
を使用して出力されるすべてのメトリック レコードにカスタム ディメンション{"url":"http://example.com"}
が含まれます。同じキーを使用して異なる値を持つタグを生成するには、それらに対して新しいタグ マップを作成します。
... 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 に送信されます。
まずいくつかのトレース データをローカルで生成しましょう。 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()
各エントリに対して、値がシェルに出力されます。 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)]
出力を表示すると、デモ目的では有用ですが、
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()
これで、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)] (ログ (分析)) タブを使用して表示できます。
[アクティブ] の一覧で次のようにします。
- 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 に関する詳細情報
- GitHub の OpenCensus Python
- カスタマイズ
- GitHub の Azure Monitor エクスポーター
- OpenCensus 統合
- Azure Monitor サンプル アプリケーション
トラブルシューティング
アプリケーション ホストとインジェスト サービスの間の接続をテストする
Application Insights SDK とエージェントからテレメトリが送信され、インジェスト エンドポイントへの REST 呼び出しとして取り込まれます。 Web サーバーまたはアプリケーション ホスト マシンからインジェスト サービス エンドポイントへの接続は、PowerShell の生の REST クライアントを使用するか、curl コマンドを使用してテストできます。 「Azure Monitor Application Insights でアプリケーション テレメトリが見つからない場合のトラブルシューティング」をご覧ください。
リリース ノート
最新のリリース ノートについては、Python Azure Monitor エクスポーターに関するページを参照してください
Application Insights の主な機能強化は、サービスの更新に関するページでも要約しています。
次のステップ
- 使用エクスペリエンスを有効にするには、Web またはブラウザーのユーザー監視を有効にします
- 受信要求を追跡します。
- 送信要求を追跡します。
- アプリケーション マップをチェックアウトします。
- エンドツーエンドのパフォーマンス監視を行う方法について確認します。
警告
- 可用性概要: サイトが Web で表示できることを確認するために、テストを作成します。
- スマート診断: これらのテストは自動的に実行されます。セットアップするために何かをする必要はありません。 アプリの要求が失敗する割合が異常な場合に通知します。
- メトリック アラート: メトリックがしきい値を超えた場合に警告するようにアラートを設定 します。 メトリック アラートはカスタム メトリックで設定し、コード化してアプリに組み込むことができます。