BLOG

Como criar um analisador de logs com Splunk e uma ferramenta de Gen AI

Aprenda como criar um analisador de logs com Splunk e StackSpot AI, transformando dados de observabilidade em insights valiosos com IA.

Transformar os dados vindos de logs em decisões é um desafio recorrente. Seja pelo volume, formato das informações ou mesmo dificuldade de cruzamento, o fato é que para times é um esforço considerável. Porém, a Inteligência Artificial Generativa pode apoiar neste processo. Neste artigo, mostro como criei um Analisador de Logs com Splunk integrado à StackSpot AI.

Para isso, eu usei o Remote Quick Command para orquestrar uma pipeline que vai da execução da query no Splunk até a geração de um relatório inteligente detalhando gargalos, tendências e oferecendo recomendações para os times de produto, SRE e Engenharia. 

Isso tudo com dados bem estruturados e uma execução assíncrona e resiliente ponta a ponta.

Mas o que é Splunk?

O Splunk (SPL) é uma plataforma de análise e monitoramento de dados em tempo real, projetada para transformar grandes volumes de dados brutos em insights acionáveis. 

Utilizada por empresas de diferentes setores, o Splunk coleta, indexa e correlaciona dados gerados por máquinas, como logs de servidores, dispositivos de rede e aplicações, permitindo a visualização e busca por informações críticas. 

Com suas poderosas ferramentas de análise, o Splunk ajuda organizações a melhorarem a segurança, otimizarem o desempenho operacional e tomarem decisões mais informadas, garantindo que os dados sejam um recurso valioso e aproveitado ao máximo.

Motivação

Logs brutos – de qualquer ferramenta de observalidade – raramente conseguem gerar insights diretamente para um LLM. Por isso, é necessário normalizar, correlacionar e enriquecer os dados antes de gerar qualquer análise.

As equipes envolvidas já tinham queries no Splunk (SPL) que detectam erros, latência e uso. O que faltava era justamente transformar esses dados em ações concretas.

Para isso, pensamos/pensei no Remote Quick Command (RQC) da StackSpot. Ele permite criar e orquestrar fluxos inteligentes e reutilizáveis de automação, compostos por múltiplos passos, acessíveis via API, com execução assíncrona e consulta de resultados via callback. Diferente de Agents, o RQC executa tarefas previamente definidas e determinísticas, facilitando integrações e automações seguras entre sistemas.

Como é a arquitetura do analisador

  1. Splunk: faz a execução de uma query via API para criar um job assíncrono e obter resultados relevantes (por exemplo, erros, latência e uso).
  2. Normalização e persistência: faz aconversão para um esquema consistente, enriquecimento de contexto e armazenamento (PoC: JSON; Produção: base relacional e/ou vetorial).
  3. StackSpot’s Remote Quick Command: faz o disparo de uma execução usando o slug/ID do comando, enviando os dados ou a referência aos dados, configurado com um agente personalizado como um especialista SRE.
  4. Pipeline de análise: o Quick Command orquestra transformações e a análise com LLM, produzindo um relatório final (em Markdown) com achados e recomendações.
  5. Entrega: recebimento da resposta por callback ou polling e disponibilização do relatório para times de Produto, SRE e Engenharia.

Passo a passo de implementação da solução de criação de analisador de Logs com Splunk

Consultas no Splunk e criação do job assíncrono

Defina queries SPL que cubram os pontos a seguir:

  • Taxas de erro (HTTP 5xx/4xx, exceptions, stack traces).
  • Desempenho (latência p95/p99 por serviço/endpoint).
  • Uso (volume por endpoint, pessoas usuárias impactadas, picos).
Tela do Splunk com a query contendo todos os campos necessários para executar a extração de dados do JSON no splunk.

Use a API do Splunk para:

  • Criar um job de busca (assíncrono).
  • Aguardar a conclusão (polling com backoff e timeout).
  • Obter resultados como JSON.
