Todos os produtos
Search
Central de documentação

Simple Log Service:Coleta de logs de observabilidade de AI Agents (AgentSight)

Última atualização: Oct 10, 2026

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 enableEBPF está 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

  1. Faça login no console do Simple Log Service.

  2. 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.

  3. Na página Machine Group Configuration, configure e aplique o grupo de máquinas de destino.

    Importante

    Se 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.

  4. 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.RawHttpsFallback está 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"
            }
        ]
    }
    Nota

    Observe o comportamento a seguir:

    • Os logs HTTP brutos gerados por RawHttpsFallback: true são criados apenas quando o AgentSight não consegue resolver o tráfego em semântica GenAI. Eles são mutuamente exclusivos com os logs gen_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.request e event.name=http.response.

    • Este recurso tem suporte apenas no LoongCollector v3.3.10 e posterior.

  5. 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.

  6. 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.request e gen_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 input_agentsight.

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

0

Define se os logs detalhados do eBPF serão impressos. 1: ativado. 0: desativado.

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 AgentType (gravado no campo de log gen_ai.agent.type) e Args (um array de strings que aplica correspondência glob em cada segmento da linha de comando do processo, por posição). Quando não há configuração deste parâmetro nem de CmdlineBlacklist, o sistema injeta a lista de permissões padrão interna. Após a configuração, o sistema utiliza apenas as regras definidas pelo usuário, sem adicionar os padrões internos. Um array vazio [] é tratado como configuração inválida.

ProbeConfig.CmdlineBlacklist

array

Não

N/A

Lista de bloqueios para filtragem de processos de Agent. Cada entrada é um array de strings glob (sem AgentType). Os processos correspondentes são excluídos da coleta. Tem prioridade sobre a lista de permissões.

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 *, não diferencia maiúsculas de minúsculas). O sistema identifica como destinos de coleta os processos que acessam domínios nesta lista. Quando não configurada, o sistema injeta a lista padrão interna.

ProbeConfig.Http

array

Não

[] (desativado)

Lista de destinos para tráfego HTTP em texto puro. Cada entrada pode ser :port, IP, IP:port ou um domínio. Quando vazia, o sistema não coleta o tráfego HTTP em texto puro.

ProbeConfig.RawHttpsFallback

bool

Não

false

Quando definido como true, o tráfego que não pode ser analisado em semântica de LLM (caminhos de API desconhecidos ou corpos fora do padrão) deixa de ser descartado. Em vez disso, é registrado como tráfego HTTP bruto com os nomes de evento event.name=http.request e event.name=http.response. Esses logs HTTP brutos são gerados apenas quando o AgentSight não consegue resolver o tráfego em semântica GenAI e são mutuamente exclusivos com os logs gen_ai.*: uma única solicitação gera, no máximo, um dos dois. Compatível apenas com LoongCollector v3.3.9 e posterior.

ProbeConfig.EventStreamFormat

bool

Não

true

Quando true, cada chamada de LLM gera dois logs no mesmo grupo de logs: gen_ai.model.request (solicitação) e gen_ai.model.response (resposta), cada um com um event.id. Quando false, o sistema gera um único log mesclado, sem event.name ou event.id.

ProbeConfig.MessageDeltaOnly

bool

Não

true

Quando true, o sistema não gera o campo completo gen_ai.input.messages. O sistema emite apenas o incremento gen_ai.input.messages_delta, junto com o texto completo de system/tools quando o hash muda. Quando false, o sistema gera o campo completo e não vazio gen_ai.input.messages a cada vez. Não afeta gen_ai.output.messages.

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:

  1. Corresponde a CmdlineBlacklist → não coletado (a lista de bloqueios tem prioridade).

  2. Não corresponde à lista de bloqueios e corresponde a CmdlineWhitelist → coletado.

  3. Ainda não incluído, e o processo acessa um domínio que corresponde a Https → coletado.

  4. 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)

hermes

hermes*

hermes

*python*, *hermes*

hermes

*python*, -m, *hermes*

cosh

node*, */usr/bin/co*

cosh

node*, */usr/bin/cosh*

cosh

node*, */usr/bin/copliot*

cosh

node*, *copilot-shell*

openclaw

*openclaw-gatewa*

openclaw

node*, *openclaw*

Entradas internas padrão da lista de permissões de domínios

Domínio

Descrição

api.openai.com

OpenAI

api.anthropic.com

Anthropic

dashscope.aliyuncs.com

DashScope pagamento conforme o uso, China (Beijing)

dashscope-intl.aliyuncs.com

DashScope pagamento conforme o uso, Singapore

dashscope-us.aliyuncs.com

DashScope pagamento conforme o uso, US (Virginia)

coding.dashscope.aliyuncs.com

Plano Coding do DashScope

*.maas.aliyuncs.com

Domínios de workspace dedicado / avaliação / Plano de Token do DashScope

Importante

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 regra CmdlineWhitelist ou se os domínios acessados estão na lista Https. 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; echo

    Consulte 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 SSL_read e SSL_write usando os símbolos. Exemplos: OpenClaw, Hermes, Cosh e Claude Code.

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.