O plug-in input_agentsight do LoongCollector coleta logs de observabilidade das interações entre AI Agents e modelos grandes de linguagem (LLMs). Ao utilizar eBPF para observar os processos dos Agents no nível do sistema, sem exigir alterações no código, o plug-in captura solicitações, respostas, consumo de tokens, definições de ferramentas e outros dados trocados entre Agents e LLMs. Entre os provedores de LLM compatíveis estão OpenAI, Anthropic e DashScope. Este tópico descreve como criar uma configuração de coleta do LoongCollector no console do Simple Log Service para coletar logs do AgentSight.
Pré-requisitos
-
A versão do kernel do sistema operacional do servidor é Linux 5,10 ou posterior.
O plug-in depende do eBPF para observação no nível do sistema. Kernels anteriores à versão 5,10 não oferecem suporte aos recursos necessários do eBPF e não permitem a coleta.
Os ambientes compatíveis e validados incluem:
Alibaba Cloud Linux 3
Ubuntu 22.04
Ubuntu 24.04
Execute o comando a seguir para verificar a versão atual do kernel:
uname -r -
O LoongCollector v3.3.9 ou posterior está instalado no servidor.
O recurso de coleta do AgentSight exige uma versão recente do LoongCollector. Atualize para a versão mais recente antes de configurar este plug-in.
O AI Agent de destino (como OpenClaw ou Hermes) está implantado e em execução no servidor.
-
Ambiente de contêiner do ACK: para coletar logs de LLM de Pods de Agent em um cluster do Container Service for Kubernetes (ACK), certifique-se de que os seguintes requisitos são atendidos:
O LoongCollector foi atualizado para a versão v3.3.10 ou posterior.
A opção
enableEBPFestá ativada na página Component Management do console do ACK.
Após atender a esses requisitos, crie uma configuração de coleta do Logtail para o AgentSight no Simple Log Service para coletar os logs de LLM do Agent. A configuração se aplica ao mesmo grupo de máquinas usado pelas outras configurações do LoongCollector.
Funcionamento
A instrumentação tradicional de aplicações não acompanha a iteração rápida e o alto nível de personalização dos AI Agents, nem consegue rastrear cadeias de chamadas de ferramentas para identificar o comportamento real do Agent. O plug-in input_agentsight conecta sondas SSL/TLS e observadores de processos no nível do kernel por meio do eBPF, capturando solicitações e respostas criptografadas por TLS entre os processos do Agent e os serviços de LLM. Essa abordagem garante observabilidade de ponta a ponta sem exigir alterações no código do Agent.
Recursos
Coleta dados completos de interação entre AI Agents e LLMs: mensagens de solicitação, mensagens de resposta, nome do modelo, consumo de tokens, latência, códigos de status, entre outros.
Identifica processos que acessam APIs de LLM com base em uma lista de permissões de domínios, que já inclui os domínios de API de LLM mais comuns.
Provedores de LLM compatíveis
|
Provedor / Protocolo |
Compatível |
|
OpenAI |
Sim |
|
Anthropic |
Sim |
|
DashScope |
Sim |
Para protocolos de payload compatíveis, o plug-in gera campos padrão do OTel GenAI (como gen_ai.*). Para protocolos ainda não adaptados, o plug-in registra o payload bruto com dados sensíveis removidos, permitindo a adaptação no lado do servidor.
Exemplos de AI Agents compatíveis
|
Categoria |
Exemplos |
|
Agents comuns |
Claude Code, OpenClaw, QwenPaw, Hermes |
|
Frameworks de LLM comuns |
LangChain, LangGraph, Dify, AgentScope |
|
Agents personalizados |
Agents personalizados baseados em Python, Agents personalizados baseados em Node.js |
Procedimento
Faça login no console do Simple Log Service.
Na seção Data Import, selecione a entrada de configuração de coleta do LoongCollector e, em seguida, escolha o Project e o Logstore de destino.
-
Na página Machine Group Configuration, configure e aplique o grupo de máquinas de destino.
ImportanteSe você aplicar o grupo de máquinas imediatamente após a criação, o status de heartbeat poderá aparecer como FAIL, pois a conexão ainda não foi estabelecida. Clique em Automatic Retry para resolver o problema.
-
Na guia Data Source Settings, especifique um Configuration Name e insira a configuração do plug-in. O tipo de plug-in é fixo como
input_agentsight.Escolha um padrão de configuração de acordo com o seu cenário:
Use a configuração mínima quando o seu Agent e o provedor de LLM forem cobertos pelos padrões internos.
Use a lista de permissões de domínios personalizada quando o Agent se conectar a um endpoint de LLM fora do padrão.
Use a lista de permissões de linha de comando personalizada quando o processo do Agent não corresponder às regras internas.
Use o reporte de tráfego HTTP bruto quando precisar inspecionar tráfego que o AgentSight não consegue analisar semanticamente como GenAI.
Configuração mínima
Configuração mínima: especifique apenas o tipo de plug-in. Todas as configurações utilizam valores padrão (o sistema injeta automaticamente a lista interna de permissões de linha de comando e a lista de domínios).
{ "inputs": [ { "type": "input_agentsight" } ] }Lista de permissões de domínios personalizada: especifique os domínios HTTPS personalizados para monitoramento.
{ "inputs": [ { "detail": { "ProbeConfig": { "Https": [ "api.openai.com", "api.anthropic.com", "dashscope-intl.aliyuncs.com", "dashscope.aliyuncs.com" ] } }, "type": "input_agentsight" } ] }Lista de permissões de linha de comando personalizada: filtre os Agents de destino pela linha de comando do processo e marque o tipo correspondente.
{ "inputs": [ { "detail": { "ProbeConfig": { "CmdlineWhitelist": [ { "AgentType": "openclaw", "Args": ["node*", "*openclaw*"] }, { "AgentType": "claude-code", "Args": ["node*", "*claude*"] } ] } }, "type": "input_agentsight" } ] }Reporte de protocolos desconhecidos como tráfego HTTP bruto: quando a opção
ProbeConfig.RawHttpsFallbackestá ativada, o tráfego que o AgentSight não consegue converter em semântica GenAI (caminhos de API desconhecidos ou corpos fora do padrão) deixa de ser descartado. Em vez disso, ele é registrado como tráfego HTTP bruto. Crie um índice de campo para os eventos HTTP brutos e utilize o recurso de consulta e análise do Logstore para inspecioná-los.{ "inputs": [ { "detail": { "ProbeConfig": { "RawHttpsFallback": true } }, "type": "input_agentsight" } ] }NotaObserve o comportamento a seguir:
Os logs HTTP brutos gerados por
RawHttpsFallback: truesão criados apenas quando o AgentSight não consegue resolver o tráfego em semântica GenAI. Eles são mutuamente exclusivos com os logsgen_ai.*: uma única solicitação gera, no máximo, um dos dois tipos.O tráfego HTTP bruto é registrado com os nomes de evento
event.name=http.requesteevent.name=http.response.Este recurso tem suporte apenas no LoongCollector v3.3.10 e posterior.
Crie os índices e visualize uma prévia dos dados. Você pode criar índices de campo manualmente com base nos campos coletados ou clicar em Auto Generate Index.
-
Após concluir a configuração, aguarde cerca de 1 minuto para que o índice entre em vigor. Em seguida, visualize os logs coletados na página de consulta e análise do Logstore.
Você deverá ver entradas de log contendo campos como
gen_ai.agent.type,gen_ai.model.requestegen_ai.model.response. A presença desses campos confirma que a coleta está funcionando corretamente.
Parâmetros de configuração
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
Type |
string |
Sim |
N/A |
Tipo de plug-in. Fixo como |
|
ProbeConfig |
object |
Não |
N/A |
Configuração da sonda do AgentSight. Quando não configurada, todos os subparâmetros usam valores padrão. |
|
ProbeConfig.Verbose |
uint |
Não |
|
Define se os logs detalhados do eBPF serão impressos. |
|
ProbeConfig.LogPath |
string |
Não |
|
Caminho de saída para os logs do eBPF. |
|
ProbeConfig.CmdlineWhitelist |
array |
Não |
9 regras internas |
Lista de permissões para filtragem de processos de Agent. Cada entrada é um objeto com |
|
ProbeConfig.CmdlineBlacklist |
array |
Não |
N/A |
Lista de bloqueios para filtragem de processos de Agent. Cada entrada é um array de strings glob (sem |
|
ProbeConfig.Https |
array |
Não |
7 regras internas |
Lista de permissões de domínios para tráfego criptografado HTTPS (array de strings, curinga glob |
|
ProbeConfig.Http |
array |
Não |
|
Lista de destinos para tráfego HTTP em texto puro. Cada entrada pode ser |
|
ProbeConfig.RawHttpsFallback |
bool |
Não |
|
Quando definido como |
|
ProbeConfig.EventStreamFormat |
bool |
Não |
|
Quando |
|
ProbeConfig.MessageDeltaOnly |
bool |
Não |
|
Quando |
Lógica de definição do escopo de coleta
O sistema define o tráfego criptografado HTTPS (nível de processo) na seguinte ordem fixa:
Corresponde a
CmdlineBlacklist→ não coletado (a lista de bloqueios tem prioridade).Não corresponde à lista de bloqueios e corresponde a
CmdlineWhitelist→ coletado.Ainda não incluído, e o processo acessa um domínio que corresponde a
Https→ coletado.Nenhuma das condições anteriores corresponde → não coletado.
Regras de injeção padrão: quando não há configuração de CmdlineWhitelist nem de CmdlineBlacklist, o sistema injeta as 9 regras internas padrão da lista de permissões de linha de comando. Quando Https está vazio, o sistema injeta as 7 entradas de domínio padrão internas.
Regras internas padrão da lista de permissões de linha de comando
|
AgentType |
Args (padrão glob para cada segmento da linha de comando) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Entradas internas padrão da lista de permissões de domínios
|
Domínio |
Descrição |
|
|
OpenAI |
|
|
Anthropic |
|
|
DashScope pagamento conforme o uso, China (Beijing) |
|
|
DashScope pagamento conforme o uso, Singapore |
|
|
DashScope pagamento conforme o uso, US (Virginia) |
|
|
Plano Coding do DashScope |
|
|
Domínios de workspace dedicado / avaliação / Plano de Token do DashScope |
Substituição, não acréscimo: as configurações definidas pelo usuário substituem totalmente os padrões internos, em vez de se somarem a eles. Assim que você especifica qualquer regra, toda a lista padrão interna é desativada. Para manter as entradas padrão internas, inclua-as explicitamente na sua configuração (adicione-as manualmente). Caso contrário, o sistema não coletará mais os tipos de Agent ou domínios padrão não listados na sua configuração. Utilize apenas letras minúsculas, dígitos e hífens (-) para os valores de AgentType (como openclaw ou claude-code) para facilitar a agregação e análise entre product.
Limites e solução de problemas
-
Nenhum dado na página de prévia ou consulta: verifique se a versão do kernel do servidor é 5,10 ou posterior (
uname -r) e se o LoongCollector foi atualizado para v3.3.9 ou posterior. Em seguida, confirme se a linha de comando do processo de destino corresponde a uma regraCmdlineWhitelistou se os domínios acessados estão na listaHttps. Execute o comando a seguir no servidor para visualizar a linha de comando real de um processo antes de criar regras glob:tr '\0' ' ' < /proc/<PID>/cmdline; echoConsulte o Apêndice técnico para limitações de compatibilidade de hook do eBPF que podem impedir a coleta de determinados binários de Agent.
Para obter mais orientações sobre solução de problemas, consulte Solucionar falhas na coleta de logs do Logtail.
Este recurso está atualmente em versão canary e disponível nas seguintes regiões: US (Virginia), US (Silicon Valley), Malaysia (Kuala Lumpur), Indonesia (Jakarta), South Korea (Seoul), entre outras.
Apêndice técnico
O plug-in input_agentsight utiliza eBPF para coleta. A capacidade de capturar tráfego criptografado HTTPS de um Agent específico depende se o eBPF consegue localizar as funções de envio/recebimento SSL no executável do Agent. Utilize a tabela a seguir para verificar a compatibilidade:
|
Cenário |
Compatível |
Método de localização |
Descrição |
|
Agents executados por Node.js ou Python, ou Agents que mantêm a tabela de símbolos |
Sim |
Baseado em símbolos |
Esses programas enviam e recebem dados por meio de bibliotecas SSL comuns (principalmente OpenSSL) com símbolos exportados. O eBPF localiza funções como |
|
Sem tabela de símbolos (stripped), mas vinculado estaticamente a bibliotecas SSL C comuns (OpenSSL) |
Parcial |
Correspondência de padrão de bytecode |
Sem uma tabela de símbolos, a localização baseada em símbolos não é possível. No entanto, quando a biblioteca subjacente é uma biblioteca C comum, como OpenSSL, o eBPF ainda consegue localizar funções de envio/recebimento por correspondência de padrão de bytecode. Exemplo: ferramentas Python empacotadas com uv que vinculam estaticamente o OpenSSL e passam por strip. |
|
Sem tabela de símbolos (stripped), vinculado estaticamente sem símbolos exportados e sem correspondência de padrões de bytecode |
Não |
Não é possível localizar |
Nem a tabela de símbolos nem os padrões de bytecode conseguem localizar as funções de envio/recebimento, impossibilitando a criação de um ponto de hook. Exemplo: a versão oficial do Codex CLI (stripped, vinculada estaticamente, sem símbolos exportados) se enquadra nesta categoria e este plug-in não a coleta. |