モニタリング Azure ファンクション・サービス

Instana UI で Azure Functions Service に関連するメトリクスを表示するには、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 Service センサーはデフォルトで有効になっている。

オプション構成

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 ファンクショントレーサーのインストール

Windows または Docker コンテナ上で動作する AppService 関数としてデプロイされた Azure 関数のインスツルメンテーションを有効にすることができます。 .Net Framework、.Net Core、.Net のインスツルメンテーションを有効にするには、 Azure 関数を監視する環境で Instana エージェントが実行されていることを確認します。 Azure の監視用にInstanaエージェントを設定するには、 Microsoft Azure の監視と計測を参照してください。

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

Azure ファンクションは に基づいている。 App Service Azure Functions と Azure App Services のインストールと設定プロセスは同じです。

Instana Azure Functions トレーサーを Windows にインストールするには、次の手順を実行します:

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

  2. 計測したい Azure Function を探す。

  3. 開発ツールパネルの拡張機能をクリックします。
    図 1. Azure Portal の 関数の拡張機能メニュー Azure
    拡張メニュー
  4. 拡張機能ページで、 Instana Tracing AppService 拡張機能を追加します。 Instana Tracing AppService エクステンションをインストールしたら、エクステンションを使用するように設定します。

  5. エクステンション ページに移動し URLAppService をクリックします。 Instana Tracing for App Services] ダイアログが表示されます。
    図 2. Instana Azure Function Instrumentation のセットアップ
    計装構成
    1. Instana Tracing for AppServices ウィンドウで、 Enable Tracing をオンに設定します。

    2. オプション: 64ビットを有効にするをオンに設定する。

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

    4. Endpoint URL ]フィールドで、以下の手順のいずれかを実行します:

      • SaaS: サーバーレス監視用のエンドポイント URL を入力する。
      • セルフホスト: https://<IP address of the Instana backend>/serverless 形式でエンドポイントを入力し、 INSTANA_DISABLE_CA_CHECK パラメータを true または 1 に設定する。
    5. Log-Level フィールドに、使用したい以下のログレベルのいずれかを入力する:

      • なし
      • DEBUG
      • INFO
      • WARN
      • ERROR

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

    6. Update Configをクリックします。 この情報は、 Azure 関数のために保存される。

  6. Restart をクリックして Azure 機能を再起動する。 Azure 関数を実行すると、Instana リライターがアプリケーションにアタッチされ、Instana はトレースの収集を開始します。

Instana UI でトレースを表示するには、 Azure Function エンティティのダッシュボードを開き、 Upstream/Downstream をクリックします。 そして、このエンティティに対して収集されたトレースを見ることができる。 トレースの表示に関する詳細については、 「トレースとコールの分析」 を参照してください。

Instana Azure Functions のトレーサーをインストールする。 Docker

インスタナを Azure ファンクション・アプリケーションで動作させるには、次の行を 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 ドキュメントを参照してください。

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

パッケージの詳細については、.NET トレースのドキュメントを参照してください。

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

ダウンロードが完了したら、以下のファイルを Dockerfile から簡単にアクセスできる Azure Function Application 内のフォルダにコピーしてください:

  • 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 の release フォルダに以下のようにコピーする:

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 "
注意: Azure 関数アプリケーションに Instana.Tracing.Core パッケージを直接インストールしないでください。 アプリケーションがデプロイされた後に、重複したライブラリー・ファイルが存在する場合、トレースは機能しません。

その後、 Instana.Tracing.Core パッケージを削除し、このトピックで既に説明されている手順に従って、ライブラリファイルを Dockerfile 内の release フォルダにコピーしてください。

対応トリガー

Instana がサポートする Azure Functions トリガーのリストはこちら。 いくつかはこれまでにテストされ、挙動が判明している。 それ以外はまだテストされていない。 以下の表は、状態が変わり次第更新される。

それは、 Azure 関数の Run メソッドが STATIC の場合、生成されたスパンの中に、 Function name や、キュートリガーの場合は Trigger name のように、欠落したデータが存在することです。 その理由は、メソッドが静的である場合、Instanaインスツルメンテーションは、 ランメソッドに関する必要なデータをすべて収集することができないからです。 可能な限り、非定常的な方法を用いる。

