概要
- pythonでAzure MonitorのLog Analyticsにクエリを実行してログを取得する
- 参考資料
https://learn.microsoft.com/ja-jp/python/api/overview/azure/monitor-query-readme?view=azure-python
環境
pipenv を使った python3.11 で確認
事前準備
ライブラリ
[packages]
azure-loganalytics = "*"
azure-monitor-query = "*"
azure-identity = "*"
pandas = "*"
- pip などでインストール
サンプルコード
コメント部分を修正して実行する
import pandas as pd
from datetime import datetime, timezone
from azure.monitor.query import LogsQueryClient, LogsQueryStatus
from azure.identity import DefaultAzureCredential
from azure.identity import AzureCliCredential
from azure.core.exceptions import HttpResponseError
# Azure CLI で az login した認証情報を使う
credential = AzureCliCredential() # DefaultAzureCredential()
client = LogsQueryClient(credential)
# 発行するクエリを指定
query = "AppServiceConsoleLogs | where _ResourceId contains 'xxxxxxx'"
# ワークスペースID を指定
LOG_WORKSPACE_ID = "xxxx-xx-xx-xxx-x"
# 取得期間を指定
start_time = datetime(2023, 4, 1, tzinfo=timezone.utc)
end_time = datetime(2023, 10, 1, tzinfo=timezone.utc)
try:
response = client.query_workspace(
workspace_id=LOG_WORKSPACE_ID, query=query, timespan=(start_time, end_time)
)
if response.status == LogsQueryStatus.PARTIAL:
error = response.partial_error
data = response.partial_data
print(error)
elif response.status == LogsQueryStatus.SUCCESS:
data = response.tables
for table in data:
df = pd.DataFrame(data=table.rows, columns=table.columns)
# 取得内容をとりあえず出力
print(df)
except HttpResponseError as err:
print("something fatal happened")
print(err)
未確認・今後の課題
- 大量のデータ担った場合、そもそも取得できるか?
- 処理速度はどれくらいか?