サービングエンドポイントのヘルスメトリクスを追跡し、Prometheus と Datadogにエクスポートする
この記事では、エンドポイントのヘルスメトリクスの提供の概要と、メトリクスエクスポート API を使用してエンドポイントメトリクスを Prometheus と Datadog にエクスポートする方法を示します。
エンドポイントの正常性メトリクスは、遅延、要求率、エラー率、CPU 使用率、メモリ使用量などのインフラストラクチャとメトリクスを測定します。 これにより、サービス提供インフラストラクチャの動作がわかります。
要件
目的のエンドポイントへの読み取りアクセスと、エンドポイントにアクセスするために Databricks Mosaic AIUI の [設定] で生成できる個人用アクセストークン (PAT)。
既存の モデルサービング エンドポイント。 これを検証するには、次のようにエンドポイントの正常性を確認します。
curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
エクスポートメトリクス API を検証します。
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 分以内の要求数を合計し、60 (1 分間の秒数) で割って計算されます。 |
要求エラー率 (/秒) |
毎秒の 4xx および 5xx HTTP エラー応答のレートを追跡します。 要求率と同様に、1 分以内に失敗した要求の総数を集計し、60 で割ったコンピュートです。 |
CPU 使用率 (%) |
すべてのサーバーレプリカの平均 CPU 使用率を示します。 Databricks インフラストラクチャのコンテキストでは、レプリカは仮想マシン ノードを指します。 構成されたコンカレンシー設定に応じて、Databricks は複数のレプリカを作成し、モデル トラフィックを効率的に管理します。 |
メモリ使用量 (%) |
すべてのサーバーレプリカの平均メモリー使用率を示します。 |
プロビジョニングされた同時実行数 |
プロビジョニングされた同時実行数は、システムが処理できる並列要求の最大数です。 プロビジョニングされた同時実行は、コンピュートスケールアウト範囲の下限と上限の範囲内で動的に調整され、受信トラフィックに応じて変化します。 |
GPU 使用率 (%) |
NVIDIA DCGM エクスポーターによって報告された平均 GPU 使用率を表します。インスタンスタイプに複数の GPU がある場合、それぞれが個別に追跡されます ( |
GPU メモリ使用率 (%) |
NVIDIA DCGM エクスポータ データに基づいて、各 GPU で使用されているフレーム バッファ メモリの平均割合を示します。 GPU 使用率と同様に、このメトリクスはレプリカ間で平均化され、毎分サンプリングされます。 これは、一貫した負荷条件下で最も信頼性があります。 |
Prometheusの統合
注
運用環境にある展開の種類に関係なく、スクレイピング構成は類似している必要があります。
このセクションのガイダンスは、Docker を使用してローカルで Prometheus サービスを開始するための Prometheus ドキュメントに従います。
yaml
設定ファイルを作成し、prometheus.yml
という名前を付けます。次に例を示します。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"]
次のコマンドを使用して、プロメテウスをローカルで起動します。
docker run \ -p 9090:9090 \ -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus
http://localhost:9090
に移動して、ローカルのPrometheusサービスが稼働しているかどうかを確認します。プロメテウススクレーパーのステータスを確認し、次の場所からエラーをデバッグします。
http://localhost:9090/targets?search=
ターゲットが完全に起動して実行されたら、UI で
cpu_usage_percentage
やmem_usage_percentage
などの指定されたメトリックをクエリーできます。
Datadogの統合
注
この例の予備設定は、無料版に基づいています。
Datadog には、さまざまな環境にデプロイできるさまざまなエージェントがあります。 デモンストレーションの目的で、次の例では、Databricks ホストのメトリクスエンドポイントをスクレイピングする Mac OS エージェントをローカルで起動します。 他のエージェントを使用するための構成も同様のパターンである必要があります。
登録する Datadog アカウント。
アカウントダッシュボードに OpenMetrics インテグレーションをインストールすると、Datadog は OpenMetrics データを受け入れて処理できるようになります。
Datadog のドキュメントに従って、Datadog エージェントを起動して実行してください。この例では、DMG パッケージ オプションを使用して、
launchctl
やdatadog-agent
を含むすべてのものをインストールします。OpenMetrics の構成を見つけます。 この例では、設定は
~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default
にあります。 次に、構成ファイル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 エージェントを起動します。構成を変更する必要があるたびに、エージェントを再起動して変更を取得する必要があります。
launchctl stop com.datadoghq.agent launchctl start com.datadoghq.agent
datadog-agent health
でエージェントの正常性を確認します。datadog-agent status
でエージェントのステータスを確認します。次のような応答が表示されるはずです。 そうでない場合は、エラー メッセージでデバッグします。 潜在的な問題は、PAT トークンの有効期限が切れているか、URL が正しくないことが原因である可能性があります。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)
エージェントの状態は、次の UI から http://127.0.0.1:5002/ でも確認できます。
エージェントが完全に稼働している場合は、Datadog ダッシュボードに戻ってメトリクスを照会できます。 メトリクス data:https://app.datadoghq.com/monitors/create/metricに基づいてモニターまたはアラートを作成することもできます。