Integrando o Splunk HTTP Event Collector com o Apache APISIX
API7.ai
February 10, 2022
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.
Clique em "Settings > Data Inputs" no canto superior direito da tela para verificar se o HEC padrão foi configurado com sucesso.
Já podemos ver o número de HECs na coluna Inputs do HTTP Event Collector, indicando que a configuração foi bem-sucedida.
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.
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.
Nome | Obrigatório | Valor Padrão | Descrição |
---|---|---|---|
endpoint | Sim | N/A | Informações de configuração do endpoint do Splunk HEC |
endpoint.uri | Sim | N/A | API de coleta de eventos do Splunk HEC |
endpoint.token | Sim | N/A | Token de identidade do Splunk HEC |
endpoint.channel | Não | N/A | Identificação do canal de envio do Splunk HEC, consulte: Sobre o Reconhecimento de Indexador do HTTP Event Collector |
endpoint.timeout | Não | 10 | Tempo limite de envio de dados do Splunk HEC em segundos. |
ssl_verify | Não | TRUE | Habilitar autenticação SSL, consulte: Documentação do OpenResty. |
max_retry_count | Não | 0 | Número máximo de tentativas antes da remoção do pipeline de processamento. |
retry_delay | Não | 1 | Número de segundos que a execução do processo deve ser atrasada se a execução falhar. |
buffer_duration | Não | 60 | A duração máxima (em segundos) da entrada mais antiga no lote deve ser processada primeiro. |
inactive_timeout | Não | 5 | Tempo máximo para atualizar o buffer em segundos. |
batch_max_size | Não | 1000 | Nú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".
Digite source="apache-apisix-splunk-hec-logging"
na caixa de pesquisa para consultar os logs de solicitação enviados.
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
- Integração do Apache APISIX com Kafka para Monitoramento de Logs em Tempo Real Eficiente
- Apache APISIX & RocketMQ Ajuda nas Capacidades de Monitoramento de Logs de API do Usuário
- Apache APISIX Integra-se ao Google Cloud Logging para Melhorar o Processamento de Logs
- Apache APISIX Integra-se ao SkyWalking para Criar um Processamento de Logs Completo