0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonからAzure Application Insightsにログを送信する(SDK使用)

Posted at

船井総研デジタルのよもぎたです。

Azure Application InsightsにPythonプログラムからログを送信する方法を調べたので、共有いたします。

Application Insightsについてはこちらのドキュメントを、使用するOpenCensus Python SDKについてはこちらのドキュメントを参考にしました。

大まかな流れ

  • Application Insightsを作成して接続文字列を確認します。
  • OpenCensus Python SDKを導入します。
  • ログを送信するプログラムを作成して実行します。
  • Application Insightsで送信されたログを確認します。

OpenCensusパッケージは廃止が発表されています。Azureではサポート終了の1年前にはアナウンスがあるそうです。後継となるOpenTelemetryパッケージは、2023年6月現在Azureではパブリックプレビュー段階です。いずれOpenTelemetryに移行していく必要があります。

具体的な流れ(作業手順)

Application Insightsの作成

ここは割愛させていただきます。PortalでもIaCでもAzureCLIでも、お好みの方法で作成してください。Functionsなどを作成したときに一緒に作っていることもあるかと思います。

接続文字列の確認

Azure Portalから確認するのが一番簡単かと思います。ログ出力先のApplication Insightsを開き、左側のメニューの「概要」を選択すると、右側に接続文字列が表示されます。

Appinsights-python-01.png

OpenCensus Python SDKの導入

次のコマンドでSDKをインストールできます。必要に応じてvenvなどで仮想環境を作って実行してください。Functionsに組み込む場合は、requirements.txtへの追記もお忘れなく。

pip install opencensus-ext-azure

この記事作成時のopencensus-ext-azureパッケージのVersionは1.1.9でした。

pip list | Select-String opencensus-ext-azure

opencensus-ext-azure     1.1.9

opencensus-ext-azureパッケージのPyPIのページはこちらです

PythonプログラムからApplication Insightsにログを送信する

概要

Pythonのloggingパッケージを使います。まず、loggerオブジェクトのインスタンスを取得します。次にそのインスタンスのaddHandler関数でAzureLogHandlerをハンドラーとして追加します。そうすることでwarning関数などでApplication Insightsにログを送信できるようになります。

実際のコード

たとえば、Application InsightsにWarningレベルで Hello Application Insights. と出力するPythonプログラムは次のようになります。

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

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string="Replace with your connection string"))

logger.warning("Hello Application Insights.")

送信されたログを確認する

Potalから確認するのがお手軽です。ログの検索には、Kusto照会言語(KQL)を使います。

PortalでApplication Insightsを開き、左側のメニューの「監視」セクションの「ログ」を選択します。右側でクエリを実行できるようになります。

上記のプログラムで送信したログはtracesテーブルに記録されているので、次のようなKQLで確認することができます。

traces
| order by timestamp desc
| take 10

クエリを入力したら、青い「実行」ボタンをクリックします。ログの量やクエリの複雑さによっては待たされるでしょうが、この位のテストであれば、すぐに結果が返ってくるはずです。結果は、クエリの下のエリアに表示されます。

Appinsights-python-02.png

まとめ

簡単ですが、PythonプログラムからApplication Insightsにログを送信する手順をご紹介いたしました。Pythonプログラムにログ出力を組み込んでいくはじめの一歩にはなるかと思います。

最後までお読みいただきありがとうございました。引き続きよろしくお願いいたします。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?