Json com a os campos exportados da query do splunk.

Armazene o resultado como:

  • Prova de conceito: arquivo JSON local.
  • Produção: base relacional (para agregações e séries temporais) e, se fizer sentido, base vetorial para buscas semânticas e RAG.
Diretórios com os arquivos gerados pelo export do splunk sendo o resultados_splunk-10h.json e o arquivo retorno_stackspot-10h.md com o resultado gerado pelo script da StackSpot.

Estruture os dados para o modelo (evite logs brutos)

  • Normalize campos (timestamp ISO, serviço, endpoint, código, severidade, host, ambiente).
  • Remova os eventos equivalentes (duplicados) e compacte stack traces (amostra representativa).
  • Derive métricas (contagens, percentis, taxa de erro, tendências 24h/7d).
  • Aplique anonimização/hashing para identificadores sensíveis.
  • Contextualize: explique ao modelo o que cada métrica significa e como foi calculada.

Dispare o Remote Quick Command na StackSpot

  • Pré-requisitos:
    • Token de acesso da StackSpot e URL base da API:duas variáveis de ambiente são suficientes: token e base URL.
    • Slug ou ID do Quick Command:ele fica visível na interface e na URL do comando).
    • Biblioteca HTTP, como por exemplo, requests.
Estruture os dados para o modelo (evite logs brutos)
Normalize campos (timestamp ISO, serviço, endpoint, código, severidade, host, ambiente).
Remova os eventos equivalentes (duplicados) e compacte stack traces (amostra representativa).
Derive métricas (contagens, percentis, taxa de erro, tendências 24h/7d).
Aplique anonimização/hashing para identificadores sensíveis.
Contextualize: explique ao modelo o que cada métrica significa e como foi calculada.  Dispare o Remote Quick Command na StackSpot
Pré-requisitos:
Token de acesso da StackSpot e URL base da API:duas variáveis de ambiente são suficientes: token e base URL.
Slug ou ID do Quick Command:ele fica visível na interface e na URL do comando).
Biblioteca HTTP, como por exemplo, requests.
Exemplo de código para obter o token de acesso.
  • Execução:

1. Monte o payload com:

  • Referência ao conjunto de dados (ou o próprio conteúdo, conforme tamanho).
  • Metadados de período, ambiente e filtros aplicados.

             2. Faça o POST para criar a execução do Quick Command; guarde o ID de execução.

               3. Estratégia de retorno:

  • Callback: exponha um endpoint para receber a resposta quando concluída.
  • Polling: consulte periodicamente o status até receber o resultado.
Execução:
1. Monte o payload com:
Referência ao conjunto de dados (ou o próprio conteúdo, conforme tamanho).
Metadados de período, ambiente e filtros aplicados.
 2. Faça o POST para criar a execução do Quick Command; guarde o ID de execução.  3. Estratégia de retorno:
Callback: exponha um endpoint para receber a resposta quando concluída.
Polling: consulte periodicamente o status até receber o resultado.
Exemplo de código para fazer uma chamada para a execução do Quick Command e esperar o retorno da chamada.
  1. Converta a análise em uma entrega acionável:
  • Ao receber o relatório (ex.: Markdown), salve a versão no repositório do time ou um bucket.
  • Mostre destaques no seu dashboard interno:
    • Principais gargalos por endpoint.
    • Erros mais frequentes e sua evolução.
    • Impacto em pessoas usuárias e transações críticas.
  • Gere tickets automatizados (bug/tech debt) quando os critérios forem atingidos (ex.: erro > 2% por 15 min).
analisador de logs com splunk
Resultado do relatório gerado pela StackSpot com as informações em formato Markdown com os 10 principais problemas, com os campos Descrição do Erro, APIs, App, Status, % Carga, Tendência, Raiz e Próximos passos.

