Pular para o conteúdo principal

Rastrear e exportar o serviço endpoint métricas de saúde para o Prometheus e o Datadog

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

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

Requisitos

  • Acesso de leitura ao endpoint desejado e ao access token pessoal (PAT), que pode ser gerado nas Configurações da interface do usuário Databricks para acessar o endpoint.

  • Um modelo de serviço existente endpoint. O senhor pode validar isso verificando a integridade do endpoint com o seguinte:

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

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

Definições de métricas de endpoint de serviço

Métrica

Descrição

Latência (ms)

Captura os tempos de latência de ida e volta medianos (P50) e do 99º percentil (P99) no 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 totalizando o número de solicitações em um minuto e dividindo por 60 (o número de segundos em um minuto).

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

Monitora 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 da CPU (%)

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

Uso de memória (%)

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

provisionamento concurrency

A simultaneidade de provisionamento é o número máximo de solicitações paralelas que o sistema pode atender. A simultaneidade do provisionamento se ajusta dinamicamente dentro dos limites mínimo e máximo do intervalo de escala-out do compute, variando em resposta ao tráfego de entrada.

Uso da 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 do servidor e amostrada uma vez por minuto. Observação: A amostragem pouco frequente significa que essa métrica é mais precisa sob uma carga constante. Visualize essas métricas na UI de serviço no site tab de seu serviço endpoint.

Uso de memória da GPU (%)

Indica a porcentagem média de memória de buffer de quadros utilizada em cada GPU com base nos dados do exportador NVIDIA DCGM. Assim como o uso da GPU, essa métrica é calculada como média entre as réplicas e amostrada a cada minuto. É mais confiável em condições de carga consistentes. Visualize essas métricas na UI de serviço no site tab de seu serviço endpoint.

Métrica

Descrição

Latência (ms)

Captura os tempos de latência de ida e volta medianos (P50) e do 99º percentil (P99) no 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 totalizando o número de solicitações em um minuto e dividindo por 60 (o número de segundos em um minuto).

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

Monitora 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 da CPU (%)

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

Uso de memória (%)

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

provisionamento concurrency

A simultaneidade de provisionamento é o número máximo de solicitações paralelas que o sistema pode atender. A simultaneidade do provisionamento se ajusta dinamicamente dentro dos limites mínimo e máximo do intervalo de escala-out do compute, variando em resposta ao tráfego de entrada.

Uso da 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 do servidor e amostrada uma vez por minuto. Observação: A amostragem pouco frequente significa que essa métrica é mais precisa sob uma carga constante. Visualize essas métricas na UI de serviço no site tab de seu serviço endpoint.

Uso de memória da GPU (%)

Indica a porcentagem média de memória de buffer de quadros utilizada em cada GPU com base nos dados do exportador NVIDIA DCGM. Assim como o uso da GPU, essa métrica é calculada como média entre as réplicas e amostrada a cada minuto. É mais confiável em condições de carga consistentes. Visualize essas métricas na UI de serviço no site tab de seu serviço endpoint.

Integração com o Prometheus

nota

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

As orientações nesta seção seguem a documentação do Prometheus para começar um serviço Prometheus localmente usando Docker.

  1. Escreva um arquivo de configuração yaml e nomeie-o prometheus.yml. Veja a seguir um exemplo:

    YAML
    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. Comece a usar o Prometheus localmente com o seguinte comando:

    Bash
       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 local do Prometheus está funcionando.

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

  5. Quando o alvo estiver totalmente instalado e em funcionamento, o senhor poderá consultar as métricas fornecidas, como cpu_usage_percentage ou mem_usage_percentage, na interface do usuário.

Integração com Datadog

O Datadog tem uma variedade de agentes que podem ser implantados em diferentes ambientes.

Para fins de demonstração, o seguinte inicia um agente do Mac OS localmente que extrai o endpoint de métricas em seu host do Databricks. A configuração para usar outros agentes segue um padrão similar.

nota

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

O Datadog também oferece uma integração Databricks que conecta o Datadog ao seu endpoint de modelo de serviço para monitorar endpoint métricas sem código. Consulte a documentação do Datadog para saber como conectar sua configuração de modelo de serviço ao Datadog.

  1. registro no Datadog account.

  2. Instale a integração do OpenMetrics em seu painelaccount, 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, inclusive launchctl e datadog-agent.

  4. Localize sua configuração do OpenMetrics. Neste exemplo, a configuração está em ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. Veja a seguir um exemplo de arquivo de configuração 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
  5. Começar o agente datadog usando launchctl start com.datadoghq.agent.

  6. Sempre que precisar fazer alterações em sua configuração, você precisará reiniciar o agente para pegar a alteração.

    Bash
     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 conseguir ver uma resposta como a seguinte. Caso contrário, depure com a mensagem de erro. Os possíveis problemas podem ser devidos a tokens PAT expirados ou a um URL incorreto.

    Bash
     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 seu agente estiver totalmente instalado e funcionando, o senhor pode voltar ao painel do Datadog para consultar as métricas. O senhor também pode criar um monitor ou alerta com base nos dados métricos:https://app.datadoghq.com/monitors/create/métricas.