GPUの監視

Instana のUIでGPUのメトリクスを監視できます。 GPUmetricsを監視するには、 NVIDIA GPU Operatorをインストールし、 Instana Distribution of OpenTelemetry Collector( IDOT )やオープンソースの OpenTelemetry Collectorなどの OpenTelemetry-based データコレクターを設定してください。

NVIDIA GPU Operator

GPU環境に NVIDIA GPU Operatorをインストールすることで、GPUメトリクスの管理や収集が可能になります。 必要に応じて、 NVIDIA ドライバー(CUDAを有効にするため)、GPU用の Kubernetes デバイスプラグイン、および NVIDIA コンテナツールキットなどのコンポーネントを有効にしてください。 詳細については、 NVIDIA GPU Operator を参照してください。

helm install gpu-operator \
   --repo https://helm.ngc.nvidia.com/nvidia \
   --namespace gpu-operator \
   --create-namespace \
   -set driver.enabled=false \
   -set toolkit.enabled=false \
   -set devicePlugin.enabled=false \
   -set mig.strategy=single \
   gpu-operator
 

NVIDIA のGPUオペレーターは、デフォルトで NVIDIA Data Center GPU Manager(DCGM)をインストールします。 DCGM Exporterは、 NVIDIA 用DCGMツールであり、ユーザーがGPUメトリクスを収集してワークロードの挙動を把握したり、クラスタ内のGPUを監視したりできるようにするものです。

DCGM Exporterは、監視ソリューション向けに、 HTTP エンドポイント(/metrics)でGPUメトリクスを公開します。 詳細については、 「DCGM Exporter」 を参照してください。

Instana DCGMエクスポーターを通じてMIG(マルチインスタンスGPU)をサポートし、パーティション化されたGPUの使用状況を可視化します。 MIGインスタンスごとに個別にメトリクスを収集できるため、共有環境においてGPUリソースをより効果的に監視・割り当てることができます。

OpenTelemetry-based データ収集担当者

「 OpenTelemetry 」コレクターを使用することで、GPUの OpenTelemetry データを「 Instana 」エージェントまたは「 Instana 」バックエンドに転送できます。

以下の OpenTelemetry コレクターのいずれかを使用できます:
  • Instana OpenTelemetry Collector( IDOT )のディストリビューション: IDOT は、GPUの監視設定を簡素化する、あらかじめ設定済みで最適化されたディストリビューションです。 詳細については、 IDOT および「 OpenTelemetry 」プロジェクトをご覧ください。
  • オープンソースの OpenTelemetry コレクター: OpenTelemetry コレクターは、 OpenTelemetry エコシステムのコアコンポーネントであり、テレメトリデータの収集と処理のためのベンダーに依存しない機能を提供します。また、 IDOT が利用できない環境や、 exportFor のカスタム展開においても利用可能です。 詳細については、 「 OpenTelemetry Collector」 を参照してください。

Instana 以下のモデルに対応し、GPUデータを収集します:

  • エージェントモデル:このパターンでは、GPUデータはまず Instana エージェントに送信され、エージェントがデータの集約を支援した上で、 Instana バックエンドに送信します。
  • エージェントレスモデル:このパターンでは、GPUデータはエージェントを経由せずに、 Instana バックエンドに直接送信されます。

テレメトリデータを Instana エージェントに転送する(エージェントパターン)

  1. 以下のスニペットは、 OpenTelemetry コレクターがprotocolを使用して、テレメトリデータをローカルの OTLP/gRPCInstana ホストエージェントに転送するための典型的な設定を示しています。

    次のように、 config.yaml などの ` YAML ` ファイルを作成します

    receivers:
      otlp:
        protocols:
          grpc:
      prometheus/nvidia-dcgm:
        config:
          scrape_configs:
            - job_name: 'nvidia-dcgm'
              scrape_interval: 10s
              static_configs:
                - targets: 
                  - "$(DCGM_EXPORTOR_ENDPOINT)"
    processors:
      batch:
      resource:
        attributes:
          - key: server.address
            from_attribute: net.host.name
            action: insert
          - key: server.port
            from_attribute: net.host.port
            action: insert
          - key: service.name
            value: nvidia-dcgm
            action: update
          - key: INSTANA_PLUGIN
            value: dcgm
            action: insert
    exporters:
      otlp:
        endpoint: "$(INSTANA_AGENT_HOST):4317"
        tls:
          insecure: true
    service:
      pipelines:
        metrics/nvidia-dcgm:
          receivers: [prometheus/nvidia-dcgm]
          processors: [batch, resource]
          exporters: [otlp]
     
    注: Data Center GPU Manager(DCGM)は、GPUの監視および管理を行うための NVIDIA ツールです。 このエクスポーターは、 Prometheus によるスクレイピング用にGPUメトリクスを公開します。 DCGM_EXPORTER_ENDPOINT は、DCGM エクスポーターが実行されるエンドポイントを表します。 例えば、DCGMの値は 127.0.0.1:9400 です。

    以下の例は、 OTLP/HTTP プロトコルを使用してテレメトリデータをローカルの Instana ホストエージェントに転送するための、 OpenTelemetry コレクターの一般的な設定を示しています。

    exporters:
      otlphttp:
        endpoint: "http://$(INSTANA_AGENT_HOST):4318"
        tls:
          insecure: true
     
    • DCGM Exporterのエンドポイントを使用して、フィールド DCGM_EXPORTOR_ENDPOINT を設定します。
    • 接続先の Instana エージェントのIPアドレスまたはホスト名を INSTANA_AGENT_HOST このフィールドに入力してください。
    • Instana OTLP の標準ポート番号を使用します。例えば、4317は OTLP/gRPC 、4318は OTLP/HTTP、などです。
  2. ファイル config.yaml 内のすべての設定変更が完了したら、次のコマンドを実行して OpenTelemetry コレクターを使用してください:
docker run -d -p 4317:4317 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
 

テレメトリデータを Instana バックエンドに転送する(エージェントレス方式)

OpenTelemetry Collector を使用して OpenTelemetry のデータを Instana バックエンドに転送するには、以下の手順を実行してください:

  1. 前のセクションで作成した ` config.yaml ` のような ` YAML ` ファイルを作成します。 Instana のエージェントエンドポイントを endpoint 、 Instana のバックエンドエンドポイントに変更してください。 OpenTelemetry のデータが送信される際、バックエンドコンポーネント otlp-acceptor の特別なエンドポイントが使用されます。 Instana のバックエンドでは、検証のために Instana のエージェントキーが必要です。 Instana バックエンドでは、リソース属性として host.iddevice.idfaas.id、またはが必要となります。

    exporters:
      otlp:
        endpoint: INSTANA_OTLP_GRPC_BACKEND:4317
        headers:
          x-instana-key: xxxxxxx
          x-instana-host: xxxx
     

    注:

    • Instanaotlp-acceptor バックエンドのコンポーネントの正しいドメイン名を、この INSTANA_OTLP_GRPC_BACKEND フィールドに設定してください。 Instana バックエンドのエンドポイントに関する詳細については、 「Self-Hosted Instana バックエンド otlp-acceptor のエンドポイント」 または otlp-acceptor「 SaaS Instana バックエンド otlp-acceptor のエンドポイント」 を参照してください
    • Instana バックエンドをターゲットにするため、 Instanax-instana-key エージェントのエージェントキーをフィールドに設定します。 エージェントキーを確認するには、 Instana UIのナビゲーションバーで [More] > [Agents] をクリックし、次に [Install Agents ] > [ Windows ] をクリックします。
    • アプリケーションまたはシステムに、 faas.id、または device.id リソース host.id属性が定義されていない場合は、ホスト ID を x-instana-host フィールドに設定してください。
    • Instana OTLP の標準ポート番号を使用します。例えば、4317は OTLP/gRPC 、4318は OTLP/HTTP、などです。 ポート443もサポートされています OTLP/HTTP
  2. ファイル config.yaml 内のすべての設定変更が完了したら、次のコマンドを実行して OpenTelemetry コレクターを使用してください:
docker run -d -p 4317:4317 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
 

メトリックの表示

OpenTelemetry ( OTel )データコレクターをインストールすると、 Instana のUIでGPUのメトリクスを確認できるようになります。

  1. 「 Instana 」のUIを開き、「 Infrastructure 」をクリックします。 次に、 「インフラストラクチャの分析」 をクリックします。
  2. エンティティのタイプ一覧から 「OTEL Dcgm」 を選択してください。
  3. OTEL Dcgm 」エンティティ・タイプのインスタンスをクリックすると、関連するダッシュボードが開きます。

GPUメトリック

メトリック 説明
DCGM_FI_DEV_GPU_TEMP GPUの温度(摂氏)
DCGM_FI_DEV_POWER_USAGE 消費電力(ワット)
DCGM_FI_DEV_GPU_UTIL GPU使用率(%)
DCGM_FI_DEV_MEM_COPY_UTIL メモリコピーエンジンの使用率
DCGM_FI_DEV_FB_USED 使用済みのフレームバッファメモリ
DCGM_FI_DEV_FB_FREE 空きフレームバッファメモリ
DCGM_FI_DEV_SM_CLOCK ストリーミング・マルチプロセッサのクロック周波数
DCGM_FI_DEV_MEM_CLOCK GPU メモリクロック周波数