Pular para o conteúdo principal
Algumas linhas de log valem a pena ser contadas, mas não guardadas. Uma loja online pode registrar cada busca no catálogo feita por um cliente, cada página de produto que ele abre e cada health check do seu load balancer. Cada linha isoladamente diz pouco, mas a taxa importa. Você quer saber com que frequência isso acontece, sem armazenar cada linha. O AppSignal pode registrar uma métrica a partir das linhas de log correspondentes assim que elas chegam, e depois descartar essas linhas para que nunca sejam armazenadas. Você mantém o número para dashboards e triggers, e o consumo de armazenamento de logs permanece baixo. Meça primeiro, depois descarte — como em um pipeline de observability. A interface da aplicação AppSignal ainda não suporta isso. Você pode configurar pelo AppSignal MCP pedindo ao seu agente de IA que crie duas log line actions.

Como funciona

As log line actions são executadas conforme o AppSignal ingere seus logs, em uma ordem que você define. Existem três tipos:
  • metrics: registra uma métrica a partir das linhas correspondentes.
  • filter: descarta as linhas correspondentes para que nunca sejam armazenadas.
  • trigger: dispara um alerta e um incident quando a consulta corresponde.
Para manter a métrica e descartar as linhas, use uma action metrics e uma action filter, com a action metrics em primeiro lugar. Um filter impede que uma linha alcance qualquer action posterior; portanto, se o filter fosse executado primeiro, a linha seria descartada antes de ser contada.
As log line actions afetam apenas linhas ingeridas depois de sua criação. Elas não alteram logs que já estão armazenados.

Registrar a métrica conforme os logs chegam

Registrar a métrica na ingestão é o que torna o descarte seguro. Uma métrica baseada em logs construída a partir da página Logs lê linhas de log já armazenadas — assim, uma vez descartadas as linhas, não há mais nada para ler. Uma log line action do tipo metrics registra o valor de cada linha assim que ela chega, antes de o filter descartá-la, de modo que o número é preservado.

Antes de começar, você vai precisar de

  • AppSignal MCP configurado no seu agente de IA, com acesso de escrita às ferramentas de logging
  • Uma fonte de log que recebe as linhas que você quer medir
  • Uma consulta que corresponda a essas linhas

Passo 1: Registrar uma métrica a partir das linhas

Peça ao seu agente que adicione uma action metrics. Por exemplo, para contar com que frequência os clientes fazem buscas no seu catálogo:
No MyStore production, adicione uma log line action metrics que conte as linhas de log correspondentes a message:search como um counter chamado log.catalog_searches, limitado à fonte de log da aplicação.
Isso chama manage_log_line_action:
{
  "app_name": "MyStore",
  "app_environment": "production",
  "name": "Catalog search rate",
  "action_type": "metrics",
  "query": "message:search",
  "source_ids": ["<YOUR_LOG_SOURCE_ID>"],
  "log_line_metrics": [
    { "name": "log.catalog_searches", "metric_type": "counter" }
  ]
}
Três pontos para acertar:
  • Escreva a consulta na sintaxe de consulta de logs do AppSignal, a mesma sintaxe da página Logs. message:search corresponde às linhas cujo message contém search. Veja query syntax.
  • Escolha a quais fontes ela se aplica. Liste-as em source_ids, ou omita source_ids para aplicar a action a todas as fontes.
  • Escolha o tipo de métrica. Um counter conta as linhas correspondentes e não precisa de um campo. Um gauge ou uma distribution lê um número de cada linha, portanto precisa de um field indicando qual valor ler.

Passo 2: Verifique a métrica antes de descartar qualquer coisa

Aguarde algumas linhas correspondentes e depois releia a métrica:
Mostre-me o counter log.catalog_searches do MyStore production nos últimos 15 minutos.
Confirme se o counter está registrando antes de adicionar o filter. Um filter descarta as linhas correspondentes de forma permanente; se a consulta estiver errada, você perde as linhas sem ter capturado o número.

Passo 3: Descartar as linhas correspondentes

Adicione uma action filter com a mesma consulta:
No MyStore production, adicione uma log line action filter que descarte as linhas de log correspondentes a message:search.
{
  "app_name": "MyStore",
  "app_environment": "production",
  "name": "Drop catalog search logs",
  "action_type": "filter",
  "query": "message:search",
  "source_ids": ["<YOUR_LOG_SOURCE_ID>"]
}

Passo 4: Mantenha a action metrics antes do filter

Novas actions são adicionadas ao final da ordem, portanto o filter já roda depois da action metrics. Confirme a ordem:
Liste as log line actions do MyStore production e mantenha a action metrics antes do filter.
Isso usa get_app_resources para ler a ordem, e reorder_log_line_actions apenas se o filter estiver antes da action metrics. Se o filter rodasse primeiro, ele descartaria as linhas antes que a action metrics as contasse.

Verifique que está funcionando

Dê alguns minutos para as actions entrarem em vigor, e então confirme as duas partes em uma pequena amostra:
  1. Leia a métrica. O counter continua subindo à medida que linhas correspondentes chegam.
  2. Pesquise em seus logs pelas mesmas linhas. As novas não aparecem mais, porque o filter as descarta.
Se o counter não estiver subindo, ou se as linhas ainda estiverem sendo armazenadas, a action pode ainda não ter entrado em vigor, ou a consulta pode não estar correspondendo. Verifique a consulta na página Logs e depois tente novamente em linhas novas.

Comportamento e limitações

  • As actions não são retroativas. Elas atuam apenas em novas linhas. Logs armazenados antes de você criar a action permanecem como estão.
  • Reserve alguns minutos. Uma action nova ou alterada leva um pequeno intervalo para entrar em vigor. Linhas que chegam nos primeiros momentos podem não ser processadas por ela.
  • Linhas descartadas não podem ser recuperadas. Mantenha a métrica — e uma action trigger se quiser alertas — para que o filter nunca remova o único registro de um evento.
  • As duas consultas são independentes. Conte um conjunto de linhas e descarte outro se isso atender ao seu objetivo. Para contar e descartar as mesmas linhas, use a mesma consulta em ambas.

Relacionado