概要説明
デフォルトのままだと、Application Insightsにログが一部出力されていないことがあるのはご存知ですか?? 「ログが一部出力されていない」こと自体に気づいていないために、ログ検知が正しく行われていない可能性もありえます。システム運用に穴ができてしまわないように、当記事をきっかけにご自身の環境を確認してみてください。
ログが一部出力されない原因は何かというと、Application Insightsのサンプリング機能(間引き)が有効になっているために発生している可能性が高い、というのが今回の内容です。
サンプリング機能
サンプリング機能は、通信量およびログ情報の容量(コスト)が抑えられる等のメリットがあるが、有効に設定されている場合、ログが全く同じようなログが存在したりする場合はApplication Insightsにてサンプリング(間引き)が行われる機能がデフォルトで動作しています。どういう場合に間引くかは、Application Insights側のロジックで決まってます。
上記のことから、アプリケーションのApplication Insightsのサンプリング機能が有効になっている場合は、すべてのログが出力されない可能性があります。
下記資料にサンプリング機能の説明があるので、見てみてください。
ApplicationInsightsにおけるサンプリング > 簡単な概要
docs.microsoft.com
サンプリング機能の無効化
サンプリング機能の無効化の方法は、host.jsonファイル内の"samplingSettings"に"isEnabled":falseを設定するとできます。
下記資料に、host.jsonファイルのサンプルがあります。
AzureFunctions2.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サポートに問合せましょう。
以上です。