Esquema de dados recomendado para análise:

  • Campos brutos normalizados:
    • timestamp, ambiente (prod/hml), serviço, endpoint, host/pod, status_code, severity, latency_ms, error_code, message resumida, stacktrace_amostra.
  • Campos derivados:
    • count, error_rate, p95_latency, p99_latency, unique_users, tendência_24h/7d, top_causes.
  • Identificadores de traçado/correlação:
    • splunk_job_id, kc_execution_id, request_id (se houver).
  • Metadados:
    • janela_de_análise (ex.: última 1h), filtros aplicados, versão do serviço.

Boas práticas de arquitetura e operação

  • Não alimente o LLM com dados brutos: sempre normalize, agregue e resuma.
  • Divida grandes volumes em lotes e forneça um índice/manifesto; evite timeouts.
  • Resiliência:
    • Retentativas com backoff, circuit breaker e timeouts na API do Splunk e do Stackspot.
    • Idempotência: use chaves de deduplicação por janela de análise.
  • Segurança:
    • Omitir PII/siglas sensíveis; aplicar mascaramento.
    • Rotacionar tokens e restringir escopos.
  • Observabilidade:
    • Logar ids de job/execução para rastreabilidade ponta a ponta.
    • Métricas de latência/sucesso da pipeline.
  • Custo e performance:
    • Cuidado com queries SPL muito amplas; prefira filtros e períodos objetivos.
    • Pré-agregue no Splunk quando possível para reduzir payload.

Boas práticas de operação e escalabilidade:

  • Agende execuções:
    • Cron/Job Scheduler por serviço ou por domínio de negócio.
    • Triggers por alerta do Splunk quando um limiar for ultrapassado.
  • Escale por ambiente:
    • Produção e pré-produção com janelas e thresholds diferentes.
  • Evolua para eventos:
    • Publique resultados normalizados em uma fila/stream (ex.: Kafka) e acione Quick Commands conforme regras de roteamento.

Relatório final

O que o relatório final entrega:

  • Insights práticos, por exemplo:
    • Endpoint X apresentou taxa de erro 500 de 4,2% na última hora (p95 1,9s), com aumento de 120% vs. 24h. Possível correlação com release 1.4.3.
    • Serviço Y degradou p99 em 35% durante pico 12:00–12:15; gargalo em consulta Z (falta índice).
    • Top 3 falhas por stacktrace resumido, com recomendações de mitigação e links para dashboards.
  • Recomendações objetivas:
    • Ação imediata (rollback/feature flag/ajuste de timeout).
    • Correção estrutural (índice, pooling, circuit breaker, cache).
    • Monitoramento adicional (novo painel/alerta).

Diferenças e semelhanças com Agentes

  • Semelhança: execução orquestrada, exposta via API, com controle de fluxo e callbacks.
  • Diferença: Quick Commands são ótimos para composições determinísticas e pipelines bem definidas, onde você controla entradas e saídas com mais previsibilidade.

Dicas para elevar ainda mais os resultados

  • Persistência:
    • Além de JSON, salve agregações em uma base relacional para séries temporais e em uma base vetorial para navegação semântica e RAG.
  • Camada de conhecimento:
    • Gere sumários diários/semanais e alimente um corpus para consultas naturais, como por exemplo: “Quais endpoints mais degradaram no mês?”).
  • Guardrails:
    • Prompts e validações para garantir que recomendações sigam padrões do time (SLOs, políticas de segurança).
  • Automação:
    • Integre com o sistema de tickets e com pipelines de rollout para fechar o ciclo de feedback.
