Use o Filebeat para enviar logs do servidor HTTP Apache a uma instância do Alibaba Cloud Elasticsearch para análise. O pipeline funciona da seguinte forma: o Filebeat é executado em uma instância do Elastic Compute Service (ECS), monitora o log de acesso do Apache e encaminha os eventos de log ao Alibaba Cloud Logstash para filtragem. Em seguida, o Logstash grava os dados processados no Elasticsearch. O Kibana permite consultar e visualizar os resultados.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância do Alibaba Cloud Elasticsearch e uma instância do Alibaba Cloud Logstash na mesma versão e na mesma Virtual Private Cloud (VPC). Como o Logstash recebe dados do Filebeat e os encaminha ao Elasticsearch, todos os três componentes devem compartilhar a mesma rede
-
Uma instância do Alibaba Cloud ECS na mesma VPC e região das instâncias do Elasticsearch e do Logstash. O Filebeat coleta logs apenas de instâncias do ECS na mesma região e VPC — não há suporte para coleta via Internet
ImportanteO Beats oferece suporte apenas aos sistemas operacionais Alibaba Cloud Linux, Red Hat e CentOS.
Criação automática de índices ativada na sua instância do Elasticsearch. O Beats exige esse recurso para criar índices automaticamente. Por padrão, o Alibaba Cloud Elasticsearch desativa a criação automática de índices por motivos de segurança. Para obter instruções, consulte Configurar parâmetros YML
Um serviço httpd do Apache em execução na instância do ECS, com logs formatados em JSON. Consulte Etapa 1: Configurar o serviço httpd do Apache para ver a configuração necessária
Cloud Assistant e Docker instalados na instância do ECS. Para o Cloud Assistant, consulte Instalar o Agente do Cloud Assistant. Para o Docker, consulte Instalar e usar o Docker e o Docker Compose
Para criar as instâncias necessárias, siga as instruções nestes tópicos: Criar uma instância do Alibaba Cloud Elasticsearch, Criar uma instância do Alibaba Cloud Logstash e Criar uma instância do ECS usando o assistente.
Etapa 1: Configurar o serviço httpd do Apache
Configure o Apache para gravar logs de acesso no formato JSON. Logs em JSON permitem que o Logstash analise cada campo individualmente sem um padrão grok personalizado, simplificando a configuração do pipeline.
No arquivo httpd.conf, adicione a seguinte diretiva LogFormat e atualize a diretiva CustomLog para usá-la:
LogFormat "{\"@timestamp\":\"%{%Y-%m-%dT%H:%M:%S%z}t\",\"client_ip\":\"%{X-Forwa rded-For}i\",\"direct_ip\": \"%a\",\"request_time\":%T,\"status\":%>s,\"url\":\"%U%q\",\"method\":\"%m\",\"http_host\":\"%{Host}i\",\"server_ip\":\"%A\",\"http_referer\":\"%{Referer}i\",\"http_user_agent\":\"%{User-agent}i\",\"body_bytes_sent\":\"%B\",\"total_bytes_sent\":\"%O\"}" access_log_json
# Comment out the original CustomLog line, then add:
CustomLog "logs/access_log" access_log_json
Essa configuração captura os seguintes campos em cada entrada de log: @timestamp, client_ip, direct_ip, request_time, status, url, method, http_host, server_ip, http_referer, http_user_agent, body_bytes_sent e total_bytes_sent.
Para referência, consulte Criar manualmente um site de e-commerce Magento 2 (Ubuntu).
Etapa 2: Configurar e instalar o coletor Filebeat
Faça login no console do Alibaba Cloud Elasticsearch.
Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, clique em Beats Data Shippers.
-
Se esta for a primeira vez que você acessa a página Beats Data Shippers, clique em OK no prompt de autorização para permitir que o sistema crie uma função vinculada ao serviço para sua conta.
ImportanteNão exclua a função vinculada ao serviço. O Beats depende dela e das regras especificadas. Para mais informações, consulte Funções vinculadas ao serviço do Elasticsearch.
Na área Create Shipper, clique em ECS Logs.
-
Configure o coletor. Para detalhes da configuração, consulte Coletar logs de serviço do ECS. Para obter uma lista completa de opções YML, consulte Configuração YML do coletor. Use as seguintes configurações:
NotaDefina o Output do coletor como o ID da sua instância do Logstash — não da instância do Elasticsearch. Não especifique o parâmetro Output novamente na configuração YML. Para o diretório de arquivos do Filebeat, insira o caminho do diretório de logs do Apache e ative a coleta de dados de log na configuração YML.
Clique em Next.
No assistente Install Shipper, selecione a instância do ECS configurada na Etapa 1.
Clique em Start para iniciar o coletor.
Quando a caixa de diálogo Start Shipper aparecer, clique em Back to Beats Shippers para retornar à página Beats Data Shippers.
Na seção Manage Shippers, aguarde até que o Shipper Status mude para Enabled e clique em View Instances na coluna Actions.
Na página View Instances, confirme se Installed Shippers exibe o status Normal Heartbeat. Isso indica que o coletor está instalado e em execução.
Etapa 3: Configurar um pipeline do Logstash
No painel de navegação à esquerda do console do Elasticsearch, clique em Logstash Clusters.
Na coluna Actions da sua instância do Logstash, clique em Manage Pipeline.
Na página Pipelines, clique em Create Pipeline.
-
Configure o pipeline com as seguintes definições. Para instruções detalhadas, consulte Gerenciar pipelines com arquivos de configuração.
input { beats { port => 8000 } } filter { json { source => "message" remove_field => "@version" remove_field => "prospector" remove_field => "beat" remove_field => "source" remove_field => "input" remove_field => "offset" remove_field => "fields" remove_field => "host" remove_field => "message" } } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm00******.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "<YOUR_PASSWORD>" index => "<YOUR_INDEX>" } }Substitua os espaços reservados pelos valores reais:
Espaço reservado
Descrição
http://es-cn-mp91cbxsm00******.elasticsearch.aliyuncs.com:9200Endpoint da sua instância do Elasticsearch. Encontre-o na página Basic Information da instância. Para mais informações, consulte Visualizar as informações básicas de uma instância.
<YOUR_PASSWORD>Senha da sua instância do Elasticsearch
<YOUR_INDEX>Nome do índice do Elasticsearch onde os dados serão gravados
As seções do pipeline funcionam da seguinte maneira:
Seção
Função
inputEscuta na porta 8000 os dados encaminhados pelo Beats
filterAplica o plugin JSON para analisar o campo
messagee remove campos de metadados desnecessários para análise (@version,prospector,beat,source,input,offset,fields,host,message)outputGrava os eventos processados no índice do Elasticsearch especificado
NotaA configuração de
filteracima destina-se a este cenário de exemplo. Ajuste a listaremove_fielde adicione outros plugins de filtro conforme necessário para o seu caso de uso. Para ver os plugins de filtro disponíveis, consulte Plugins de filtro.
Etapa 4: Verificar a coleta de dados
-
Faça login no console do Kibana do seu cluster do Elasticsearch. Para obter instruções, consulte Fazer login no console do Kibana.
NotaEste exemplo usa o Elasticsearch V6.7.0. As etapas podem variar em outras versões.
No painel de navegação à esquerda, clique em Dev Tools.
-
No Console, execute a seguinte consulta para confirmar se os dados de log estão sendo gravados no índice:
GET <YOUR_INDEX>/_searchSubstitua
<YOUR_INDEX>pelo nome do índice especificado na seçãooutputdo pipeline do Logstash. -
No painel de navegação à esquerda, clique em Discover. Selecione um intervalo de tempo para navegar pelos eventos de log coletados.
NotaSe nenhum dado aparecer, tente ampliar o intervalo de tempo — por padrão, o Kibana mostra apenas os últimos 15 minutos. Verifique também se você criou um padrão de índice para
<YOUR_INDEX>(Kibana > Management > Kibana > Index Patterns > Create Index Pattern).
Próximos passos
Após confirmar que os dados de log do Apache estão fluindo para o Elasticsearch, você pode:
Criar painéis e visualizações no Kibana para monitorar tráfego, taxas de erro e tempos de resposta.
Refinar a seção
filterdo Logstash para extrair campos adicionais ou enriquecer eventos de log com dados geográficos usando o plugin GeoIP.Revisar a Configuração YML do coletor para adicionar mais caminhos de log ou ajustar o tratamento de múltiplas linhas.