カスタム メトリックを追加する
適用対象: IoT Edge 1.5
IoT Edge 1.4
重要
サポートされているリリースは、IoT Edge 1.5 LTS と IoT Edge 1.4 LTS です。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日にサポートが終了します。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
システム モジュールによって提供される組み込みのメトリックに加えて、IoT Edge モジュールからカスタム メトリックを収集します。 組み込みのメトリックは、デプロイの正常性を把握するための優れた基準を提供します。 ただし、画像を完成させるには、カスタム モジュールの追加情報が必要になる場合があります。 カスタム モジュールは、適切な Prometheus クライアント ライブラリを使用してメトリックを生成することで、監視ソリューションに統合できます。 この追加情報を使用すると、要件に特化した新しいビューやアラートを有効にすることができます。
サンプル モジュール リポジトリ
メトリックを生成するためにインストルメント化されたカスタム モジュールの例については、azure-samples リポジトリを参照してください。 選択した言語のサンプルがまだ使用できない場合でも、一般的なアプローチが役に立ちます。
名前付け規則
一般的なガイダンスについては、Prometheus のドキュメントのベスト プラクティスを参照してください。 次の追加のレコメンデーションは、IoT Edge シナリオに役立ちます。
メトリック名の先頭にモジュール名を含めて、どのモジュールがメトリックを生成したかを明確にします。
IoT Hub 名または IoT Central アプリケーション名、IoT Edge デバイス ID、モジュール ID をラベル ("タグ"/"ディメンション" とも呼ばれる) としてすべてのメトリックに含めます。 この情報は、IoT Edge エージェントによって開始されたすべてのモジュールで環境変数として使用できます。 このアプローチは、サンプル リポジトリの例で示されています。 このコンテキストがないと、特定のメトリック値を特定のデバイスに関連付けることはできません。
ラベルにインスタンス ID を含めます。 インスタンス ID には、モジュールの起動時に生成される GUID のような一意の ID を指定できます。 インスタンス ID 情報は、バックエンドでモジュールのメトリックを処理するときに、モジュールの再起動を調整するのに役立ちます。
カスタム メトリックを収集するようにメトリック コレクターを構成する
カスタム モジュールでメトリックを生成したら、次の手順は、カスタム メトリックを収集して転送するようにメトリック コレクター モジュールを構成することです。
環境変数 MetricsEndpointsCSV
を更新して、カスタム モジュールのメトリック エンドポイントの URL を含める必要があります。 環境変数を更新するときは、メトリック コレクターの構成の例で示されているように、システム モジュールのエンドポイントを必ず含めてください。
Note
既定では、カスタム モジュールのメトリック エンドポイントは、メトリック コレクターがアクセスできるようにホスト ポートにマップする必要はありません。 明示的にオーバーライドされない限り、Linux では、両方のモジュールが、azure-iot-edge という名前のユーザー定義の Docker ブリッジ ネットワークで開始されます。
ユーザー定義の Docker ネットワークには、モジュール (コンテナー) 名を使用したモジュール間通信を可能にする既定の DNS リゾルバーが含まれています。 たとえば、module1 というカスタム モジュールが、http ポート 9600 でパス /metrics のメトリックを生成している場合、エンドポイント http://module1:9600/metrics から収集するようにコレクターを構成する必要があります。
IoT Edge デバイスで次のコマンドを実行して、http ポート 9600 のカスタム モジュールによってパス /metrics で生成されたメトリックにアクセスできるかどうかをテストします。
sudo docker exec replace-with-metrics-collector-module-name curl http://replace-with-custom-module-name:9600/metrics
カスタムの視覚化を追加する
Log Analytics でカスタム メトリックを受け取ると、カスタムの視覚化とアラートを作成できます。 監視ブックを拡張して、クエリを使用した視覚化を追加することができます。
すべてのメトリックは、IoT Hub または IoT Central アプリケーションのリソース ID に関連付けられています。 そのため、バッキング Log Analytics ワークスペースではなく、関連する IoT Hub または IoT Central アプリケーションの [ログ] ページから、カスタム メトリックが正しく取り込まれているかどうかを確認できます。 次の基本的な KQL クエリを使用して確認します。
InsightsMetrics
| where Name == 'replace-with-custom-metric-name'
インジェストを確認したら、新しいブックを作成するか、既存のブックを拡張することができます。 ブックのドキュメントとキュレーション IoT Edge ブックのクエリをガイドとして使用します。
結果に満足した場合は、チームとブックを共有したり、組織のリソース デプロイの一部としてプログラムでデプロイしたりできます。
次のステップ
キュレーション ブックを使用して、その他のメトリックの視覚化オプションを確認します。