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 アプリケーションに追加する必要があります。
の構成
センサーの構成
エージェント 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 のトレーサーをインストールするには、以下の手順を実行してください:
Microsoft Azure ポータルにログオンします。
インスツルメントする Azure 関数を見つけます。
- 「開発ツール」パネルで 「拡張機能」 をクリックします。
図 1. Azure ポータルにおける、特定の Azure 関数用の「拡張機能」メニュー 
「拡張機能」ページで、 「 Instana Tracing AppService 」拡張機能を追加してください。 「 Instana Tracing AppService 」拡張機能をインストールしたら、その拡張機能を使用するように設定してください。
- Go 「拡張機能」ページに移動し、「 Instana Tracing AppService 」拡張機能の「 URL 」をクリックします。 「 Instana のApp Services用トレース」ダイアログが表示されます。
図 2. Instana のセットアップ Azure 関数のインストルメンテーション 
「 Instana の AppServices 用トレース」ウィンドウで、 「トレースを有効にする」 をオンに設定します。
オプション: 「64 ビットを有効にする (Enable 64 bit)」 をオンに設定します。
「 エージェントキー 」フィールドに、 Instana ホストエージェントのライセンスキーを入力してください。
「エンドポイントの URL 」フィールドで、次のいずれかの操作を実行します:
- SaaS: サーバーレス監視を行うには、エンドポイント URL を入力してください。
- セルフホスト:
https://<IP address of the Instana backend>/serverless形式でエンドポイントを入力し、INSTANA_DISABLE_CA_CHECKパラメータをtrueまたは1に設定します。
「ログ・レベル」 フィールドに、使用する以下のいずれかのログ・レベルを入力します。
- なし
- DEBUG
- INFO
- WARN
- ERROR
ログ情報は、 Azure Function アプリケーションのルート・フォルダーに生成されます。
「構成の更新」をクリックします。 Azure 機能の情報が保存されます。
「再始動」をクリックして、 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.dllInstana.Tracing.Core.Common.dllInstana.Tracing.Core.Instrumentation.dllInstana.Tracing.Core.Transport.dllInstana.Tracing.Api.dllCoreProfiler.soinstrumentation.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 を直接インストールしないでください。 アプリケーションがデプロイされた後に、重複したライブラリー・ファイルが存在する場合、トレースは機能しません。それから、Instana.Tracing.Core パッケージを削除し、このトピックですでに説明されている手順に従って、Dockerfile 内の release フォルダにライブラリファイルをコピーしてください。
対応しているトリガー
Instana がサポートする Azure Functions のトリガー一覧はこちらでご確認いただけます。 その中には、これまでにテストされたものもあり、その動作は知られています。 残りの部分については、インスツルメンテーションはまだテストされていません。 以下の表は、状態が変わり次第更新される。
テスト中に 1 つの動作が見られます。つまり、 Azure 関数の 「実行」 メソッドが STATICの場合、一部の欠落データは生成されたスパン (キュー・トリガーの場合は Function name や Trigger name など) 内にあります。 その理由は、 メソッドがSTATICである場合、 Instana のインストルメンテーションでは、 Run メソッドに関する必要なデータをすべて収集できないためです。 可能な限り、非定常的な方法を用いる。
| トリガー名 | テスト済み | STATIC 方式による可視スパン・データ | NON-STATIC メソッドを使用した可視スパン・データ |
|---|---|---|---|
| Blob | テストされていません。 | ||
| CosmosDB | テストされていません。 | ||
| イベント・グリッド | テストされていません。 | ||
| イベント・ハブ | テストされていません。 | ||
| Kafka | テストされていません。 | ||
| HTTP | インスツルメンテーションは、STATIC メソッドと NON-STATIC メソッドの両方で機能します。 | トリガー、 メソッド名、 ランタイム | トリガー、 メソッド名、 ランタイム、 関数名 |
| キュー | インスツルメンテーションは、NON-STATIC メソッドでのみ機能します。 | メソッド名、 ランタイム | トリガー、 メソッド名、 ランタイム、 関数名 |
| RabbitMQ | テストされていません。 | ||
| Service Bus | テストされていません。 | ||
| SignalR | テストされていません。 | ||
| 表 | テストされていません。 | ||
| タイマー | インスツルメンテーションは、STATIC メソッドと NON-STATIC メソッドの両方で機能します。 | トリガー、 メソッド名、 ランタイム | トリガー、 メソッド名、 ランタイム、 関数名 |
メトリックの表示
メトリックを表示するには、以下のステップを実行します。
- Instana のUIのサイドバーで、 「インフラストラクチャ」 を選択します。
- 特定のモニター対象ホストをクリックします。
その後、収集されたすべてのメトリックとモニター対象プロセスを含むホスト・ダッシュボードを表示できます。
メトリック
| メトリック名 | 説明 |
|---|---|
| 要求 | 結果として返される 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 サービス・インスタンスのリソース・グループ。 |