Azure Functions サービスの監視

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

詳細については、 「ホストエージェント 」および 「センサーの設定」 を参照してください。

Instana UI で Azure Functions トレースを表示するには、「Instana Azure Functions トレーサー Instana インストール」セクションで説明されているように、Instana Azure Functions Instana を 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 センサーは無効にすることができ、タグやリソースグループでフィルタリングすることも可能です。 Azure Functions センサーは、エージェント設定を使用して次 <agentinstall_dir>/etc/instana/configuration.yaml のように構成できます:

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. 「開発ツール」パネルで 「拡張機能」 をクリックします。
    図 1. Azure ポータルにおける、特定の Azure 関数用の「拡張機能」メニュー
    「拡張」メニュー
  4. 「拡張機能」ページで、 「 Instana Tracing AppService 」拡張機能を追加してください。 「 Instana Tracing AppService 」拡張機能をインストールしたら、その拡張機能を使用するように設定してください。

  5. Go 「拡張機能」ページに移動し、「 Instana Tracing AppService 」拡張機能の「 URL 」をクリックします。 「 Instana のApp Services用トレース」ダイアログが表示されます。
    図 2. Instana のセットアップ Azure 関数のインストルメンテーション
    インスツルメンテーション構成
    1. 「 Instana の AppServices 用トレース」ウィンドウで、 「トレースを有効にする」 をオンに設定します。

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

    3. エージェントキー 」フィールドに、 Instana ホストエージェントのライセンスキーを入力してください。

    4. エンドポイントの URL 」フィールドで、次のいずれかの操作を実行します:

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

      • なし
      • DEBUG
      • INFO
      • WARN
      • ERROR

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

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

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

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

Docker に Instana および Azure Functions のトレーサーをインストールする

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 』のドキュメントを参照してください。

Azure の関数アプリケーションを Azure に`--no-nuget-packages Docker Container `オプションを使用してデプロイする場合、 Instana のNugetパッケージをインストールして使用する必要はありません。 その代わりに、すべての Instana NuGetパッケージを、 Azure 上でアプリケーションがデプロイされているreleaseフォルダにコピーする必要があります。

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

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

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

対応しているトリガー

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

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

トリガー名 テスト済み 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 のメトリクスは 1 分ごとに取得されます。これは、 Azure がこれらのサービスの監視に提供する更新間隔です。
メトリック名 説明
要求 結果として返される HTTP ステータスコードにかかわらず、リクエストの総数。 WebApps および FunctionAppsの場合。
受信バイト数 Azure Spring Cloud によってクライアントから受信されたバイト数。
送信バイト数 Azure Spring Cloud によってクライアントに送信されたバイト数。
Http101 ステータスコード 101「 HTTP 」となったリクエストの数。
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の場合。
IoReadBytesPerSecond アプリケーション・プロセスが入出力操作からバイトを読み取る率。 WebApps および FunctionAppsの場合。
IoWriteBytesPerSecond アプリケーション・プロセスが入出力操作にバイトを書き込む率。 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 関数の固有 ID。
名前 Functions サービス・インスタンスの名前。
タイプ 関数サービス・タイプ。
Location インスタンスが配置されているリージョン。
サブスクリプション Functions サービス・インスタンスのサブスクリプション ID。
リソース・グループ Functions サービス・インスタンスのリソース・グループ。