Transmita logs do Log Service para o Splunk em tempo real com este add-on.
Como funciona
O add-on:
Cria um grupo de consumidores do Log Service por meio de uma entrada de dados do Splunk para ingerir logs em tempo real.
Envia os logs coletados para um indexador do Splunk usando o protocolo privado do Splunk ou o HTTP Event Collector (HEC).
Este é um add-on de coleta de dados. Instale-o apenas em um heavy forwarder do Splunk. Não o instale em indexadores ou search heads.
Conceitos principais
Uma entrada de dados atua como consumidor para ingestão de logs.
Um grupo de consumidores contém vários consumidores que ingerem dados conjuntamente de um logstore. Cada log é processado por apenas um consumidor para evitar duplicatas.
-
Um logstore contém múltiplos shards.
Cada shard é atribuído a apenas um consumidor.
Um consumidor pode receber a atribuição de vários shards.
O nome de cada consumidor combina o nome do grupo de consumidores, o hostname, o nome do processo e o tipo de protocolo de evento, garantindo unicidade dentro do grupo.
Pré-requisitos
-
Obtenha um par de AccessKey para o Log Service.
Use o Resource Access Management (RAM) do Alibaba Cloud para obter um par de AccessKey para seu projeto do Log Service. AccessKey pair.
Use o assistente de permissões para configurar as permissões do RAM. Configure the permission assistant. O código abaixo mostra uma política comum do RAM:
NotaSubstitua
<Project name>e<logstore name>pelos nomes reais. Há suporte para caracteres curinga (*).{ "Version": "1", "Statement": [ { "Action": [ "log:ListShards", "log:GetCursorOrData", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup", "log:ConsumerGroupHeartBeat", "log:ConsumerGroupUpdateCheckPoint", "log:ListConsumerGroup", "log:CreateConsumerGroup" ], "Resource": [ "acs:log:*:*:project/<Project name>/logstore/<LogStore name>", "acs:log:*:*:project/<Project name>/logstore/<LogStore name>/*" ], "Effect": "Allow" } ] } -
Verifique a versão do Splunk e o ambiente de execução.
Certifique-se de usar a versão mais recente do add-on.
Sistema operacional: Linux, macOS ou Windows.
Versão do Splunk: heavy forwarder do Splunk 8.0 ou posterior e indexador do Splunk 7.0 ou posterior.
-
Configure o HTTP Event Collector (HEC) do Splunk. Configure HTTP Event Collector on Splunk Enterprise.
Necessário apenas se você usar o HEC. Pule esta etapa caso use o protocolo privado do Splunk.
NotaAo criar um token do Event Collector, não há suporte para o recurso de reconhecimento do indexador.
-
Conclua a coleta de logs de contêiner do cluster Kubernetes.
Antes de enviar logs para o Splunk, certifique-se de que a coleta de logs de contêiner do cluster Kubernetes esteja concluída e que o Log Service já contenha os dados coletados. Recomendamos implantar o LoongCollector ou Logtail como DaemonSet no cluster ACK para coletar a saída padrão e arquivos de log dos contêineres no Log Service. Para mais informações, consulte @xref node="5903944" Kubernetes container log collection @/xref .
NotaSó é possível entregar logs ao Splunk com o add-on depois que o Log Service contiver os dados de log de contêiner coletados.
Instalar o add-on
Faça login na interface web do Splunk e use um dos métodos a seguir para instalar o add-on.
Este é um add-on de coleta de dados. Instale-o apenas em um heavy forwarder do Splunk. Não o instale em indexadores ou search heads.
-
Método 1: Instalação via Splunkbase
Clique no ícone
.Na página Apply, clique em Browse more apps.
Pesquise Alibaba Cloud Log Service Add-on for Splunk e clique em Install.
Reinicie o serviço do Splunk conforme solicitado.
-
Método 2: Instalação a partir de arquivo
Clique no ícone
.Na página Apply, clique em Install app from file.
-
Selecione o arquivo .tgz desejado e clique em Upload.
Baixe o arquivo .tgz necessário em Splunkbase.
Clique em Install.
Reinicie o serviço do Splunk conforme solicitado.
Configurar o add-on
Se o Splunk não estiver em execução em uma instância ECS do Alibaba Cloud, use um par de AccessKey para acessar o Log Service:
Na interface web do Splunk, clique em Alibaba Cloud Log Service Add-on for Splunk.
-
Configure uma conta global.
Acesse a aba e configure o par de AccessKey para o Log Service.
NotaOs campos Username e Password correspondem, respectivamente, ao AccessKey ID e ao AccessKey Secret do Log Service.
-
Defina o nível de log do add-on.
Acesse a aba e defina o nível de log do add-on.
-
Crie uma entrada de dados.
Clique em Input para acessar a página Input.
-
Clique em Create New Input para criar uma nova entrada de dados.
Tabela 1. Parâmetros da entrada de dados
Parâmetro
Obrigatório e formato
Descrição
Exemplo
Name
Sim, String
Nome globalmente exclusivo para a entrada de dados.
Nenhum
Interval
Sim, Inteiro
Intervalo em segundos antes de o processo de entrada de dados reiniciar após a saída.
Valor padrão: 10
Index
Sim, String
Índice do Splunk.
Nenhum
SLS AccessKey
Sim, String
Par de AccessKey do Alibaba Cloud (AccessKey ID e AccessKey Secret).
NotaOs campos Username e Password correspondem, respectivamente, ao AccessKey ID e ao AccessKey Secret do Log Service.
Nome de usuário e senha configurados para a conta global.
SLS endpoint
Sim, String
Endpoint do Log Service. Endpoints.
-
cn-huhehaote.log.aliyuncs.com -
https://cn-huhehaote.log.aliyuncs.com
SLS project
Sim, String
Projeto do Log Service. Manage a project.
Nenhum
SLS logstore
Sim, String
Logstore do Log Service. Para mais informações, consulte Gerenciar um logstore.
Nenhum
SLS consumer group
Sim, String
Grupo de consumidores do Log Service. Para escalonamento horizontal, use o mesmo nome de grupo de consumidores em várias entradas de dados. Use consumer groups to ingest logs.
Nenhum
SLS cursor start time
Sim, String
Hora de início da ingestão de logs. Aplica-se apenas quando o grupo de consumidores é criado pela primeira vez. Grupos existentes retomam a partir do último checkpoint salvo.
NotaEste horário baseia-se no momento em que o log chega ao servidor.
Valores válidos:
begin,endou uma hora no formato ISO 8601 (por exemplo,2018-12-26 0:0:0+8:00).SLS heartbeat interval
Sim, Inteiro
Intervalo de heartbeat em segundos entre o consumidor e o servidor.
Valor padrão: 60
SLS data fetch interval
Sim, Inteiro
Intervalo em segundos para buscar logs. Evite valores baixos quando a frequência de logs for reduzida.
Valor padrão: 1
Consumer processor
Não, String
Processador de consumidor contendo SPL (por exemplo, consume-processor-1). Deve ser criado previamente no projeto. Apenas Linux x86_64. Manage consumer processors.
Nenhum
Topic filter
Não, String
Lista de tópicos separados por ponto e vírgula para filtragem. Logs correspondentes a qualquer tópico listado não são enviados ao Splunk.
"TopicA;TopicB"indica que logs com o tópico "TopicA" ou "TopicB" são ignorados.Unfolded fields
Não, JSON
Mapeamento formatado em JSON de tópicos para listas de campos:
{"topicA": ["field_nameA1", "field_nameA2", ...], "topicB": ["field_nameB1", "field_nameB2", ...], ...}{"actiontrail_audit_event": ["event"] }significa que, para logs com o tópicoactiontrail_audit_event, a string no campoeventdo log é expandida em um objeto JSON.Event source
Não, String
Origem dos dados para o evento do Splunk.
Nenhum
Event source type
Não, String
Tipo de origem para o evento do Splunk.
Nenhum
Event retry times
Não, Inteiro
Defina como
0para tentativas ilimitadas.Valor padrão: 0
Event protocol
Sim
Protocolo para envio de eventos do Splunk. Se você selecionar Private protocol, os parâmetros de HEC abaixo não se aplicam.
-
HTTP para HEC
-
HTTPS para HEC
-
Private protocol
HEC host
Sim, String. Válido apenas quando Event protocol estiver definido como uma opção HEC.
Host do HEC. Set up and use HTTP Event Collector in Splunk Web.
Nenhum
HEC port
Sim, Inteiro. Válido apenas quando Event protocol estiver definido como uma opção HEC.
Porta do HEC.
Nenhum
HEC token
Sim, String. Válido apenas quando Event protocol estiver definido como uma opção HEC.
Token do HEC. About Event Collector tokens.
Nenhum
HEC timeout
Sim, Inteiro. Válido apenas quando Event protocol estiver definido como uma opção HEC.
Tempo limite do HEC em segundos.
Valor padrão: 120
-
Caso o Splunk esteja em execução em uma instância ECS do Alibaba Cloud, anexe uma função do RAM à instância para acessar o Log Service:
Certifique-se de que o Splunk esteja em execução na instância ECS à qual a função do RAM está anexada.
-
Anexe uma função do RAM à instância.
Crie uma função do RAM, conceda as permissões necessárias e anexe-a à instância ECS. Configure an instance RAM role.
Para a política de permissões da função do RAM, consulte a política na seção Prerequisites.
Na interface web do Splunk, clique em Alibaba Cloud Log Service Add-on for Splunk.
-
Configure uma conta global.
Acesse a aba e configure as informações da função do RAM para a instância ECS. Adicione uma conta com Username definido como
ECS_RAM_ROLEe Password definida como o nome da RAM role that you created in Step 1. -
Crie uma entrada de dados.
Clique em Input para acessar a página Input.
-
Clique em Create New Input para criar uma nova entrada de dados.
Defina o parâmetro SLS AccessKey como a conta global que você created in Step 3. Para obter informações sobre os outros parâmetros, consulte Data input parameters.
Pesquisar e visualizar logs
-
Pesquisar dados
Certifique-se de que a entrada de dados esteja ativada. Na home do Splunk, clique em Search & Reporting para consultar os logs de auditoria coletados.
No Splunk Enterprise, selecione o aplicativo App: Search & Reporting. Na barra de pesquisa, insira
*como caractere curinga para pesquisar todos os eventos e defina o intervalo de tempo como Last 24 hours. Os resultados da pesquisa exibem eventos de log de auditoria da plataforma cloud no formato JSON, incluindo campos como eventName, eventSource, eventTime e sourceIp. -
Visualizar logs internos
Execute
index="_internal" | search "SLS info"para visualizar informações relacionadas ao Log Service.Execute
index="_internal" | search "error"para visualizar mensagens de erro de execução.
Desempenho e segurança
-
Especificações de desempenho
Os fatores a seguir afetam o throughput do add-on:
Endpoint: Use um endpoint de rede pública, rede clássica, VPC ou aceleração global. Recomendamos endpoints de rede clássica ou VPC. Endpoints.
Largura de banda: Entre o Log Service e o heavy forwarder, e entre o heavy forwarder e o indexador.
Capacidade de processamento do indexador do Splunk.
Número de shards: Mais shards aumentam a capacidade de transferência de dados. Defina a quantidade com base na taxa de geração de logs da origem. Manage shards.
-
Quantidade de entradas de dados do Splunk: Mais entradas de dados associadas ao mesmo grupo de consumidores aumentam o throughput.
NotaA concorrência dos consumidores depende do número de shards no logstore do Log Service.
CPU e memória: Cada entrada de dados geralmente usa de 1 a 2 GB de memória e um núcleo de CPU.
Uma única entrada de dados pode ingerir logs a uma taxa de 1–2 MB/s. Defina o número de shards com base na taxa de geração de logs da origem.
Por exemplo, um logstore que produz 10 MB/s requer pelo menos 10 shards e 10 entradas de dados. Em uma única máquina, isso exige 10 núcleos de CPU e 12 GB de memória.
-
Alta disponibilidade
Grupos de consumidores salvam checkpoints no servidor; assim, se um consumidor parar, outro assumirá a partir do último checkpoint. Distribua as entradas de dados entre máquinas para garantir redundância. Para maior tolerância a falhas, inicie mais entradas de dados do que o número de shards disponíveis.
-
Uso de HTTPS
-
Log Service
Se o endpoint começar com
https://, comohttps://cn-beijing.log.aliyuncs.com, a conexão com o Log Service será automaticamente criptografada via HTTPS.O certificado do servidor
*.aliyuncs.comé emitido pela GlobalSign. Por padrão, a maioria das máquinas Linux e Windows confia automaticamente neste certificado. No caso raro de uma máquina não confiar neste certificado, consulte Install a trusted root CA or self-signed certificate. -
Splunk
Para usar o HEC sobre HTTPS, ative o SSL nas configurações globais do HEC no Splunk. Configure HTTP Event Collector on Splunk Enterprise.
-
-
Proteção de armazenamento do par de AccessKey
O par de AccessKey do Log Service e o token HEC do Splunk são armazenados no repositório criptografado do Splunk para evitar vazamento de credenciais.
Solução de problemas
-
Erros de configuração
Uma verificação básica de configuração é executada ao criar ou modificar uma entrada de dados. Data input parameters.
-
Ocorre um erro de configuração do Log Service, como falha na criação de um grupo de consumidores.
Comando:
index="_internal" | search "error"-
Log de erro:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: LogStoreNotExist, errorMessage: logstore xxxx does not exist -
Erro ConsumerGroupQuotaExceed
Um logstore suporta até 20 grupos de consumidores. Exclua grupos desnecessários no console do Log Service caso esteja próximo do limite. Exceder 20 grupos aciona um erro
ConsumerGroupQuotaExceed.
-
Erros de permissão
-
Sem permissão para acessar o Alibaba Cloud Log Service
Comando:
index="_internal" | search "error"-
Log de erro:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: SignatureNotMatch, errorMessage: signature J70VwxYH0+W/AciA4BdkuWxK6W8= not match
-
Falha na autenticação RAM do ECS
Comando:
index="_internal" | search "error"-
Log de erro:
ECS RAM Role detected in user config, but failed to get ECS RAM credentials. Please check if ECS instance and RAM role 'ECS-Role' are configured appropriately.O nome ECS-Role é um espaço reservado para o nome real da sua função do RAM.
-
Possíveis causas:
Confirme se o parâmetro SLS AccessKey na data input está configurado para usar a conta global que possui a função do RAM.
Verifique se a conta global está corretamente configurada para a função do RAM. O nome de usuário deve ser
ECS_RAM_ROLEe a senha deve ser o nome da função do RAM.Certifique-se de que a função do RAM esteja anexada à instância ECS.
Verifique se a entidade confiável da função do RAM é um serviço do Alibaba Cloud e se o serviço confiável é o Elastic Compute Service (ECS).
Confirme se a instância ECS com a função do RAM anexada é a mesma máquina que executa o Splunk.
-
Sem permissão para acessar o HEC
Comando:
index="_internal" | search "error"-
Log de erro:
ERROR HttpInputDataHandler - Failed processing http input, token name=n/a, channel=n/a, source_IP=127.0.0.1, reply=4, events_processed=0, http_input_body_size=369 WARNING pid=48412 tid=ThreadPoolExecutor-0_1 file=base_modinput.py:log_warning:302 | SLS info: Failed to write [{"event": "{\"__topic__\": \"topic_test0\", \"__source__\": \"127.0.0.1\", \"__tag__:__client_ip__\": \"10.10.10.10\", \"__tag__:__receive_time__\": \"1584945639\", \"content\": \"goroutine id [0, 1584945637]\", \"content2\": \"num[9], time[2020-03-23 14:40:37|1584945637]\"}", "index": "main", "source": "sls log", "sourcetype": "http of hec", "time": "1584945637"}] remote Splunk server (http://127.0.0.1:8088/services/collector) using hec. Exception: 403 Client Error: Forbidden for url: http://127.0.0.1:8088/services/collector, times: 3 -
Possíveis causas:
O HEC não está configurado ou ativado.
A configuração do HEC na entrada de dados está incorreta. Por exemplo, ao usar HTTPS, é necessário ativar a configuração de SSL.
Verifique se o recurso de reconhecimento do indexador está desativado para o token do HEC.
-
Latência de consumo
Visualize o status do grupo de consumidores no console do Log Service. Step 2: View the status of the consumer group.
Para resolver a latência de consumo, aumente o número de shards ou crie mais entradas de dados com o mesmo grupo de consumidores. Performance specifications.
-
Instabilidade de rede
Comando:
index="_internal" | search "SLS info: Failed to write"-
Log de erro:
WARNING pid=58837 tid=ThreadPoolExecutor-0_0 file=base_modinput.py:log_warning:302 | SLS info: Failed to write [{"event": "{\"__topic__\": \"topic_test0\", \"__source__\": \"127.0.0.1\", \"__tag__:__client_ip__\": \"10.10.10.10\", \"__tag__:__receive_time__\": \"1584951417\", \"content2\": \"num[999], time[2020-03-23 16:16:57|1584951417]\", \"content\": \"goroutine id [0, 1584951315]\"}", "index": "main", "source": "sls log", "sourcetype": "http of hec", "time": "1584951417"}] remote Splunk server (http://127.0.0.1:8088/services/collector) using hec. Exception: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')), times: 3
O add-on tenta novamente de forma automática. Se o problema persistir, entre em contato com o administrador da rede.
-
Alterar a hora de início do consumo
NotaO parâmetro SLS cursor start time aplica-se apenas quando o grupo de consumidores é criado pela primeira vez. Grupos existentes retomam a partir do último checkpoint.
Na página Input da interface web do Splunk, desative a entrada de dados alvo.
Faça login no console do Log Service. Na seção Data Consumption do logstore alvo, exclua o grupo de consumidores correspondente.
Na página Input da interface web do Splunk, clique em ao lado da entrada de dados alvo. Modifique o parâmetro SLS cursor start time e reinicie a entrada de dados.
-