O que está disponível hoje
A borda da API em tempo real e a pilha de observabilidade expõem os seguintes elementos:- Cada resposta da API inclui
X-Request-ID— inclusive rejeições (401/429) emitidas na borda do gateway. - O gateway disponibiliza um plugin global Kong
correlation-id(parte da configuração de implantação da plataforma, aplicada em todas as instalações) comheader_name: X-Request-ID,echo_downstream: trueegenerator: uuid#counter. UmX-Request-IDfornecido pelo cliente é preservado; solicitações sem um recebem um ID gerado. - A trilha de auditoria registra o mesmo ID como
correlation_idem cada solicitação auditada — para solicitações rejeitadas na borda, o remetente de auditoria o resolve a partir do cabeçalho de resposta ecoado, portanto o ID que um cliente informa a partir de uma resposta de erro ainda localiza o registro de auditoria. - Para solicitações que chegam ao gateway, as linhas de log carregam o ID como
httpRequestId(junto comtraceId/spanId) e os rastreamentos de solicitação o carregam como o atributo de spanhttp.request_id— assim, um ID conecta o cabeçalho de resposta, a trilha de auditoria, os logs e os rastreamentos. - Os logs em tempo real do SigNoz incluem
userId,externalUserIdeuserContext. - Os recursos existentes do SigNoz incluem os dashboards
MKLLM Gateway,Guardrail DashboardeSandbox Commands, além das visualizações de logSandbox Commands 24h,Sandbox Command Errors 24heMKLLM Errors.
GET /api/v1/llm/responsesretornouX-Request-ID: 0736e48b-3d39-48d8-806c-952c907*****#12GET /api/v1/agentsretornouX-Request-ID: 0736e48b-3d39-48d8-806c-952c90*****#13- Os agregados de 24 horas do SigNoz mostraram valores de
externalUserIdcomodocs-pt-br-usercom14eventos edocs-test-usercom7eventos - Os agregados de 24 horas do SigNoz mostraram valores de
userIdcomodRdj8VeoyuE7P9txS7ZVQ8ixI2*****com63eventos euy95pqlp4ABgWCn5oLikRGV1TT*****com23eventos
Como isso aparece no nosso dashboard


Envie um ID estável de usuário final em cada solicitação delegada
Para integrações multiusuário no lado do servidor, envie tantoAuthorization quanto X-On-Behalf-Of.
Isso é o que vincula o uso, os recursos e os logs ao usuário final correto.
X-Request-ID com sua própria entrada de log da aplicação.
Isso fornece uma chave de associação estável entre a borda da API e a observabilidade downstream.
Consulte relatórios de uso por usuário
Os endpoints públicos de uso oferecem suporte aos filtrosexternal_user_ids (IDs de usuários finais delegados de X-On-Behalf-Of) e user_ids (IDs de usuários da plataforma), além das dimensões group_by.
Use-os para relatórios no nível da conta e, em seguida, use os logs do SigNoz para investigar um usuário final ou uma solicitação específica.
TypeScript SDK
externalUserIds para seus IDs de usuários finais de X-On-Behalf-Of.
Os endpoints de uso cobrem completions, responses, conversations, embeddings, rerank, extract, classify, vector stores e files. GET /api/v1/llm/usage/costs soma os gastos de LLM em um intervalo de tempo. Para os gastos de todos os serviços, incluindo Compute e Sandbox, use o relatório de custos da plataforma; consulte Qual relatório usar.
Agrupado por model, o uso de Responses e o de Completions informam o modelo que atendeu cada solicitação. Em Responses, é o resolved_model da resposta: o modelo para o qual auto e qualquer failover foram resolvidos. O filtro models corresponde aos mesmos nomes atendidos, então filtrar por auto não encontra nada nas respostas que registraram um modelo atendido. Respostas registradas antes de o modelo atendido ser armazenado mantêm o nome que a solicitação enviou. O relatório de custos de LLM agrupa pelo mesmo modelo atendido. Para ver qual modelo atendeu uma solicitação de Responses, leia o campo resolved_model dela (consulte roteamento automático).
Leia uma janela longa página por página
Todos os endpoints de uso, excetocosts, retornam a janela como buckets de tempo, uma página por vez:
bucket_widthé1m,1hou1d, o padrão. Os buckets seguem os limites UTC, então um bucket1dvai da meia-noite à meia-noite UTC. Quandostart_timeouend_timecai dentro de um bucket, o primeiro bucket começa emstart_timee o último termina emend_time, de modo que nenhum bucket conta uso de fora da sua janela. Leia ostart_timede cada bucket em vez de presumir horários alinhados.limité o número de buckets por página. O padrão é 60 para1m, 24 para1he 7 para1d. Aceita de 1 a 1440, e um valor maior retorna400. Uma página1hcontém no máximo 168 buckets e uma página1dno máximo 31, seja qual for olimitenviado.- Quando a janela tem mais buckets do que cabem em uma página, a resposta traz
has_more: truee um cursornext_page. Envie o cursor de volta comopage, sem alterar nenhum outro parâmetro, para obter a próxima página. Repita atéhas_moreserfalse; a última página traznext_page: null. - O cursor é opaco. Envie-o apenas com os mesmos parâmetros da página que o retornou. Um cursor malformado retorna
400, assim como um de uma consulta com outrostart_timeou outrobucket_width, ou um que não retoma dentro da janela. Uma mudança em qualquer outro parâmetro, comoend_timeou um filtro, não é detectada. end_timeé opcional. Sem ele, a janela de cada página termina quando essa página é calculada, então as páginas de uma mesma consulta podem terminar em momentos diferentes. Envie umend_timeexplícito ao paginar.
1d ocupam cinco páginas com o limit padrão de 7, ou uma página com limit=31. Nenhum endpoint de uso descarta buckets silenciosamente: uma janela maior que uma página sempre volta com has_more: true.
Cada página também informa quando foi calculada e se seus números são definitivos. O uso das últimas 24 horas é provisório e ainda pode aumentar; consulte Quando os números de uso são definitivos.
Registre ações como um vocabulário fixo de auditoria
A detecção de uso indevido por usuário e por unidade depende de seus serviços emitirem eventos de ação consistentes. O contrato compartilhado de auditoria define os campos obrigatórios:request_idactor_idunit_idroute_nameactionresource_typeresource_idoutcomepolicy_action
Detecte ações impróprias
Agrupe seus logs e dashboards poractor_id, unit_id, action, outcome e policy_action.
Isso permite responder a duas perguntas diferentes:
- Qual usuário final ou unidade gerou a atividade?
- Quais ações foram negadas, limitadas ou bloqueadas por política?
successdeniedthrottledvalidation_errorpolicy_violation
policy_action são:
warnblockescalate
- mensagem:
Limiting parallel tool calls to respect max_tool_calls requestedToolCalls: 2allowedToolCalls: 1maxToolCalls: 5responseId: resp_bcc0e8bba9524e8d9c14289c0c6*****
Fluxo prático de investigação
Ao investigar uma solicitação questionável, use esta ordem:- Comece pelo relatório de uso no nível da conta nos endpoints de uso da Referência da API.
- Restrinja ao usuário final por
X-On-Behalf-OfeexternalUserId. - Use
X-Request-IDpara correlacionar a solicitação exata na borda. - Inspecione os logs do SigNoz para
userId,externalUserId,userContext,route_name,actioneoutcome. - Verifique os dashboards
MKLLM Gateway,Guardrail DashboardeSandbox Commandspara atividades de política ou ferramentas relacionadas.