Azure Monitor で複数の Application Insights リソースを統合するUnify multiple Azure Monitor Application Insights resources

この記事では、非推奨になった Application Insights Connector を引き継ぐものとして、お使いのすべての Application Insights アプリケーションのログ データのクエリと表示を 1 か所で行う方法について説明します。Azure サブスクリプションは違っていてもかまいません。This article describes how to query and view all your Application Insights application log data in one place, even when they are in different Azure subscriptions, as a replacement for the deprecation of the Application Insights Connector. 1 回のクエリに含めることができる Application Insights リソースの数は 100 個に制限されています。The number of resources Application Insights resources that you can include in a single query is limited to 100.

複数の Application Insights リソースを 1 つのクエリの中に指定するのは面倒であり、管理が難しくなる可能性があります。Listing multiple Application Insights resources in a query can be cumbersome and difficult to maintain. 代わりに、関数を活用して、クエリのロジックとアプリケーションのスコープを分離できます。Instead, you can leverage function to separate the query logic from the applications scoping.

次の例で、複数の Application Insights リソースを監視し、失敗した要求の数をアプリケーション名別に視覚化する方法を示します。This example demonstrates how you can monitor multiple Application Insights resources and visualize the count of failed requests by application name. 開始する前に、Application Insights リソースに接続されているワークスペースで次のクエリを実行して、接続されているアプリケーションの一覧を取得してください。Before you begin, run this query in the workspace that is connected to Application Insights resources to get the list of connected applications:

ApplicationInsights
| summarize by ApplicationName

union 演算子とアプリケーションの一覧を使用して関数を作成した後、クエリを applicationsScoping というエイリアスの関数としてワークスペースに保存します。Create a function using union operator with the list of applications, then save the query in your workspace as function with the alias applicationsScoping.

union withsource=SourceApp 
app('Contoso-app1').requests,  
app('Contoso-app2').requests, 
app('Contoso-app3').requests, 
app('Contoso-app4').requests, 
app('Contoso-app5').requests 
| parse SourceApp with * "('" applicationName "')" *  

注意

アプリケーションの一覧は、ポータルでワークスペースのクエリ エクスプローラーに移動して、編集する関数を選択して保存するか、または SavedSearch PowerShell コマンドレットを使用することで、いつでも変更できます。You can modify the listed applications at any time in the portal by navigating to Query explorer in your workspace and selecting the function for editing and then saving, or using the SavedSearch PowerShell cmdlet. withsource= SourceApp コマンドを使用すると、ログを送信したアプリケーションを示す列が結果に追加されます。The withsource= SourceApp command adds a column to the results that designates the application that sent the log.

このクエリでは、Application Insights のスキーマが使用されます。ただし、applicationsScoping 関数で Application Insights データ構造が返されるため、クエリはワークスペース内で実行されます。The query uses Application Insights schema, although the query is executed in the workspace since the applicationsScoping function returns the Application Insights data structure.

この例では、SourceApp プロパティからアプリケーション名を抽出する parse 演算子は省略できます。The parse operator is optional in this example, it extracts the application name from SourceApp property.

これで、リソース間クエリで applicationsScoping 関数を使用する準備が整いました。You are now ready to use applicationsScoping function in the cross-resource query:

applicationsScoping 
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationName ')' * 
| summarize count() by applicationName, bin(timestamp, 1h) 
| render timechart

関数のエイリアスによって、定義したすべてのアプリケーションからの要求の和集合が返されます。The function alias returns the union of the requests from all the defined applications. このクエリによって、失敗した要求がフィルター処理され、アプリケーション別に傾向が視覚化されます。The query then filters for failed requests and visualizes the trends by application.

クロスクエリの結果の例

Application Insights リソースとワークスペース データ間のクエリQuery across Application Insights resources and workspace data

Connector を停止しているときに、Application Insights のデータ保有期間 (90 日間) によって切り取られた期間のクエリを実行する必要がある場合は、ワークスペースと Application Insights リソースに対して中間期間のクロスリソース クエリを実行する必要があります。When you stop the Connector and need to perform queries over a time range that was trimmed by Application Insights data retention (90 days), you need to perform cross-resource queries on the workspace and Application Insights resources for an intermediate period. これは、前述の新しい Application Insights のデータ保有期間でアプリケーション データが蓄積されるまで必要です。This is until your applications data accumulates per the new Application Insights data retention mentioned above. Application Insights とワークスペースではスキーマが異なるため、クエリではいくつかの操作が必要です。The query requires some manipulations since the schemas in Application Insights and the workspace are different. このセクションで後述する、スキーマの相違点を強調している表を参照してください。See the table later in this section highlighting the schema differences.

注意

