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.
Escreva um
yaml
arquivo de configuração e nomeie-oprometheus.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"]
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
Navegue até
http://localhost:9090
para verificar se o serviço Prometheus local está em execução.Verifique o status do extrator do Prometheus e os erros de depuração de:
http://localhost:9090/targets?search=
Depois que o destino estiver totalmente em execução, você poderá consultar as métricas fornecidas, como
cpu_usage_percentage
oumem_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.
Registre uma conta da Datadog.
Instale a integração do OpenMetrics no painel da sua conta, para que a Datadog possa aceitar e processar dados do OpenMetrics.
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
edatadog-agent
.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çãoyaml
.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
Inicie o agente da Datadog usando
launchctl start com.datadoghq.agent
.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
Verifique a integridade do agente com
datadog-agent health
.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)
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.