サービングエンドポイントのヘルスメトリクスを追跡し、Prometheus と Datadog にエクスポートする
この記事では、エンドポイントヘルスメトリクスの提供の概要と、メトリクスエクスポート API を使用してエンドポイントメトリクスを Prometheus と Datadog にエクスポートする方法を示します。
エンドポイントヘルスメトリクスは、レイテンシー、リクエストレート、エラーレート、CPU使用率、メモリ使用量などのインフラストラクチャとメトリクスを測定します。 これにより、サービス インフラストラクチャがどのように動作しているかがわかります。
必要条件
-
目的のエンドポイントへの読み取りアクセスと、エンドポイントにアクセスするために Databricks Mosaic AI UI の [設定 ] で生成できる個人用アクセス トークン (PAT)。
-
既存の モデルサービング エンドポイント。 これを検証するには、次のようにエンドポイントの正常性を確認します。
Bashcurl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
-
エクスポート メトリクス APIを検証します。
Bashcurl -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 がある場合、それぞれが個別に追跡されます ( |
GPU メモリ使用量 (%) | NVIDIA DCGM エクスポーター データに基づく、各 GPU で使用されたフレーム バッファ メモリの平均パーセンテージを示します。 GPU 使用率と同様に、このメトリクスはレプリカ間で平均化され、毎分サンプリングされます。 一貫した負荷条件下で最も信頼性があります。 このメトリクスは、サービングエンドポイントの メトリクス タブにあるサービングUIから表示します。 |
プロメテウスの統合
本番運用環境のデプロイメントのタイプに関係なく、スクレイピング構成は類似している必要があります。
このセクションのガイダンスは、Prometheus のドキュメントに従って、Docker を使用してローカルで Prometheus サービスを開始します。
-
yaml
設定ファイルを作成し、prometheus.yml
という名前を付けます。次に例を示します。YAMLglobal:
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'] -
次のコマンドを使用して、Prometheusをローカルで起動します。
Bashdocker run \
-p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus -
[
http://localhost:9090
]に移動して、ローカルのPrometheusサービスが稼働しているかどうかを確認します。 -
Prometheusスクレイパーのステータスを確認し、次のエラーをデバッグします。
http://localhost:9090/targets?search=
-
ターゲットが完全に稼働したら、UI で提供されたメトリクス (
cpu_usage_percentage
やmem_usage_percentage
など) をクエリできます。
Datadog インテグレーション
Datadog には、さまざまな環境にデプロイできるさまざまなエージェントがあります。
デモンストレーションの目的で、次の例では、Databricks ホストのメトリクスエンドポイントをスクレイピングする Mac OS エージェントをローカルで起動します。 他のエージェントを使用するための構成も同様のパターンです。
この例の事前設定は、無料版に基づいています。
Datadog は、Datadog をモデルサービングエンドポイントに接続して、コードなしでエンドポイントメトリクスを監視する Databricks インテグレーションも提供しています。 モデルサービング構成を Datadog に接続する方法については、Datadog のドキュメントを参照してください。
-
登録する a Datadog アカウント.
-
アカウントダッシュボードに OpenMetrics インテグレーションをインストールすると、Datadog が OpenMetrics データを受け入れて処理できるようになります。
-
Datadog のドキュメントに従って、Datadog エージェントを稼働させてください。この例では、DMG パッケージ オプションを使用して、
launchctl
やdatadog-agent
を含むすべてのものをインストールします。 -
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 -
launchctl start com.datadoghq.agent
を使用して Datadog Agent を起動します。 -
設定を変更する必要があるたびに、変更を反映させるためにエージェントを再起動する必要があります。
Bashlaunchctl stop com.datadoghq.agent
launchctl start com.datadoghq.agent -
エージェントの正常性を
datadog-agent health
で確認します。 -
datadog-agent status
でエージェントのステータスを確認してください。 次のような応答が表示されるはずです。 そうでない場合は、エラー メッセージを表示してデバッグします。 潜在的な問題は、PAT トークンの有効期限が切れているか、URL が正しくないことが原因である可能性があります。Bashopenmetrics (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) -
エージェントのステータスは、UIの http://127.0.0.1:5002/ からも確認できます。
エージェントが完全に稼働している場合は、Datadog ダッシュボードに戻ってメトリクスを照会できます。 メトリクス data:https://app.datadoghq.com/monitors/create/metricに基づいてモニターまたはアラートを作成することもできます。