ログ アラートでのリソース間のクエリは、新しい scheduledQueryRules API でサポートされています。Cross-resource query in log alerts is supported in the new scheduledQueryRules API. 従来の Log Alerts API から切り替えていない場合、Azure Monitor では既定で、従来の Log Analytics Alert API を使用して Azure portal から新しいログ アラート ルールが作成されます。By default, Azure Monitor uses the legacy Log Analytics Alert API for creating new log alert rules from Azure portal, unless you switch from legacy Log Alerts API. 切り替えた後は、Azure portal での新しいアラート ルールに対して新しい API が既定になり、リソース間のクエリのログ アラート ルールを作成できます。After the switch, the new API becomes the default for new alert rules in Azure portal and it lets you create cross-resource query log alerts rules. 切り替えを行わなくても、scheduledQueryRules API 用の ARM テンプレートを使用することで、リソース間のクエリのログ アラート ルールを作成できます。ただし、このアラート ルールは、scheduledQueryRules API では管理できますが、Azure portal では管理できません。You can create cross-resource query log alert rules without making the switch by using the ARM template for scheduledQueryRules API – but this alert rule is manageable though scheduledQueryRules API and not from Azure portal.

たとえば、Connector が 2018 年 11 月 1 日に動作を停止しているときに、Application Insights リソースとワークスペース内のアプリケーション データのログのクエリを実行する場合、そのクエリは次の例のようになります。For example, if the connector stopped working on 2018-11-01, when you query logs across Application Insights resources and applications data in the workspace, your query would be constructed like the following example:

applicationsScoping //this brings data from Application Insights resources 
| where timestamp between (datetime("2018-11-01") .. now()) 
| where success == 'False' 
| where duration > 1000 
| union ( 
    ApplicationInsights //this is Application Insights data in Log Analytics workspace 
    | where TimeGenerated < (datetime("2018-12-01") 
    | where RequestSuccess == 'False' 
    | where RequestDuration > 1000 
    | extend duration = RequestDuration //align to Application Insights schema 
    | extend timestamp = TimeGenerated //align to Application Insights schema 
    | extend name = RequestName //align to Application Insights schema 
    | extend resultCode = ResponseCode //align to Application Insights schema 
    | project-away RequestDuration , RequestName , ResponseCode , TimeGenerated 
) 
| project timestamp , duration , name , resultCode 

Application Insights と Log Analytics ワークスペースのスキーマの相違点Application Insights and Log Analytics workspace schema differences

次の表に、Log Analytics と Application Insights のスキーマの違いを示します。The following table shows the schema differences between Log Analytics and Application Insights.

Log Analytics ワークスペースのプロパティLog Analytics workspace properties Application Insights のリソースのプロパティApplication Insights resource properties
AnonUserIdAnonUserId user_iduser_id
ApplicationIdApplicationId appIdappId
ApplicationNameApplicationName appNameappName
ApplicationTypeVersionApplicationTypeVersion application_Versionapplication_Version
AvailabilityCountAvailabilityCount itemCountitemCount
AvailabilityDurationAvailabilityDuration durationduration
AvailabilityMessageAvailabilityMessage messagemessage
AvailabilityRunLocationAvailabilityRunLocation locationlocation
AvailabilityTestIdAvailabilityTestId idid
AvailabilityTestNameAvailabilityTestName namename
AvailabilityTimestampAvailabilityTimestamp timestamptimestamp
ブラウザーBrowser client_browserclient_browser
CityCity client_cityclient_city
ClientIPClientIP client_IPclient_IP
ComputerComputer cloud_RoleInstancecloud_RoleInstance
CountryCountry client_CountryOrRegionclient_CountryOrRegion
CustomEventCountCustomEventCount itemCountitemCount
CustomEventDimensionsCustomEventDimensions customDimensionscustomDimensions
CustomEventNameCustomEventName namename
DeviceModelDeviceModel client_Modelclient_Model
DeviceTypeDeviceType client_Typeclient_Type
ExceptionCountExceptionCount itemCountitemCount
ExceptionHandledAtExceptionHandledAt handledAthandledAt
ExceptionMessageExceptionMessage messagemessage
ExceptionTypeExceptionType typetype
OperationIDOperationID operation_idoperation_id
OperationNameOperationName operation_Nameoperation_Name
OSOS client_OSclient_OS
PageViewCountPageViewCount itemCountitemCount
PageViewDurationPageViewDuration durationduration
PageViewNamePageViewName namename
ParentOperationIDParentOperationID operation_Idoperation_Id
RequestCountRequestCount itemCountitemCount
RequestDurationRequestDuration durationduration
RequestIDRequestID idid
RequestNameRequestName namename
RequestSuccessRequestSuccess 成功success
ResponseCodeResponseCode resultCoderesultCode
RoleRole cloud_RoleNamecloud_RoleName
RoleInstanceRoleInstance cloud_RoleInstancecloud_RoleInstance
SessionIdSessionId session_Idsession_Id
SourceSystemSourceSystem operation_SyntheticSourceoperation_SyntheticSource
TelemetryTYpeTelemetryTYpe typetype
URLURL _url_url
UserAccountIdUserAccountId user_AccountIduser_AccountId

次の手順Next steps

ログ検索を使用して Application Insights アプリの詳細情報を表示します。Use Log Search to view detailed information for your Application Insights apps.