Monitoring Azure Functions サービス

Instana UI で Azure Functions サービスに関連するメトリックを表示するには、Instana ホスト・エージェント をインストールし、「 センサーの構成 」セクションの説明に従って Azure センサーを有効にする必要があります。 Azure Functions センサーは、Instana ホスト・エージェントのインストール後に自動的に有効になります。

Instana UI で Azure Functions トレースを表示するには、 Instana Azure Functions トレーサーのインストール のセクションで説明されているように、Instana Azure Functions トレーサーを Azure Functions アプリケーションに追加する必要があります。

その他のサポートされる Azure サービスについては、 Azure の資料を参照してください。

構成

センサーの構成

エージェント configuration.yaml ファイル < agentinstall_dir>/etc/instana/configuration.yaml` で Azure センサーを有効にする必要があります。 最小センサー構成は、以下のようになります。

com.instana.plugin.azure:
  enabled: true
  subscription: "[Your-Subscription-Id]"
  tenant: "[Your-Tenant-Id]"
  principals:
    - id: "[Your-Service-Principal-Account-Id]"
      secret: "[Your-Service-Principal-Secret]"

Azure Functions サービス・センサーは、デフォルトで有効になっています。

オプションの構成

Azure Functions センサーは無効にすることができ、タグおよびリソース・グループによってフィルタリングできます。 <agentinstall_dir>/etc/instana/configuration.yaml のエージェント構成を使用して、以下のように Azure Functions センサーを構成できます。

com.instana.plugin.azure.functionapp:
  # Valid values: true, false
  enabled: false # enabled (true) by default
  # Comma separated list of tags in key:value format
  include_tags:
  # Comma separated list of tags in key:value format
  exclude_tags:
  # Comma separated list of resource groups
  include_resource_groups:
  # Comma separated list of resource groups
  exclude_resource_groups:

Azure Functions サービスのモニターを無効にするには、以下の構成を使用します。

com.instana.plugin.azure.functionapp:
  enabled: false

コンマで区切られた複数のタグとリソース・グループを定義できます。 タグは、コロン (:) で区切られたキーと値のペアとして指定する必要があります。 構成を容易にするために、ディスカバリーに含めるタグとリソース・グループ、またはディスカバリーから除外するタグとリソース・グループを定義できます。 両方のリスト (包含と除外) にタグまたはリソース・グループを定義する場合は、除外リストの優先順位が高くなります。 サービスのフィルタリングが必要ない場合は、構成を定義しないでください。 フィルタリングを有効にするためにすべての値を定義することは必須ではありません。

タグによってサービスをディスカバリーに組み込むには、以下の構成を使用します。

com.instana.plugin.azure.functionapp:
  include_tags: # Comma separated list of tags in key:value format (e.g. env:prod,env:staging)

タグによってサービスをディスカバリーから除外するには、以下の構成を使用します。

com.instana.plugin.azure.functionapp:
  exclude_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)

リソース・グループごとのサービスをディスカバリーに組み込むには、以下の構成を使用します。

com.instana.plugin.azure.functionapp:
  include_resource_groups: # Comma separated list of resource groups (e.g. rg_prod,rg_staging)

リソース・グループ・ディスカバリーによってサービスを除外するには、以下の構成を使用します。

com.instana.plugin.azure.functionapp:
  exclude_resource_groups: # Comma separated list of resource groups (e.g. rg_dev,rg_test)

すべての Azure サービスに対して、グローバル・レベルでディスカバリー・フィルタリングを構成できます。 Azure Functions サービスのフィルターを定義すると、グローバル・フィルターがオーバーライドされます。 グローバル Azure サービス・ディスカバリー・フィルタリングについて詳しくは、 Azure 構成を参照してください。

Instana Azure Functions トレーサーのインストール

Windows または Docker コンテナー上で実行される AppService としてデプロイされた Azure Functions のインスツルメンテーションを有効にすることができます。 .NET Framework、.Net Core、および .Net のインスツルメンテーションを有効にするには、 Azure Functions をモニターする予定の環境で Instana エージェントが実行されていることを確認してください。 Azure モニター用に Instana エージェントを構成するには、 Microsoft Azureのモニターおよびインスツルメントを参照してください。

Windows での Instana Azure Functions トレーサーのインストール

Azure Functions は、 App Serviceに基づいています。 Azure Functions と Azure App Services のインストールと構成のプロセスは同じです。

Windows に Instana Azure Functions トレーサーをインストールするには、以下のステップを実行します。

  1. Microsoft Azure ポータルにログオンします。

  2. インスツルメントする Azure 関数を見つけます。

  3. 「開発ツール」パネルで「 拡張 」をクリックします。 「拡張」メニュー

  4. 「拡張機能」ページで、 Instana トレース AppService 拡張機能を追加します。 Instana トレース AppService 拡張機能をインストールした後、それを使用するように拡張機能を構成します。

  5. 「拡張」ページに移動し、Instana Tracing AppService 拡張で URL をクリックします。 「アプリ・サービスの Instana トレース」ダイアログが表示されます。
    インスツルメンテーション構成

    1. 「 AppServices の Instana トレース」ウィンドウで、 「トレースの有効化」 をオンに設定します。

    2. オプション: 「64 ビットを有効にする (Enable 64 bit)」 をオンに設定します。

    3. 「エージェント・キー」 フィールドに、Instana ホスト・エージェントのライセンス・キーを入力します。

    4. 「エンドポイント URL フィールドに、 serverless monitoring 用のエンドポイント URLを入力します。

    5. 「ログ・レベル」 フィールドに、使用する以下のいずれかのログ・レベルを入力します。

      • なし
      • デバッグ
      • 情報
      • 警告
      • エラー

      ログ情報は、 Azure Function アプリケーションのルート・フォルダーに生成されます。

    6. 「構成の更新」をクリックします。 Azure 機能の情報が保存されます。

  6. 「再始動」をクリックして、 Azure Function を再始動します。 Azure Function を実行すると、Instana リライターがアプリケーションに接続され、Instana がトレースの収集を開始します。

Instana UI でトレースを表示するには、 Azure Function エンティティーのダッシュボードを開き、 「アップストリーム/ダウンストリーム」をクリックします。 その後、このエンティティーについて収集されたトレースを確認できます。 トレースの表示について詳しくは、「 トレースおよび呼び出しの分析」を参照してください。

Instana Azure Functions トレーサーの Docker

Azure Function アプリケーションで Instana を機能させるには、 Dockerfileに以下の行を追加します。

    DOTNET_STARTUP_HOOKS="[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.dll" \
    CORECLR_ENABLE_PROFILING=1 \
    CORECLR_PROFILER="{cf0d821e-299b-5307-a3d8-b283c03916dd}" \
    CORECLR_PROFILER_PATH="[AzureWebJobsScriptRoot]/bin/instana_tracing/CoreProfiler.so" \
    INSTANA_ENDPOINT_URL="[Serverless-ingress-URL-for-your-region]" \
    INSTANA_AGENT_KEY="[Your-Instana-agent-key]"

INSTANA_ENDPOINT_URL 値は、ご使用の領域によって異なります。 詳しくは、 サーバーレス・モニターのエンドポイント の資料を参照してください。

.NET Core での Instana のセットアップについて詳しくは、 を参照してください。NET Core 資料。

Instana Nuget パッケージをインストールして使用する代わりに、 Azure Function Application では、 Azure上でアプリケーションがリリースされるリリース・フォルダーにすべての Instana Nuget パッケージをコピーする必要があります。 これは、 Docker Container オプションを使用して Azure Function Application を Azure にデプロイする場合に必要です。

パッケージについて詳しくは、 を参照してください。NET Tracing の資料。

最新の Instana.Tracing.CoreInstana.Tracing.Core.Sdk および Instana.Tracing.Core.Rewriter.Linux パッケージをダウンロードして、最新バージョンを使用していることを確認してください。

ダウンロード・プロセスが終了したら、以下のファイルを Azure Function アプリケーション内のいくつかのフォルダーにコピーします。これらのフォルダーには、 Dockerfileから簡単にアクセスできます。

  • Instana.Tracing.Core.dll
  • Instana.Tracing.Core.Common.dll
  • Instana.Tracing.Core.Instrumentation.dll
  • Instana.Tracing.Core.Transport.dll
  • Instana.Tracing.Api.dll
  • CoreProfiler.so
  • instrumentation.json

次に、以下のようにして、これらのファイルを Azure 上のリリース・フォルダーにコピーします。

    COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.dll"
    COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.Common.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.Common.dll"
    COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.Instrumentation.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.Instrumentation.dll"
    COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.Transport.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.Transport.dll"
    COPY "/[path-to-your-patch-folder]/Instana.Tracing.Api.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Api.dll"
    COPY "/[path-to-your-patch-folder]/CoreProfiler.so" "[AzureWebJobsScriptRoot]/bin/instana_tracing/CoreProfiler.so"
    COPY "/[path-to-your-patch-folder]/instrumentation.json" "[AzureWebJobsScriptRoot]/bin/instana_tracing/instrumentation.json "                        

Instana.Tracing.Core パッケージを Azure Function Application に直接インストールしないでください。 アプリケーションのデプロイ後に重複するライブラリー・ファイルがある場合、トレースは機能しません。

次に、 Instana.Tracing.Core パッケージを削除し、このトピックで既に説明されている指示に従って、 Dockerfile内のリリース・フォルダーにライブラリー・ファイルをコピーします。

サポートされるトリガー

Instana がサポートする Azure Functions トリガーのリストを確認できます。 その中には、これまでにテストされたものもあり、その動作は知られています。 残りの部分については、インスツルメンテーションはまだテストされていません。 以下の表は、状態が変更されるとすぐに更新されます。

テスト中に 1 つの動作が見られます。つまり、 Azure 関数の 「実行」 メソッドが STATICの場合、一部の欠落データは生成されたスパン (キュー・トリガーの場合は Function nameTrigger name など) 内にあります。 その理由は、メソッドが STATICであり、Instana インスツルメンテーションが Run メソッドに関する必要なデータをすべて収集できないためです。 可能な限り、NON-STATIC 方式を使用することをお勧めします。

トリガー名 テスト済み STATIC 方式による可視スパン・データ NON-STATIC メソッドを使用した可視スパン・データ
Blob テストされていません。
CosmosDB テストされていません。
イベント・グリッド テストされていません。
イベント・ハブ テストされていません。
Kafka テストされていません。
HTTP インスツルメンテーションは、STATIC メソッドと NON-STATIC メソッドの両方で機能します。 トリガーメソッド名ランタイム トリガーメソッド名ランタイム関数名
キュー インスツルメンテーションは、NON-STATIC メソッドでのみ機能します。 メソッド名ランタイム トリガーメソッド名ランタイム関数名
RabbitMQ テストされていません。
Service Bus テストされていません。
SignalR テストされていません。
テストされていません。
タイマー インスツルメンテーションは、STATIC メソッドと NON-STATIC メソッドの両方で機能します。 トリガーメソッド名ランタイム トリガーメソッド名ランタイム関数名

メトリックの表示

メトリックを表示するには、以下のステップを実行します。

  1. Instana UI のサイドバーで、 「インフラストラクチャー」を選択します。
  2. 特定のモニター対象ホストをクリックします。

その後、収集されたすべてのメトリックとモニター対象プロセスを含むホスト・ダッシュボードを表示できます。

メトリック

Functions Service のメトリックは毎分プルされます。これは、これらのサービスをモニターするために Azure が提供する解決策です。

メトリック名 説明
要求 結果の HTTP 状況コードに関係なく、要求の総数。 WebApps および FunctionAppsの場合。
受信バイト数 Azure Spring Cloud によってクライアントから受信されたバイト数。
送信バイト数 Azure Spring Cloud によってクライアントに送信されたバイト数。
Http101 結果として HTTP 状況コード 101 になった要求の数。
Http2xx HTTP 状況コードが 200 (ただし < 300) になる要求の数。
Http3xx HTTP 状況コード = 300、ただし < 400 になる要求の数。
Http4xx HTTP 状況コードが 400 (ただし < 500) になる要求の数。
Http5xx 結果として HTTP 状況コードが 500 (ただし < 600) になる要求の数。
メモリー・ワーキング・セット アプリによって使用されているメモリーの現在の量 ( MiB単位)。 WebApps および FunctionAppsの場合。
平均メモリー・ワーキング・セット アプリによって使用されたメモリーの平均量 (メガバイト単位) (MiB)。 WebApps および FunctionAppsの場合。
HTTP 応答時間 アプリが要求を処理するために要した時間 (秒単位)。 WebApps および FunctionAppsの場合。
IoReadBytesPer秒 アプリケーション・プロセスが入出力操作からバイトを読み取る率。 WebApps および FunctionAppsの場合。
IoWriteBytesPer秒 アプリケーション・プロセスが入出力操作にバイトを書き込む率。 WebApps および FunctionAppsの場合。
IoReadOperationsPer アプリケーション・プロセスが読み取り入出力操作を発行する率。 WebApps および FunctionAppsの場合。
IoWriteOperationsPer アプリケーション・プロセスが書き込み入出力操作を発行する率。 WebApps および FunctionAppsの場合。
RequestsInApplicationQueue アプリケーション要求キュー内の要求の数。 WebApps および FunctionAppsの場合。
HealthCheck状況 ヘルス・チェック状況。 WebApps および FunctionAppsの場合。
FileSystemの使用法 アプリによって消費されたファイル・システム割り当て量のパーセンテージ。 WebApps および FunctionAppsの場合。

構成データ

FunctionApps

FunctionApp サービスの詳細 説明
ID 関数アプリケーションの固有 ID。
名前 FunctionApp インスタンスの名前です。
タイプ FunctionApp タイプ。
Location インスタンスが配置されているリージョン。
種別 FunctionApp アカウントのタイプを示します。
サブスクリプション FunctionApp サービス・インスタンスのサブスクリプション ID。
リソース・グループ FunctionApp サービス・インスタンスのリソース・グループ。
状態 インスタンスの現在のデプロイメント状態。

関数

機能サービスの詳細 説明
ID 関数の固有 ID。
名前 Functions サービス・インスタンスの名前。
タイプ 関数サービス・タイプ。
Location インスタンスが配置されているリージョン。
サブスクリプション Functions サービス・インスタンスのサブスクリプション ID。
リソース・グループ Functions サービス・インスタンスのリソース・グループ。