Logic AppsでApplication Insightsのデータを取得するAPIを作りたい

このエントリは2024/04/27現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容からの乖離が発生する可能性があります。

問い合わせ

ありがたいことに、最近まったくお初の人からのお問い合わせが増えているのだが、今日のお問い合わせもまたはじめての人であった。内容はこちら。

Application Insightsのデータを引っこ抜くためのAPIを作ろうとしている。FunctionsやApp Serviceでもよいのだが、手軽に作りたい&使いたい、ということで、Logic Appsを使うことにした。ただ、Application Insightsのコネクタを見ると、Application IDやAPI Keyというものが必要、とあるのだが、これらはどうやって取得すればよいのだろうか?

コネクタに指定すべき値がわからん、ということのよう。

Application IDやAPI Keyはどこにある?

Azure PortalのOverviewページを見ると、接続文字列などはあるのだが、上記の値は見当たらない。これらはAPI Access(API アクセス)という箇所から確認できるのだが、ドキュメントだとBot Serviceのドキュメントが一番わかりやすい(ただPortalデザインが古いけど)。

Application Insights キー / Application Insights keys
https://learn.microsoft.com/azure/bot-service/bot-service-resources-app-insights-keys

2024/04/27現在のAzure PortalのUIでは、以下のよう。API Keyは作成後メモを取っておかないと後から確認できないので注意が必要。

Azure CLIがお好みであれば、以下のクエリで取得できる(この値は接続文字列にも含まれている)。

az monitor app-insights component show \
  --app <Application Insightsのインスタンス名> \
  -g <リソースグループ名> \
  --query appId

az monitor app-insights component show
https://learn.microsoft.com/cli/azure/monitor/app-insights/component?view=azure-cli-latest#az-monitor-app-insights-component-show
az monitor app-insights api-key
https://learn.microsoft.com/cli/azure/monitor/app-insights/api-key?view=azure-cli-latest

実際にLogic Appsを構成してみる

接続先のApplication Insightsの情報がわかったので、あとはLogic Appsを構成するだけ。

①Application Insightsコネクタの選択

今回はRun Analytics query(クエリの実行)を使っている。

②接続の作成

先ほど取得した情報で構成していく。Connection Name(接続名)は何でもOKだが、Application ID、API Keyは先ほど取得した値。

③クエリ

これはLog Analytics Workspaceで指定しているクエリをそのまま貼り付ければOK。もちろん動的にクエリを構成することもできる。注意点としては、| も使える、というところ。なので、以下のようなクエリも動作する。

exceptions
| project timestamp, severityLevel, details

これでおしまい。

認証方式について

Application Insightsのコネクタを使うのもよいのだが、現在はAzure Monitor Logs コネクタへの切り替え時期であり、こちらを使うとLogic AppsのManaged Identityを利用できるためにより安全に接続できる。Managed Identityの作成は以下を参照。

Azure Logic Apps でマネージド ID を使用して Azure リソースへのアクセスと接続を認証する / Authenticate access and connections to Azure resources with managed identities in Azure Logic Apps
https://learn.microsoft.com/azure/logic-apps/authenticate-with-managed-identity

Application InsightsでのRBACの構成は以下。

Microsoft Entra 認証を使用した Application Insights API へのアクセス / Application Insights API Access with Microsoft Entra authentication
https://learn.microsoft.com/azure/azure-monitor/app/app-insights-azure-ad-api

①ロールの割り当て

Logic AppsのManaged Identityに割り当てるロールは、メトリックを取得するだけならMonitoring ReaderロールでOK。Readerロールでもかまわないが、Readerロールだとメトリック以外も読み取りが可能になってしまう。

②Azure Monitor Logsコネクタの選択

今回はRun query and list resultsを使っている。

③接続の構成

Connection Name(接続名)は何でもOKだが、Authentication Type(認証方式)はManaged Identityを指定する。

④クエリ

サブスクリプション、リソースグループ、リソースタイプ、リソース名などを指定していく。リソースタイプはApplication Insightsを選択する。リソースグループは手入力になる可能性があるが、リソースグループを指定していれば、リソース名は選択肢に現れるはず。

クエリは前述と同様でかまわない。時間はカスタムで指定もできるが、事前に用意されているものを使ってもよい。

以上でおしまい。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください