AzurePaaS研究サイト

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

Functions の関数実行で ApplicationInsights ログが一部出ないトラブル(サンプリング機能)

概要

Functions(関数アプリ)の Application Insights ログに、一部のログが出力されていないことがあるのはご存知ですか?
 
「一部のログが出力されない」なので、そのこと自体に気づいていない・・・なんていう場合は、アラート検知が正しく行われていない可能性もありえます。
 
システム運用に穴ができてしまわないように、当記事をきっかけにご自身の環境を確認してみてください。

 
一部のログが出力されない原因がなにかというと、Application Insights のサンプリング機能が有効になっているために発生している可能性が高い、というのが今回の内容です。

サンプリング機能

 
 
サンプリング機能は、通信量およびログ情報の容量 (コスト) が抑えられる等のメリットがあるが、有効に設定されている場合、ログが全く同じようなログが存在したりする場合は Application Insights にてサンプリング (間引き) が行われる機能がデフォルトで動作しています。どういう場合に間引くかは、Azure Application Insights 側のロジックで決まってます。
 
上記のことから、アプリケーションの 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
}
}
}
}
===== 無効化設定の例 =====
 
公開情報2つ目 docs.microsoft.com

 

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

 
host.json で有効/無効は指定できますが、ちゃんと反映されているか不安なときがあります。その場合は、このやり方で Azure 上の設定状況を確認できます。
 
Application Insights におけるサンプリング > サンプリングが動作しているかどうかを把握する docs.microsoft.com ===== 抜粋 =====
いずれかの種類の RetainedPercentage が 100 未満である場合、その種類のテレメトリはサンプリングされています
===== 抜粋 =====
 
 
今まで説明したを試してもログがでない事象が解決されない場合は、事象発生日時・該当 Functions 名を記載して Azure サポートに問い合せをしましょう。
 
 
以上です。
 

ご意見・ご要望はこちらへ