Integrando o Splunk HTTP Event Collector com o Apache APISIX

API7.ai

February 10, 2022

Ecosystem

A complexidade dos sistemas está aumentando à medida que a tecnologia evolui e a arquitetura empresarial se desenvolve. Os logs podem suportar e ser compatíveis com diferentes motores de análise para reduzir o custo para os usuários no processo de seleção, operação e manutenção. A análise e observação baseada em logs desempenha um papel muito importante como a base para garantir a estabilidade do sistema.

O Apache APISIX não é apenas um API Gateway com desempenho excepcional, mas também suporta a maioria das soluções de log de código aberto e comerciais mais populares por meio da comunicação com os usuários da comunidade sobre operações de dados e logs, incluindo: HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS), Google Cloud Logging, etc.

Agora temos uma nova adição à matriz de suporte de Loggers do Apache APISIX: Splunk HEC Logging.

Este artigo explica como configurar e usar o serviço Splunk HEC no Apache APISIX.

Sobre o Splunk HTTP Event Collector

Splunk é um mecanismo de busca de texto completo para dados de máquina que pode ser usado para coletar, indexar, pesquisar e analisar dados de uma variedade de aplicativos. De acordo com a classificação de mecanismos de busca do DB Engines, o Splunk está atualmente em segundo lugar e é um software de busca de texto completo amplamente utilizado. O Splunk, assim como o ElasticSearch, é um fluxo de dados quase em tempo real que fornece resultados de busca ininterruptos.

O Splunk HTTP Event Collector (HEC) é um coletor de eventos HTTP fornecido pelo Splunk que oferece a capacidade de enviar dados e eventos de aplicativos para o Splunk usando o protocolo HTTP(S).

Sobre o plugin splunk-hec-logging

O splunk-hec-logging é usado para encaminhar logs de solicitação do Apache APISIX para o Splunk para análise e armazenamento. Quando habilitado, o Apache APISIX captura as informações de contexto da solicitação durante a fase de Log, serializa-as no Formato de Dados de Evento do Splunk e as envia para a fila de lotes. Os dados na fila são enviados ao Splunk HEC quando a capacidade máxima de processamento da fila de lotes por lote é atingida ou quando o tempo máximo para atualizar o buffer é alcançado.

Como usar o plugin splunk-hec-logging

Configuração do Splunk

Implantar o Splunk Enterprise

Consulte o guia de instalação do Splunk para a implantação. Este artigo demonstrará a implantação via Docker.

Os parâmetros do comando Docker são os seguintes.

docker run -p 18088:8088 -p 18000:8000 \    # 8088 é a porta do HEC, 8000 é a porta do backend de gerenciamento
  -e "SPLUNK_PASSWORD=your-password" \      # Senha de login do administrador
  -e "SPLUNK_START_ARGS=--accept-license" \ # Aceitar os termos da licença (o Splunk fornecerá uma Licença de Teste Enterprise por padrão)
  -e "SPLUNK_HEC_TOKEN=your-hec-token" \    # Definir o token HEC padrão, isso criará um HEC padrão após a configuração
  -itd --rm --name splunk-example splunk/splunk:latest

Os parâmetros do comando são explicados na Documentação do Docker Splunk.

Configurar o Splunk HEC

O HEC padrão já está configurado e criado no Docker, então não entraremos no processo de criação manual aqui. Para detalhes sobre o processo de criação manual, consulte a documentação: Configurar e usar o HTTP Event Collector no Splunk Web.

Login no Splunk Enterprise e verificação do HEC

Acesse a porta mapeada do Docker através do navegador. Como você precisa mapear a porta 8000 do backend de gerenciamento para a porta 18000 do host, você pode acessá-la pelo navegador usando "endereço de loopback mais porta" no host durante a operação. Por exemplo: http://127.0.0.1:18000, o nome de usuário padrão para login é admin, e a senha é o valor de SPLUNK_PASSWORD definido na variável de ambiente no exemplo acima.

Conforme mostrado na figura abaixo, significa que o login foi bem-sucedido.

Splunk UI

Clique em "Settings > Data Inputs" no canto superior direito da tela para verificar se o HEC padrão foi configurado com sucesso.

HEC padrão

Já podemos ver o número de HECs na coluna Inputs do HTTP Event Collector, indicando que a configuração foi bem-sucedida.

Número de HECs

Neste ponto, você pode clicar em HTTP Event Collector para entrar na lista de detalhes do HEC e visualizar as informações do Token dos HECs.

Informações do Token dos HECs

Token Values é o valor de SPLUNK_HEC_TOKEN configurado na variável de ambiente do Docker acima.

Configuração do Apache APISIX

Habilitar o plugin splunk-hec-logging

Execute o seguinte comando para habilitar o plugin splunk-hec-logging.

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "plugins":{
        "splunk-hec-logging":{
            "endpoint":{
                // Endpoint do HEC
                "uri":"http://127.0.0.1:18088/services/collector",
                // Token do HEC
                "token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
            },
            // Tempo máximo (em segundos) para atualizar o buffer da fila de lotes
            "inactive_timeout":2,
             // Número máximo de entradas de log por fila de lotes
            "batch_max_size":10
        }
    },
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "uri":"/splunk.do"
}'

Os parâmetros do plugin são descritos na tabela a seguir.

NomeObrigatórioValor PadrãoDescrição
endpointSimN/AInformações de configuração do endpoint do Splunk HEC
endpoint.uriSimN/AAPI de coleta de eventos do Splunk HEC
endpoint.tokenSimN/AToken de identidade do Splunk HEC
endpoint.channelNãoN/AIdentificação do canal de envio do Splunk HEC, consulte: Sobre o Reconhecimento de Indexador do HTTP Event Collector
endpoint.timeoutNão10Tempo limite de envio de dados do Splunk HEC em segundos.
ssl_verifyNãoTRUEHabilitar autenticação SSL, consulte: Documentação do OpenResty.
max_retry_countNão0Número máximo de tentativas antes da remoção do pipeline de processamento.
retry_delayNão1Número de segundos que a execução do processo deve ser atrasada se a execução falhar.
buffer_durationNão60A duração máxima (em segundos) da entrada mais antiga no lote deve ser processada primeiro.
inactive_timeoutNão5Tempo máximo para atualizar o buffer em segundos.
batch_max_sizeNão1000Número máximo de entradas por fila de lotes.

Enviar a solicitação

Execute o seguinte comando para enviar uma solicitação ao Splunk.

$ curl -i http://127.0.0.1:9080/splink.do
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Fri, 10 Dec 2021 09:57:52 GMT
Server: APISIX/2.11.0

Hello, Splunk HEC Logging

Verificar o log

Faça login no console do Splunk e clique em "Search & Reporting".

Console do Splunk

Digite source="apache-apisix-splunk-hec-logging" na caixa de pesquisa para consultar os logs de solicitação enviados.

Consultar os logs

Desabilitar o plugin splunk-hec-logging

Remova a configuração do splunk-hec-logging para desabilitar o plugin.

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
    }
}'

Resumo

O Apache APISIX também está trabalhando atualmente em plugins adicionais para suportar a integração com mais serviços, então, se você estiver interessado, sinta-se à vontade para iniciar uma discussão em nosso GitHub Discussion ou se comunicar via lista de e-mails.

Artigos relacionados

Tags: