A Veloz já coleta métricas de tráfego, recursos e banco de dados de todos os serviços. A observabilidade de aplicação vai um passo além: ela leva para dentro da plataforma os dados que só o seu código conhece.
São três sinais, todos declarados no veloz.json:
| Sinal | O que é | Onde aparece |
|---|---|---|
| Métricas | A Veloz lê o endpoint Prometheus da sua aplicação a cada 30 segundos | Aba Métricas, veloz metrics |
| Traces | Sua aplicação envia traces OpenTelemetry para a Veloz | Aba Traces, veloz traces |
| Dashboards | Uma pasta de dashboards Grafana no repositório é provisionada a cada deploy | Contagem na aba Métricas, veloz obs dashboards |
Nenhum dos três exige configurar infraestrutura. Você declara a intenção no veloz.json, a Veloz cuida do endpoint, das credenciais e do isolamento entre organizações.
Ativando
Métricas e traces são configurados por serviço. Dashboards são configurados uma vez por projeto.
{
"version": "1.0",
"project": {
"id": "proj_abc123",
"name": "loja"
},
"observability": {
"dashboards": "./dashboards"
},
"services": {
"apps/api": {
"id": "svc_api456",
"name": "loja-api",
"type": "web",
"root": "apps/api",
"runtime": {
"command": "node dist/index.js",
"port": 3000
},
"observability": {
"metrics": { "port": 9090, "path": "/metrics" },
"traces": { "sampleRate": 1 }
}
}
}
}Declarar o bloco já liga o sinal. Todos os campos são opcionais:
| Campo | Nível | Padrão | Descrição |
|---|---|---|---|
metrics.enabled |
Serviço | true |
false desliga a coleta e preserva o resto da configuração |
metrics.port |
Serviço | A porta do runtime.port |
Porta onde o endpoint de métricas responde |
metrics.path |
Serviço | /metrics |
Caminho do endpoint. Precisa começar com / |
traces.enabled |
Serviço | true |
false desliga o envio e preserva o resto da configuração |
traces.sampleRate |
Serviço | 1 |
Fração de traces mantidos, de 0 a 1 |
dashboards |
Projeto | Nenhum | Pasta de dashboards, relativa à raiz do repositório |
A forma mínima usa só os padrões:
{
"observability": {
"metrics": {},
"traces": {}
}
}Com isso, a Veloz lê /metrics na porta declarada em runtime.port e mantém 100% dos traces.
Importante:
metricsetracessão objetos, não booleanos."traces": trueé recusado na validação doveloz.json. Para ligar sem ajustar nada, use"traces": {}.
Depois de editar o arquivo, rode veloz deploy. A configuração vale a partir desse deploy.
Como saber se está funcionando
Esta é a primeira coisa a fazer depois do primeiro deploy com observabilidade.
No app da Veloz, a aba Métricas de cada serviço mostra um card de estado com os três sinais, há quanto tempo foi a última coleta e, quando algo falha, o diagnóstico e a correção.
Pelo terminal:
veloz obs status --service loja-api Observabilidade
✓ Métricas 1.204 série(s) · última coleta há 14s
✓ Traces 37 trace(s) na última hora
✓ Dashboards 3 de 20 publicado(s) · há 2min
Dicas:
veloz traces list Traces recentes
veloz obs dashboards Dashboards publicados
veloz obs validate Validar arquivos de dashboard
Quando algo falha, a linha do sinal traz o motivo e a correção logo abaixo:
Observabilidade
✗ Métricas coleta falhando em 2 de 2 instância(s)
a porta configurada não aceitou a conexão.
Confirme que o serviço escuta na porta declarada em observability.metrics.port.
○ Traces não configurado
○ Dashboards não configurado
A primeira coleta acontece em até 30 segundos depois de o serviço ficar pronto. Antes disso o estado é "aguardando a primeira coleta", que é normal e se resolve sozinho.
Limites
| Limite | Valor | O que acontece ao atingir |
|---|---|---|
| Séries ativas por serviço | 10.000 | O aviso de cardinalidade aparece a partir de 80% |
| Intervalo de coleta | 30s | Fixo, não configurável |
| Retenção de traces | 7 dias | Traces mais antigos são descartados |
| Arquivos de dashboard por projeto | 20 | Os arquivos excedentes são ignorados e reportados no log do deploy |
| Tamanho por arquivo de dashboard | 256 KB | O arquivo é ignorado, os demais são publicados normalmente |
| Tamanho total dos dashboards | 2 MB | Os arquivos que ultrapassam o total são ignorados |
| Painéis por dashboard | 100 | O arquivo é ignorado, os demais são publicados normalmente |
Um dashboard fora do limite nunca derruba o deploy. O arquivo é pulado, os outros continuam.
A regra que evita chegar ao limite de séries é uma só: nunca use labels de alta variação, como identificador de usuário, URL completa ou identificador de requisição. Veja boas práticas de cardinalidade.
Problemas comuns
Quando a coleta de métricas falha, a Veloz classifica o motivo e mostra a correção no card de estado e em veloz obs status. Abaixo, cada diagnóstico e o que fazer.
Conexão recusada
Você vê: "Conexão recusada na porta 9090."
Nada está escutando na porta configurada. Causas em ordem de frequência:
- A aplicação serve as métricas na mesma porta HTTP do serviço, mas o
veloz.jsondeclara outra porta. Removametrics.portpara usar a porta doruntime.port. - O endpoint de métricas sobe depois do resto da aplicação. Registre a rota junto com as demais.
- O servidor de métricas escuta apenas em
127.0.0.1. Escute em todas as interfaces (0.0.0.0).
O caminho respondeu 404
Você vê: "O caminho /metrics respondeu 404."
A aplicação respondeu, então a porta está certa, mas não existe rota nesse caminho. Confirme o caminho real do endpoint e ajuste observability.metrics.path, ou registre a rota na aplicação. Lembre que o padrão é /metrics e que o caminho precisa começar com /.
Um caso comum: frameworks que servem tudo sob um prefixo (/api/metrics, /internal/metrics) sem que isso apareça no código da rota.
A coleta expirou
Você vê: "A coleta expirou."
O endpoint aceitou a conexão e não respondeu a tempo. Isso quase sempre significa que a geração das métricas faz trabalho pesado, por exemplo uma query no banco a cada chamada. O endpoint precisa apenas ler contadores em memória. Mova qualquer coleta cara para um job em background que atualiza um gauge.
Resposta fora do formato Prometheus
Você vê: "Resposta fora do formato Prometheus."
O endpoint respondeu com um corpo que não é exposição Prometheus, geralmente JSON. A coleta espera o formato texto:
# HELP pedidos_criados_total Total de pedidos criados
# TYPE pedidos_criados_total counter
pedidos_criados_total 42
Use uma biblioteca oficial em vez de montar o corpo à mão: prom-client (Node), prometheus_client (Python), client_golang (Go). Veja os quickstarts.
Autenticação exigida
Você vê: "O endpoint exigiu autenticação."
O caminho de métricas respondeu 401 ou 403. A coleta acontece pela rede interna da Veloz, que não é alcançável de fora do seu projeto, então o endpoint não precisa de autenticação própria. Isente esse caminho do seu middleware de autenticação.
Resposta muito grande
Você vê: "Resposta de métricas muito grande."
A resposta ultrapassou o tamanho máximo aceito pela coleta. Isso é sempre cardinalidade: alguma métrica tem um label com valores demais. Liste os candidatos com veloz metrics list e remova labels de alta variação. Veja boas práticas de cardinalidade.
Nenhuma instância disponível
Você vê: "Nenhuma instância disponível para coleta."
Nenhuma instância do serviço está pronta para receber tráfego, então não há de onde coletar. Isso não é um problema de observabilidade: verifique a verificação de saúde e o último deploy em veloz builds list e veloz logs show.
Nenhum trace recebido
Você vê: "Nenhum trace na última hora."
Em ordem de frequência:
sampleRateigual a0. Com zero, nada é enviado. Suba para0.1ou mais.- A biblioteca do OpenTelemetry não é carregada antes da aplicação. Em Node isso significa
node --import ./instrumentation.mjs, nunca um import dentro do próprio código. - O protocolo foi trocado para gRPC. A Veloz recebe traces por OTLP sobre HTTP. Um exporter gRPC não conecta e falha em silêncio. Veja Traces.
- O serviço não recebeu tráfego. Sem requisição não há trace. Chame uma rota e recarregue.
Um dashboard não aparece
O deploy nunca falha por causa de um dashboard. O arquivo com problema é pulado e o motivo vai para o log do deploy (veloz builds logs <id>). As causas: JSON inválido, arquivo sem title, arquivo acima de 256 KB, mais de 100 painéis, ou pasta apontando para fora do repositório.
Valide antes de fazer deploy:
veloz obs validateVeja Dashboards para o formato aceito e as regras completas.
Próximos passos
- Métricas customizadas: exponha as métricas da sua aplicação
- Traces: instrumente com OpenTelemetry
- Dashboards: dashboards do Grafana versionados no repositório
- veloz.json: referência completa da configuração