メインコンテンツまでスキップ

サービングエンドポイントのヘルスメトリクスを追跡し、Prometheus と Datadog にエクスポートする

この記事では、エンドポイントヘルスメトリクスの提供の概要と、メトリクスエクスポート API を使用してエンドポイントメトリクスを PrometheusDatadog にエクスポートする方法を示します。

エンドポイントヘルスメトリクスは、レイテンシー、リクエストレート、エラーレート、CPU使用率、メモリ使用量などのインフラストラクチャとメトリクスを測定します。 これにより、サービス インフラストラクチャがどのように動作しているかがわかります。

必要条件

  • 目的のエンドポイントへの読み取りアクセスと、エンドポイントにアクセスするために Databricks Mosaic AI UI の [設定 ] で生成できる個人用アクセス トークン (PAT)。

  • 既存の モデルサービング エンドポイント。 これを検証するには、次のようにエンドポイントの正常性を確認します。

    Bash
    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
  • エクスポート メトリクス APIを検証します。

    Bash
    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]/metrics

配信エンドポイントメトリクスの定義

メトリクス

説明

レイテンシー(ミリ秒)

Databricks 内の中央値 (P50) と 99 パーセンタイル (P99) のラウンドトリップ待機時間をキャプチャします。 これには、認証やレート制限などの追加の Databricks 関連の待機時間は含まれません

リクエスト率(毎秒)

1秒あたりに処理されたリクエストの数を測定します。 このレートは、1分以内のリクエスト数を合計し、60(1分間の秒数)で割って計算されます。

要求エラー率 (/秒)

毎秒 4xx および 5xx の HTTP エラー応答の速度を追跡します。 リクエスト率と同様に、1分以内に失敗したリクエストの総数を集計し、60で割ったコンピュートです。

CPU 使用率 (%)

すべてのサーバ・レプリカの平均CPU使用率を示します。 Databricks インフラストラクチャのコンテキストでは、レプリカは仮想マシン ノードを指します。 構成された同時実行設定に応じて、Databricks は複数のレプリカを作成して、モデル トラフィックを効率的に管理します。

メモリ使用量 (%)

すべてのサーバーレプリカの平均メモリ使用率を示します。

プロビジョニングされた同時実行数

プロビジョニングされた同時実行性は、システムが処理できる並列要求の最大数です。 プロビジョニングの同時実行性は、コンピュートのスケールアウト範囲の最小制限と最大制限内で動的に調整され、受信トラフィックに応じて変化します。

GPU 使用率 (%)

NVIDIA DCGM エクスポーターによって報告された平均 GPU 使用率を表します。インスタンスタイプに複数の GPU がある場合、それぞれが個別に追跡されます ( gpu0gpu1、...、 gpuNなど)。 使用率は、すべてのサーバ・レプリカで平均化され、1 分に 1 回サンプリングされます。 手記: サンプリングの頻度が低いということは、このメトリクスが一定の負荷の下で最も正確であることを意味します。 このメトリクスは、サービングエンドポイントの メトリクス タブにあるサービングUIから表示します。

GPU メモリ使用量 (%)

NVIDIA DCGM エクスポーター データに基づく、各 GPU で使用されたフレーム バッファ メモリの平均パーセンテージを示します。 GPU 使用率と同様に、このメトリクスはレプリカ間で平均化され、毎分サンプリングされます。 一貫した負荷条件下で最も信頼性があります。 このメトリクスは、サービングエンドポイントの メトリクス タブにあるサービングUIから表示します。

プロメテウスの統合

注記

本番運用環境のデプロイメントのタイプに関係なく、スクレイピング構成は類似している必要があります。