トリガー名 テスト済み STATIC法による可視スパンデータ NON-STATIC法による可視スパンデータ
Blob テストしていない。
CosmosDB テストしていない。
イベントグリッド テストしていない。
イベント・ハブ テストしていない。
Kafka テストしていない。
HTTP 計装は、静的方法と非静的方法の両方で機能する。 トリガーメソッド名ランタイム トリガーメソッド名ランタイム関数名
キュー 機器は非定常メソッドでのみ動作する。 メソッド名ランタイム トリガーメソッド名ランタイム関数名
RabbitMQ テストしていない。
Service Bus テストしていない。
SignalR テストしていない。
テーブル テストしていない。
タイマー 計装は、静的方法と非静的方法の両方で機能する。 トリガーメソッド名ランタイム トリガーメソッド名ランタイム関数名

メトリックの表示

メトリクスを表示するには、以下の手順を実行します:

  1. Instana UI のサイドバーで、 インフラストラクチャを選択します。
  2. 特定の監視ホストをクリックします。

その後、収集されたすべてのメトリクスと監視されたプロセスを含むホスト・ダッシュボードを見ることができます。

メトリック

注: ファンクション・サービスのメトリクスは、 Azure がこれらのサービスのモニタリングに提供している解像度である1分ごとに取得されます。
メトリック名 説明
要求 HTTP ステータスコードに関係なく、リクエストの総数。 WebApps、 FunctionApps。
受信バイト数 Azure Spring Cloud がクライアントから受信したバイト数。
送信バイト数 Azure Spring Cloud がクライアントに送信したバイト数。
Http101 HTTP ステータスコード 101 になったリクエストの数。
Http2xx HTTP、ステータスコードが200未満のリクエスト数。
Http3xx HTTP、ステータスコードが300未満のリクエスト数。
Http4xx HTTP、ステータスコードが400未満500未満のリクエスト数。
Http5xx HTTP、ステータスコードが500未満のリクエスト数。
メモリー・ワーキング・セット アプリが現在使用しているメモリ量。単位は MiB。 WebApps、 FunctionApps。
平均メモリー・ワーキング・セット アプリが使用するメモリの平均量。単位はメガバイト( MiB )。 WebApps、 FunctionApps。
HTTP 応答時間 アプリがリクエストを処理するのにかかる時間(秒)。 WebApps、 FunctionApps。
IoReadBytesPerSecond アプリ・プロセスがI/O操作からバイトを読み取る速度。 WebApps、 FunctionApps。
IoWriteBytesPerSecond アプリ・プロセスがI/Oオペレーションにバイトを書き込む速度。 WebApps、 FunctionApps。
IoReadOperationsPerSecond アプリプロセスが読み取りI/Oオペレーションを発行するレート。 WebApps、 FunctionApps。
IoWriteOperationsPerSecond アプリ・プロセスが書き込みI/Oオペレーションを発行するレート。 WebApps、 FunctionApps。
RequestsInApplicationQueue アプリケーション・リクエスト・キュー内のリクエスト数。 WebApps、 FunctionApps。
HealthCheckStatus 健康診断の状況 WebApps、 FunctionApps。
FileSystemUsage アプリによって消費されたファイルシステムのクォータの割合。 WebApps、 FunctionApps。

構成データ

FunctionApps

FunctionApp サービス内容 説明
ID ファンクションアプリのユニークなID。
名前 FunctionApp インスタンスの名前。
タイプ FunctionApp。
Location インスタンスが配置されているリージョン。
種別 FunctionApp 口座の種類を示す。
サブスクリプション FunctionApp サービスインスタンスのサブスクリプション ID。
リソース・グループ FunctionApp サービスインスタンスのリソースグループ。
状態 インスタンスの現在のデプロイメント状態。

関数

機能 サービス内容 説明
ID FunctionのユニークID。
名前 Functionsサービスのインスタンス名。
タイプ 機能 サービスタイプ
Location インスタンスが配置されているリージョン。
サブスクリプション FunctionsサービスインスタンスのサブスクリプションID。
リソース・グループ Functionsサービスインスタンスのリソースグループ。