Azure Functions アプリの Application Insights ログが見つからないか正しくない
Azure Functions と Application Insights の統合により、関数アプリを厳密に監視できます。 また、カスタム構成なしで Application Insights を使用できます。
Application Insights ログが見つからない場合、またはデータが部分的または不正確と思われる場合は、次の手順を使用して問題を解決します。
関数アプリの構成を確認する
Azure portal で Function App に移動します。
[問題の診断と解決] を選び、[Azure Functions 診断]を開きます。
Search バーに「Function Configuration Checks」と入力して開きます。
すべての関数アプリ構成チェックの診断レポートが表示されます。 特に Application Insights では、次のチェックが実行されます。
次のいずれかの接続設定のみが存在します。
APPINSIGHTS_INSTRUMENTATIONKEY
Application Insights インストルメンテーション キーAPPLICATIONINSIGHTS_CONNECTION_STRING
接続より安定した動作を行うには、 APPLICATIONINSIGHTS_CONNECTION_STRING を使用することをお勧めします。
APPINSIGHTS_INSTRUMENTATIONKEY
を使用する機能は、2025 年までに非推奨となる予定です。
AzureWebJobsDashboard
組み込みログが、推奨に従って無効になっている。サンプリング は、Azure Functions テレメトリに対して有効になっています (既定で有効)。
推奨事項: 関数アプリはバージョン 4 で、ランタイム バージョンは少なくとも 4.15.2xx にする必要があります。 これは、このバージョン以降、Azure Functions から Application Insights サービスへのログ フローを追跡できるためです。 ログ フローを監視することで、不足しているログを確認できます。
ログが見つからないか、部分的である
Application Insights を使用すると、ログ、パフォーマンス、およびエラー データを収集できます。 サンプリング構成 は、テレメトリの量を減らすために使用されます。 サンプリング機能は、次の host.json 例に示す設定で既定で有効になっています。 除外された型はサンプリングされません。
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
部分的に不足しているログがある場合は、サンプリングが原因で発生する可能性があります。 実際のサンプリング レートを確認するには、次のコード スニペットに示されている必要な時間間隔を使用する Analytics クエリを使用します。 サンプリングの種類の TelemetrySavedPercentage
が 100 未満である場合は、その種類のテレメトリがサンプリングされます。
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc
詳細については、「Application Insights でのデータの収集、保持、保存」をご覧ください。
ログのボリュームと詳細を制御する
書き込まれるログを増やしたり抑制したりできます。 これを行うには、 host.jsonで構成されているログ レベルとカテゴリの組み合わせを使用できます。
Azure Functions のロガーでは、すべてのログにカテゴリがあります。 このカテゴリは、ランタイム コードまたは関数コードのどの部分がログを生成したかを示します。 例えば次が挙げられます。
Host.Results
とFunction.<YOUR_FUNCTION_NAME>
は、使用可能なカテゴリの一部です。- "ログ レベル" がすべてのログに割り当てられます。 この値は、
Warning
やInformation
などの相対的な重要度を示します。
詳細については、使用可能なその他のカテゴリとログ レベルに関するページを参照してください。
サンプル コード スニペットに従って、アプリケーションでログを書き込む方法を構成できます。
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Information", // catch all default, with modifications below for individual categories.
"Function": "Warning", // Warning level from all Functions (except the ones configured below).
"Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
"Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
"Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
"Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
これらの値をアプリ設定レベルで構成するには ( host.json の変更での再デプロイを回避するために)、アプリケーション設定と同等の値を作成して特定の host.json 値をオーバーライドします。 詳細については、「host.json 値をオーバーライドする」を参照してください。
ログを抑制する方法の詳細については、「 functions-log-suppressionを参照してください。
仮想ネットワーク統合関数アプリでログが生成されない
関数アプリが仮想ネットワークと統合されている場合は、Application Insights SDK または Application Insights エージェントが次の URL のデータをポータルに送信できるように、サーバー ファイアウォールで送信トラフィック用のポート 443 を開く必要があります。
- dc.applicationinsights.azure.com
- dc.applicationinsights.microsoft.com
- dc.services.visualstudio.com
- *.in.applicationinsights.azure.com
詳細については、「Azure Monitor で使用される IP アドレス」を参照してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。