このセクションのガイダンスは、Prometheus のドキュメントに従って、Docker を使用してローカルで Prometheus サービスを開始します。

  1. yaml設定ファイルを作成し、prometheus.ymlという名前を付けます。次に例を示します。

    YAML
    global:
    scrape_interval: 1m
    scrape_timeout: 10s
    scrape_configs:
    - job_name: 'prometheus'
    metrics_path: '/api/2.0/serving-endpoints/[ENDPOINT_NAME]/metrics'
    scheme: 'https'
    authorization:
    type: 'Bearer'
    credentials: '[PAT_TOKEN]'

    static_configs:
    - targets: ['dbc-741cfa95-12d1.dev.databricks.com']
  2. 次のコマンドを使用して、Prometheusをローカルで起動します。

    Bash
       docker run \
    -p 9090:9090 \
    -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
  3. [ http://localhost:9090 ]に移動して、ローカルのPrometheusサービスが稼働しているかどうかを確認します。

  4. Prometheusスクレイパーのステータスを確認し、次のエラーをデバッグします。 http://localhost:9090/targets?search=

  5. ターゲットが完全に稼働したら、UI で提供されたメトリクス ( cpu_usage_percentagemem_usage_percentageなど) をクエリできます。

Datadog インテグレーション

Datadog には、さまざまな環境にデプロイできるさまざまなエージェントがあります。

デモンストレーションの目的で、次の例では、Databricks ホストのメトリクスエンドポイントをスクレイピングする Mac OS エージェントをローカルで起動します。 他のエージェントを使用するための構成も同様のパターンです。

注記

この例の事前設定は、無料版に基づいています。

Datadog は、Datadog をモデルサービングエンドポイントに接続して、コードなしでエンドポイントメトリクスを監視する Databricks インテグレーションも提供しています。 モデルサービング構成を Datadog に接続する方法については、Datadog のドキュメントを参照してください。

  1. 登録する a Datadog アカウント.

  2. アカウントダッシュボードに OpenMetrics インテグレーションをインストールすると、Datadog が OpenMetrics データを受け入れて処理できるようになります。

  3. Datadog のドキュメントに従って、Datadog エージェントを稼働させてください。この例では、DMG パッケージ オプションを使用して、 launchctldatadog-agentを含むすべてのものをインストールします。

  4. OpenMetricsの設定を見つけます。 この例では、設定は ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.defaultです。 次に、設定ファイル yaml 例を示します。

    YAML

    instances:
    - openmetrics_endpoint: https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]/metrics

    metrics:
    - cpu_usage_percentage:
    name: cpu_usage_percentage
    type: gauge
    - mem_usage_percentage:
    name: mem_usage_percentage
    type: gauge
    - provisioned_concurrent_requests_total:
    name: provisioned_concurrent_requests_total
    type: gauge
    - request_4xx_count_total:
    name: request_4xx_count_total
    type: gauge
    - request_5xx_count_total:
    name: request_5xx_count_total
    type: gauge
    - request_count_total:
    name: request_count_total
    type: gauge
    - request_latency_ms:
    name: request_latency_ms
    type: histogram

    tag_by_endpoint: false

    send_distribution_buckets: true

    headers:
    Authorization: Bearer [PAT]
    Content-Type: application/openmetrics-text
  5. launchctl start com.datadoghq.agentを使用して Datadog Agent を起動します。

  6. 設定を変更する必要があるたびに、変更を反映させるためにエージェントを再起動する必要があります。

    Bash
     launchctl stop com.datadoghq.agent
    launchctl start com.datadoghq.agent
  7. エージェントの正常性を datadog-agent healthで確認します。

  8. datadog-agent status でエージェントのステータスを確認してください。 次のような応答が表示されるはずです。 そうでない場合は、エラー メッセージを表示してデバッグします。 潜在的な問題は、PAT トークンの有効期限が切れているか、URL が正しくないことが原因である可能性があります。

    Bash
     openmetrics (2.2.2)
    -------------------
    Instance ID: openmetrics: xxxxxxxxxxxxxxxx [OK]
    Configuration Source: file:/opt/datadog-agent/etc/conf.d/openmetrics.d/conf.yaml.default
    Total Runs: 1
    Metric Samples: Last Run: 2, Total: 2
    Events: Last Run: 0, Total: 0
    Service Checks: Last Run: 1, Total: 1
    Average Execution Time : 274ms
    Last Execution Date : 2022-09-21 23:00:41 PDT / 2022-09-22 06:00:41 UTC (xxxxxxxx)
    Last Successful Execution Date : 2022-09-21 23:00:41 PDT / 2022-09-22 06:00:41 UTC (xxxxxxx)
  9. エージェントのステータスは、UIの http://127.0.0.1:5002/ からも確認できます。

    エージェントが完全に稼働している場合は、Datadog ダッシュボードに戻ってメトリクスを照会できます。 メトリクス data:https://app.datadoghq.com/monitors/create/metricに基づいてモニターまたはアラートを作成することもできます。