다음을 통해 공유


서비스 엔드포인트 상태 메트릭을 Prometheus 및 Datadog로 추적 및 내보내기

이 문서에서는 엔드포인트 상태 메트릭을 제공하는 개요를 제공하고 메트릭 내보내기 API를 사용하여 엔드포인트 메트릭을 PrometheusDatadog로 내보내는 방법을 보여 줍니다.

엔드포인트 상태 메트릭은 대기 시간, 요청 속도, 오류 비율, CPU 사용량, 메모리 사용량 등과 같은 인프라 및 메트릭을 측정합니다. 그러면 서비스 인프라가 어떻게 작동하는지 알 수 있습니다.

요구 사항

  • 엔드포인트에 액세스하기 위해 Databricks Machine Learning UI의 설정 생성할 수 있는 원하는 엔드포인트 및 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
    

엔드포인트 메트릭 정의 제공

메트릭 설명
대기 시간(ms) Azure Databricks 내에서 중앙값(P50) 및 99번째 백분위수(P99) 왕복 대기 시간을 캡처합니다. 여기에는 인증 및 속도 제한과 같은 추가 Databricks 관련 대기 시간이 포함되지 않습니다.
요청 속도(초당) 초당 처리된 요청 수를 측정합니다. 이 속도는 1분 이내에 요청 수를 합산한 다음 60(분 단위의 초 수)으로 나누어 계산됩니다.
요청 오류율(초당) 초당 4xx 및 5xx HTTP 오류 응답의 속도를 추적합니다. 요청 속도와 마찬가지로 1분 이내에 실패한 총 요청 수를 집계하고 60으로 나누어 계산됩니다.
CPU 사용량(%) 모든 서버 복제본(replica) 평균 CPU 사용률을 표시합니다. Databricks 인프라의 컨텍스트에서 복제본(replica) 가상 머신 노드를 참조합니다. 구성된 동시성 설정에 따라 Databricks는 모델 트래픽을 효율적으로 관리하기 위해 여러 복제본(replica) 만듭니다.
메모리 사용량(%) 모든 서버 복제본(replica) 평균 메모리 사용률을 표시합니다.
프로비전된 동시성 프로비전된 동시성은 시스템에서 처리할 수 있는 최대 병렬 요청 수입니다. 프로비전된 동시성은 들어오는 트래픽에 따라 달라지는 컴퓨팅 스케일 아웃 범위의 최소 및 최대 제한 내에서 동적으로 조정됩니다.
GPU 사용량(%) NVIDIA DCGM 내보내기에서 보고한 평균 GPU 사용률을 나타냅니다. 인스턴스 형식에 여러 GPU가 있는 경우 각각 개별적으로 추적됩니다(예: gpu0, , gpu1..., gpuN). 사용률은 모든 서버 복제본(replica) 평균이며 1분에 한 번 샘플링됩니다. 참고: 드물게 샘플링한다는 것은 이 메트릭이 일정한 부하 하에서 가장 정확하다는 것을 의미합니다.
GPU 메모리 사용량(%) NVIDIA DCGM 내보내기 데이터를 기반으로 각 GPU에서 사용된 프레임 버퍼 메모리의 평균 백분율을 나타냅니다. GPU 사용량과 마찬가지로 이 메트릭은 복제본(replica) 평균이며 1분마다 샘플링됩니다. 일관된 부하 조건에서 가장 안정적입니다.

Prometheus 통합

참고 항목

프로덕션 환경에 있는 배포 유형에 관계없이 스크래핑 구성은 유사해야 합니다.

이 섹션의 지침은 Prometheus 설명서에 따라 docker를 사용하여 Prometheus 서비스를 로컬로 시작합니다.

  1. 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"]
    
  2. 다음 명령을 사용하여 Prometheus를 로컬로 시작합니다.

       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_percentage 또는 mem_usage_percentage)을 쿼리할 수 있습니다.

Datadog 통합

참고 항목

이 예제에 대한 예비 설정은 무료 버전을 기반으로 합니다.

Datadog 에는 다양한 환경에 배포할 수 있는 다양한 에이전트가 있습니다. 데모를 위해 다음에서는 Databricks 호스트에서 메트릭 엔드포인트를 긁어내는 Mac OS 에이전트를 로컬로 시작합니다. 다른 에이전트를 사용하기 위한 구성은 비슷한 패턴이어야 합니다.

  1. datadog 계정을 등록합니다.

  2. Datadog에서 OpenMetrics 데이터를 수락하고 처리할 수 있도록 계정 대시보드에 OpenMetrics 통합을 설치합니다.

  3. Datadog 설명서따라 Datadog 에이전트를 실행합니다. 이 예제에서는 DMG 패키지 옵션을 사용하여 포함 및 datadog-agent을 포함한 launchctl 모든 항목을 설치합니다.

  4. 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
    
  5. 를 사용하여 datadog 에이전트를 시작합니다 launchctl start com.datadoghq.agent.

  6. 구성을 변경해야 할 때마다 에이전트를 다시 시작하여 변경 내용을 선택해야 합니다.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. 를 사용하여 에이전트 상태를 datadog-agent health확인합니다.

  8. 를 사용하여 에이전트 상태 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)
    
  9. 에이전트 상태 UI에서 확인할http://127.0.0.1:5002/ 수도 있습니다.

    에이전트가 완전히 실행되고 있는 경우 Datadog 대시보드로 다시 이동하여 메트릭을 쿼리할 수 있습니다. 메트릭 데이터를https://app.datadoghq.com/monitors/create/metric 기반으로 모니터 또는 경고를 만들 수도 있습니다.