Esquema de dados recomendado para análise:
Campos brutos normalizados:
timestamp, ambiente (prod/hml), serviço, endpoint, host/pod, status_code, severity, latency_ms, error_code, message resumida, stacktrace_amostra.
Campos derivados:
count, error_rate, p95_latency, p99_latency, unique_users, tendência_24h/7d, top_causes.
Identificadores de traçado/correlação:
splunk_job_id, kc_execution_id, request_id (se houver).
Metadados:
janela_de_análise (ex.: última 1h), filtros aplicados, versão do serviço.
Boas práticas de arquitetura e operação
Não alimente o LLM com dados brutos: sempre normalize, agregue e resuma.
Divida grandes volumes em lotes e forneça um índice/manifesto; evite timeouts.
Resiliência:
Retentativas com backoff, circuit breaker e timeouts na API do Splunk e do Stackspot.
Idempotência: use chaves de deduplicação por janela de análise.
Segurança:
Omitir PII/siglas sensíveis; aplicar mascaramento.
Rotacionar tokens e restringir escopos.
Observabilidade:
Logar ids de job/execução para rastreabilidade ponta a ponta.
Métricas de latência/sucesso da pipeline.
Custo e performance:
Cuidado com queries SPL muito amplas; prefira filtros e períodos objetivos.
Pré-agregue no Splunk quando possível para reduzir payload.  Boas práticas de operação e escalabilidade:
Agende execuções:
Cron/Job Scheduler por serviço ou por domínio de negócio.
Triggers por alerta do Splunk quando um limiar for ultrapassado.
Escale por ambiente:
Produção e pré-produção com janelas e thresholds diferentes.
Evolua para eventos:
Publique resultados normalizados em uma fila/stream (ex.: Kafka) e acione Quick Commands conforme regras de roteamento.
Relatório final
O que o relatório final entrega:
Insights práticos, por exemplo:
Endpoint X apresentou taxa de erro 500 de 4,2% na última hora (p95 1,9s), com aumento de 120% vs. 24h. Possível correlação com release 1.4.3.
Serviço Y degradou p99 em 35% durante pico 12:00–12:15; gargalo em consulta Z (falta índice).
Top 3 falhas por stacktrace resumido, com recomendações de mitigação e links para dashboards.
Recomendações objetivas:
Ação imediata (rollback/feature flag/ajuste de timeout).
Correção estrutural (índice, pooling, circuit breaker, cache).
Monitoramento adicional (novo painel/alerta).
Diferenças e semelhanças com Agentes
Semelhança: execução orquestrada, exposta via API, com controle de fluxo e callbacks.  Diferença: Quick Commands são ótimos para composições determinísticas e pipelines bem definidas, onde você controla entradas e saídas com mais previsibilidade.
Dicas para elevar ainda mais os resultados
Persistência:
Além de JSON, salve agregações em uma base relacional para séries temporais e em uma base vetorial para navegação semântica e RAG.
Camada de conhecimento:
Gere sumários diários/semanais e alimente um corpus para consultas naturais, como por exemplo: “Quais endpoints mais degradaram no mês?”).
Guardrails:
Prompts e validações para garantir que recomendações sigam padrões do time (SLOs, políticas de segurança).
Automação:
Integre com o sistema de tickets e com pipelines de rollout para fechar o ciclo de feedback.

Você ainda pode configurar um agente de IA específico para abordar a tarefa atrelado ao seu prompt do Quick Command, dando a ele a possibilidade de criar vários perfis diferentes de especialista para trabalhar em conjunto ao seu fluxo. 

A seguir, trago um exemplo de Prompt para configurar o agente de observabilidade:

Prompt utilizado no agente de observabilidade

Considere que você é um assistente de IA com mais de 10 anos de experiência em observabilidade e DevOps. Sua tarefa é analisar logs no Splunk, identificar cada erro e fornecer uma análise completa. Além disso, você deve sugerir várias soluções para os problemas identificados. Considere os seguintes pontos ao fazer sua análise:

1. Identifique e categorize todos os erros nos logs;

2. Forneça uma análise detalhada de cada erro, incluindo possíveis causas e impactos;

3. Sugira pelo menos três soluções para cada problema identificado, priorizando a eficácia e a facilidade de implementação.

4. Considere práticas recomendadas de DevOps e observabilidade ao formular suas sugestões;

