Compartilhar via


Acompanhar e exportar as métricas de integridade de serviço do ponto de extremidade para o Prometheus e o Datadog

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

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

Requisitos

  • Acesso de leitura ao ponto de extremidade desejado e ao token de acesso pessoal (PAT) que pode ser gerado nas Configurações na interface do usuário do Databricks Mosaic AI para acessar o ponto de extremidade.

  • Um ponto de extremidade do model serving existente. Você pode validar isso verificando a integridade do ponto de extremidade 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
    

Definições de métricas do ponto de extremidade de serviço

Métrica Descrição
Latência (ms) Captura a mediana (P50) e o 99º percentil (P99) dos tempos de latência de ida e volta no Azure Databricks. 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 totalizando o número de solicitações em um minuto e, em seguida, dividindo por 60 (o número de segundos em um minuto).
Taxa de erros de solicitação (por segundo) Acompanha a taxa de respostas de erro HTTP 4xx e 5xx por segundo. Semelhante à taxa de solicitação, ela é calculada agregando o número total de solicitações malsucedidas em um minuto e dividindo por 60.
Uso de CPU (%) Mostra o percentual médio de utilização da CPU em todas as réplicas de servidor. No contexto da infraestrutura do Databricks, uma réplica refere-se aos nós de máquina virtual. Dependendo das configurações de simultaneidade definidas, o Databricks cria várias réplicas para gerenciar o tráfego do modelo com eficiência.
Uso de memória (%) Mostra o percentual médio de utilização de memória em todas as réplicas de servidor.
Simultaneidade provisionada A simultaneidade provisionada é o número máximo de solicitações paralelas que o sistema pode manipular. A simultaneidade provisionada ajusta dinamicamente dentro dos limites mínimo e máximo do intervalo de expansão de computação, 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 média da utilização é calculada em todas as réplicas de servidor e a amostra é obtida uma vez por minuto. Observação: uma amostragem irregular significa que essa métrica é mais precisa sob uma carga constante.
Uso de memória da GPU (%) Indica o percentual médio de memória de imagem utilizada em cada GPU com base nos dados do exportador NVIDIA DCGM. Assim como acontece com o uso de GPU, essa métrica é a média entre réplicas e a amostra é obtida a cada minuto. Ela é mais confiável em condições de carga consistentes.

Integração do Prometheus

Observação

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

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

  1. Escreva um yaml arquivo de configuração e nomeie-o prometheus.yml. A seguir, é mostrado 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. Inicie o Prometheus localmente com o comando a seguir:

       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á em execução.

  4. Verifique o status do extrator do Prometheus e os erros de depuração de: http://localhost:9090/targets?search=

  5. Depois que o destino estiver totalmente em execução, você poderá consultar as métricas fornecidas, como cpu_usage_percentage ou mem_usage_percentage, na interface do usuário.

Integração da Datadog

Observação

A configuração preliminar para este exemplo baseia-se na edição gratuita.

A Datadog tem uma variedade de agentes que podem ser implantados em ambientes diferentes. Para fins de demonstração, a seguir inicia um agente Mac OS localmente que extrai o ponto final das métricas no seu anfitrião do Databricks. A configuração para usar outros agentes deve estar em um padrão semelhante.

  1. Registre uma conta da Datadog.

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

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

  4. Localize a 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 de configuração 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. Inicie o agente da Datadog usando launchctl start com.datadoghq.agent.

  6. Sempre que você precisar fazer alterações na configuração, será necessário reiniciar o agente para pegar 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ê deverá conseguir ver uma resposta como a seguinte. Caso contrário, depure com a mensagem de erro. Possíveis problemas podem ser devido a um token PAT expirado 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 Interface do usuário em: http://127.0.0.1:5002/.

    Se o agente estiver totalmente em execução, você poderá navegar de volta para o painel da Datadog para consultar as métricas. Você também pode criar um monitor ou alerta com base nos dados de métrica:https://app.datadoghq.com/monitors/create/metric.