モニタリング Azure ファンクション・サービス
Instana UI で Azure Functions Service に関連するメトリクスを表示するには、Instana ホストエージェントをインストールし、「センサーの設定」セクションで説明したように Azure センサーを有効にする必要があります。 Azure Functions センサーは、Instana ホストエージェントをインストールすると自動的に有効になります。
詳細については、 ホストエージェントと センサーの設定を参照してください。
Instana UI で Azure Functions トレースを表示するには、 Instana Azure Functions トレーサのインストールセクションで説明するように、Instana Azure Functions トレーサを 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 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 にインストールするには、次の手順を実行します:
Microsoft Azure ポータルにログオンする。
計測したい Azure Function を探す。
- 開発ツールパネルの拡張機能をクリックします。
図 1. Azure Portal の 関数の拡張機能メニュー Azure 
拡張機能ページで、 Instana Tracing AppService 拡張機能を追加します。 Instana Tracing AppService エクステンションをインストールしたら、エクステンションを使用するように設定します。
- エクステンション ページに移動し URLAppService をクリックします。 Instana Tracing for App Services] ダイアログが表示されます。
図 2. Instana Azure Function Instrumentation のセットアップ 
Instana Tracing for AppServices ウィンドウで、 Enable Tracing をオンに設定します。
オプション: 64ビットを有効にするをオンに設定する。
エージェントキー] フィールドに、Instana ホストエージェントのライセンスキーを入力します。
Endpoint URL ]フィールドで、以下の手順のいずれかを実行します:
- SaaS: サーバーレス監視用のエンドポイント URL を入力する。
- セルフホスト:
https://<IP address of the Instana backend>/serverless形式でエンドポイントを入力し、INSTANA_DISABLE_CA_CHECKパラメータをtrueまたは1に設定する。
Log-Level フィールドに、使用したい以下のログレベルのいずれかを入力する:
- なし
- DEBUG
- INFO
- WARN
- ERROR
ログ情報は、 Azure 関数アプリケーションのルートフォルダに生成されます。
Update Configをクリックします。 この情報は、 Azure 関数のために保存される。
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.dllInstana.Tracing.Core.Common.dllInstana.Tracing.Core.Instrumentation.dllInstana.Tracing.Core.Transport.dllInstana.Tracing.Api.dllCoreProfiler.soinstrumentation.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 "
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 | テストしていない。 | ||
| テーブル | テストしていない。 | ||
| タイマー | 計装は、静的方法と非静的方法の両方で機能する。 | トリガー、 メソッド名、 ランタイム | トリガー、 メソッド名、 ランタイム、 関数名 |
メトリックの表示
メトリクスを表示するには、以下の手順を実行します:
- Instana UI のサイドバーで、 インフラストラクチャを選択します。
- 特定の監視ホストをクリックします。
その後、収集されたすべてのメトリクスと監視されたプロセスを含むホスト・ダッシュボードを見ることができます。
メトリック
| メトリック名 | 説明 |
|---|---|
| 要求 | 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サービスインスタンスのリソースグループ。 |