5. Mantenha a comunicação clara e concisa, facilitando a compreensão para equipes técnicas e não técnicas.

Exemplo de saída esperada:

– Erro identificado: [Descrição do erro]

– Análise: [Detalhes da análise]

– Sugestões:

  1. [Solução 1]

  2. [Solução 2]

  3. [Solução 3]

Resultado do layout da análise do Quick Command

C
🎯 TEMPLATE PREMIUM – “ANALYTICAL RADAR DE ERROS”  
(versão repaginada ‑ clean, visual e 100 % executiva)


════════════════════════════════════════════════════════════
📌 CONTEXTO
Você é um(a) SRE /Data-Analyst de Observabilidade. Receberá uma
tabela Splunk com os campos:


• month • status • api_name • json_content • app • count


Sua missão:


1. Resumir, em até <top_n> itens, os principais problemas do período <periodo>.  
2. Para cada problema entregar:  
   • Descrição resumida do erro.  
   • APIs / métodos impactados (api_name).  
   • Serviços emissores (app).  
   • HTTP status dominante.  
Carga (% sobre o total de erros).  
   • Tendência mensal (crescendo, caindo ou estável).  
   • Raiz provável ou próximo passo de investigação.  


3. Identificar gargalos sistêmicos e classificá-los em:  
   a) Up-stream (erro vem de sistemas externos)  
   b) In-process (bug / regra de negócio local)  
   c) Down-stream (erro em dependência chamada).  


4. Agrupar os erros em clusters lógicos usando:  
status (4xx, 5xx, 422)  
   • Trechos recorrentes de json_content (“Index and length…”, “The circuit is now open…”, etc.)  
   • app + api_name (mesmo endpoint em serviços diferentes).  


5. Gerar duas listas auxiliares:  
   • “Erros de Volume Muito Alto” (> <limiar_volumes> ocorrências)  
   • “Erros Emergentes” (crescimento > <limiar_crescimento>% mês-a-mês).  


Formato de saída exigido:  
I.   Visão Geral (KPIs)  
II.  Top <top_n> Problemas Detalhados (tabela)  
III. Gargalos Sistêmicos (bullets)  
IV.  Listas Auxiliares  
V.   Ações Recomendadas e Squads Envolvidas


════════════════════════════════════════════════════════════
🔎 PARÂMETROS-CHAVE  ➜  PREENCHER ANTES DE ENVIAR
• <top_n>              → 10  
• <periodo>            → 2025-06  
• <limiar_volumes>     → 30 000  
• <limiar_crescimento> → 20 %


════════════════════════════════════════════════════════════
🚀 FLUXO DE USO  
1. Ajuste os 4 parâmetros-chave acima.  
2. Cole, logo após a frase “Eis a tabela:”, o JSON exportado do Splunk.  
3. Envie ao ChatGPT.  
4. Receba o resultado estruturado (I-V) pronto para compartilhar em
   dailies, post-mortems e canais executivos.


────────────────────────────────────────────────────────────────────
REFERÊNCIA RÁPIDA – POR QUE ESSES CAMPOS?
────────────────────────────────────────────────────────────────────
• month + count → tendência, regressões, campanhas.  
• status + json_content → distingue timeout de violação de negócio.  
• api_name + app → identifica se o problema é centralizado ou distribuído.  
• json_content repetido → clusterização fácil sem regex extra.


────────────────────────────────────────────────────────────────────
DICAS DE FILTRO / INVESTIGAÇÃO
────────────────────────────────────────────────────────────────────
1. ORDER BY count DESC → “Erros de Volume Muito Alto”.  
2. status = 500 AND json_content ~ “circuit is now open” → circuito saturado.  
3. month-over-month COUNT BY api_name → “Erros Emergentes”.  
4. Para 400/422 veja “code” em json_content → violações de negócio.




Exemplo:


Eis a tabela:  
```json
 {{input_data}} 
```


