Rastreie e exporte métricas de integridade de endpoint para Prometheus e Datadog

Este artigo fornece uma visão geral do fornecimento de métricas de integridade de endpoint e mostra como usar a API de exportação de métricas para exportar métricas de endpoint para Prometheus e Datadog.

As métricas de integridade do endpoint medem infraestrutura e métricas como latência, taxa de solicitação, taxa de erro, uso de CPU, uso de memória, etc. Isso informa como sua infraestrutura de serviço está se comportando.

Requisitos

  • Acesso de leitura ao endpoint desejado e access tokens pessoal (PAT) que podem ser gerados em Configurações do usuário na interface do usuário do Databricks Machine Learning para acessar o endpoint.

  • Um endpoint de modelo existente. Você pode validar isso verificando a integridade do endpoint com o seguinte:

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
    
  • Valide a API de métricas de exportação:

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

Servindo definições de métricas de endpoint

Métrica

Descrição

Latência (ms)

Captura os tempos de latência de ida e volta mediana (P50) e 99º percentil (P99) dentro do Databricks. Isso não inclui latências adicionais relacionadas ao Databricks, como autenticação e limitação de taxa

Taxa de solicitação (por segundo)

Mede o número de solicitações processadas por segundo. Essa taxa é calculada somando o número de solicitações em um minuto e depois dividindo por 60 (o número de segundos em um minuto).

Taxa de erro de solicitação (por segundo)

Rastreia a taxa de respostas de erro HTTP 4xx e 5xx por segundo. Semelhante à taxa de solicitação, ela é compute agregando o número total de solicitações malsucedidas em um minuto e dividindo por 60.

Utilização do CPU (%)

Mostra a porcentagem média de utilização da CPU em todas as réplicas de servidor. No contexto da infraestrutura Databricks, uma réplica refere-se a nós de máquinas virtuais. Dependendo das configurações de simultaneidade configuradas, o Databricks cria várias réplicas para gerenciar o tráfego do modelo com eficiência.

Uso de memória (%)

Mostra a porcentagem média de utilização de memória em todas as réplicas de servidor.

simultaneidade de provisionamento

simultaneidade de provisionamento é o número máximo de solicitações paralelas que o sistema pode tratar. a simultaneidade de provisionamento se ajusta dinamicamente dentro dos limites mínimo e máximo da faixa de escalação compute , variando em resposta ao tráfego de entrada.

Uso de GPU (%)

Representa a utilização média da GPU, conforme relatado pelo exportador NVIDIA DCGM . Se o tipo de instância tiver várias GPUs, cada uma será rastreada separadamente (como gpu0, gpu1,…, gpuN). A utilização é calculada em média em todas as réplicas de servidor e amostrada uma vez por minuto. Nota: A amostragem pouco frequente significa que estas medições são mais precisas sob uma carga constante.

Uso de memória GPU (%)

Indica a porcentagem média de memória buffer de quadros utilizada em cada GPU com base nos dados do exportador NVIDIA DCGM. Tal como acontece com o uso da GPU, essas métricas são calculadas em média entre as réplicas e amostradas a cada minuto. É mais confiável sob condições de carga consistentes.

Integração do Prometheus

Observação

Independentemente do tipo de implantação que você possui em seu ambiente de produção, a configuração de extração deve ser semelhante.

A orientação nesta seção segue a documentação do Prometheus para iniciar um serviço do Prometheus localmente usando Docker.

  1. Escreva um arquivo de configuração yaml e nomeie-o prometheus.yml. O seguinte é um exemplo:

     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. começar Prometheus localmente com o seguinte comando:

       docker run \
       -p 9090:9090 \
       -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
       prom/prometheus
    
  3. Navegue até http://localhost:9090 para verificar se o serviço Prometheus local está funcionando.

  4. Verifique o status do raspador do Prometheus e depure os erros de: http://localhost:9090/targets?search=

  5. Assim que o destino estiver totalmente operacional, você poderá query as métricas fornecidas, como cpu_usage_percentage ou mem_usage_percentage, na IU.

Integração Datadog

Observação

A configuração preliminar para este exemplo é baseada na edição gratuita.

O Datadog possui uma variedade de agentes que podem ser implantados em diferentes ambientes. Para fins de demonstração, o seguinte inicia um agente Mac OS localmente que extrai o endpoint de métricas em seu host Databricks. A configuração para usar outros agentes deve seguir um padrão semelhante.

  1. registrar uma account datadog .

  2. Instale a integração do OpenMetrics no painel da suaaccount , para que o Datadog possa aceitar e processar os dados do OpenMetrics.

  3. Siga a documentação do Datadog para colocar seu agente Datadog em funcionamento. Para este exemplo, use a opção de pacote DMG para ter tudo instalado, incluindo launchctl e datadog-agent.

  4. Localize sua configuração do OpenMetrics. Para este exemplo, a configuração está em ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. A seguir está um exemplo de arquivo yaml de configuração.

     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. começar agente datadog usando launchctl start com.datadoghq.agent.

  6. Toda vez que você precisar fazer alterações em sua configuração, será necessário reiniciar o agente para selecionar a alteração.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. Verifique a integridade do agente com datadog-agent health.

  8. Verifique o status do agente com datadog-agent status. Você deve ser capaz de ver uma resposta como a seguinte. Caso contrário, depure com a mensagem de erro. Possíveis problemas podem ocorrer devido a tokens PAT expirados ou a um URL incorreto.

     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. O status do agente também pode ser visto na IU em:http://127.0.0.1:5002/.

    Se o seu agente estiver totalmente instalado e funcionando, você pode navegar de volta ao seu painel do Datadog para query as métricas. Você também pode criar um monitor ou alerta com base nos dados de métricas:https://app.datadoghq.com/monitors/create/métricas.