AzurePaaS研究サイト

~理解しずらい情報をシンプルにお伝えします~

Functions の関数実行で ApplicationInsights のログがでない場合の原因と解決方法

Functions(関数アプリ)を実行して Application Insights のログを確認した際に、一部のログが出力されていない場合があります。「一部のログが出力されていない」なので、そのこと自体に気づいていない Azure ユーザもいるかもしれません。
 
一部のログが出力されない原因がなにかというと、Application Insights のサンプリング機能が有効になっているために発生している可能性が高いです。

サンプリング機能

 
アプリケーションの Application Insights のサンプリング機能が有効になっている場合、すべてのログが出力されない可能性があります。
 
サンプリング機能は、通信量およびログ情報の容量 (コスト) が抑えられる等のメリットがあるが、有効に設定されている場合、ログが大量で全く同じようなログが存在したりする場合は Application Insights にてサンプリング (間引き) が行われて、ログが一部出力されない場合があります。どういう場合に間引くかは、Azure Application Insights 側のロジックで決まってます。
 
下記資料にサンプリング機能の説明があるので、見てみてください。
 
Application Insights におけるサンプリング > 簡単な概要 docs.microsoft.com  
 

サンプリング機能の無効化

 
サンプリング機能の無効化の方法ですが、host.json ファイル内の "samplingSettings" に "isEnabled": false を設定するとできます。
 
 
下記資料に、host.json ファイルのサンプルがあります。
 
 
Azure Functions 2.x 以降の host.json のリファレンス > サンプル host.json ファイル

docs.microsoft.com ===== 無効化設定の例 =====
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": false
}
}
}
}
===== 無効化設定の例 =====

 

サンプリング機能の状態(有効/無効)の確認方法

Application Insights におけるサンプリング > サンプリングが動作しているかどうかを把握する docs.microsoft.com ===== 抜粋 =====
いずれかの種類の RetainedPercentage が 100 未満である場合、その種類のテレメトリはサンプリングされています
===== 抜粋 =====
 
 
今まで説明したを試してもログがでない事象が解決されない場合は、事象発生日時・該当 Functions 名を記載して Azure サポートに問い合せをしましょう。
 
 
以上です。