════════════════════════════════════════════════════════════
📄 LAYOUT DA RESPOSTA (gerado pela IA)


I.  VISÃO GERAL (KPIs)  
    • Total de erros, erro médio/dia, APIs afetadas, apps afetados  
    • Distribuição 4xx x 5xx x 422 (%)


II. TOP <top_n> PROBLEMAS (tabela)


| # | Descrição do Erro                             | API(s) | App(s) | Status | % Carga | Tendência | Raiz / Next Step |
|---|-----------------------------------------------|--------|--------|--------|---------|-----------|------------------|
| 1 | …                                             | …      | …      | 500    | 37 %    | ⬆️        | …                |
| … |                                               |        |        |        |         |           |                  |


III. GARGALOS SISTÊMICOS  
• Up-stream → …  
• In-process → …  
• Down-stream → …


IV. LISTAS AUXILIARES  
• Erros de Volume Muito Alto (> <limiar_volumes>)  
• Erros Emergentes (> <limiar_crescimento>% M/M)


V. AÇÕES RECOMENDADAS & SQUADS  
• Squad X → ação 1, ação 2
• Squad Y → …


════════════════════════════════════════════════════════════
🧩 CLUSTERIZAÇÃO SUGERIDA
• status buckets (4xx, 5xx, 422)  
• Padrões em json_content (“Index and length…”, “circuit open…”)  
• Combinação app + api_name


════════════════════════════════════════════════════════════
💡 DICAS RÁPIDAS
1. `ORDER BY count DESC` → achar “Erros de Volume Muito Alto”.  
2. `status=500 AND json_content LIKE "circuit open"` → identificar circuit-breaker.  
3. `timechart span=1mon count BY api_name` → detectar emergentes.  
4. Para 400/422 → inspecionar campo `code` dentro de json_content.


════════════════════════════════════════════════════════════</limiar_crescimento></limiar_volumes></top_n></limiar_crescimento></limiar_volumes></periodo></top_n></top_n></limiar_crescimento></limiar_volumes></periodo></top_n>


 {{input_data}}

Analisador de Logs com Splunk: transformando informações em vantagem competitiva 

Ao combinar Splunk e StackSpot AI com Remote Quick Commands, você cria uma ponte entre observabilidade e ação. O segredo não está apenas em “chamar o modelo”, mas em preparar dados de forma lógica, contextualizada e escalável, e em orquestrar um fluxo robusto de ponta a ponta. 

O resultado é um relatório acionável que aponta gargalos, quantifica impacto e sugere correções concretas, acelerando a resposta a incidentes e a evolução do produto.

Para implementar no seu time, comece por pequenas partes: uma query SPL focal, normalização básica, execução de um Quick Commands e um relatório que responda a uma pergunta de negócio. Itere a partir daí, medindo tempo de detecção, tempo de mitigação e redução de regressões. É assim que logs viram vantagem competitiva.

Posts relacionados

Continue explorando a StackSpot AI

Ícone de uma Folha de Documentos, na cor laranja vibrante, sobre fundo transparente.

Cases

Confira como impulsionamos negócios com soluções que economizam tempo.

Ícone de um Livro, na cor laranja vibrante, sobre fundo transparente.

Imprensa

Confira as últimas notícias, conteúdos e destaques da StackSpot na mídia.

Ícone de uma Pasta de documentos, na cor laranja vibrante, sobre fundo transparente.

Docs

Tudo o que você precisa para dominar a StackSpot AI, de forma simples e em um só lugar.

Ícone de uma Pessoa representando um Usuário, na cor laranja vibrante, sobre fundo transparente.

Sobre

Sua plataforma de agentes inteligentes para todo o ciclo de desenvolvimento.

Receba a nossa newsletter

Compartilhamos insights, artigos e conteúdos relevantes sobre tecnologia. Uma vez por mês, sem encher sua caixa de entrada.