Introdução
O gerenciamento eficiente de logs de servidor web é crucial para manter o desempenho do seu site, resolver problemas e obter insights sobre o comportamento dos usuários. O Apache é um dos servidores web mais populares e gera logs de acesso e erro que contêm informações valiosas. Para gerenciar e analisar esses logs de forma eficiente, você pode usar o Logstash para processar e encaminhá-los para o OpenSearch gerenciado pela DigitalOcean para indexação e visualização.
Neste tutorial, nós vamos guiar você pelo processo de instalação do Logstash em uma Droplet, configurá-lo para coletar seus logs do Apache e enviá-los para o OpenSearch gerenciado para análise.
Pré-requisitos
- Droplet/s com o Servidor Web Apache instalado.
- Cluster OpenSearch Gerenciado
Passo 1 – Instalar o Logstash
O Logstash pode ser instalado usando arquivos binários ou através de repositórios de pacotes. Para gerenciamento e atualizações mais fáceis, é geralmente recomendado usar repositórios de pacotes.
Nesta seção, vamos guiar você através da instalação do Logstash em sua Droplet usando ambos os gerenciadores de pacotes APT e YUM.
Vamos identificar o OS:
Para Sistemas Baseados em APT (Ubuntu/Debian)
Baixe e instale a Chave de Assinatura Pública:
Você pode precisar instalar o pacote apt-transport-https
no Debian antes de prosseguir:
Salve a definição do repositório em /etc/apt/sources.list.d/elastic-8.x.list
:
Use o método echo
descrito acima para adicionar o repositório do Logstash. Não use add-apt-repository
pois isso adicionará uma entrada deb-src
também, mas nós não fornecemos um pacote de origem. Se você adicionou a entrada deb-src
, você verá um erro como o seguinte:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Apenas exclua a entrada deb-src
do arquivo /etc/apt/sources.list
e a instalação deve funcionar como esperado.
Execute sudo apt-get update
e o repositório estará pronto para uso. Você pode instalá-lo com:
Para Sistemas Baseados em YUM (CentOS/RHEL)
Baixe e instale a chave de assinatura pública:
Adicione o seguinte em seu arquivo /etc/yum.repos.d/logstash.repo
. Você pode usar o ‘tee’ para atualizar e criar o arquivo.
Seu repositório está pronto para uso. Você pode instalá-lo com:
Para mais informações, consulte a guia Instalando o Logstash.
Passo 2 – Configurando o Logstash para Enviar Logs para o OpenSearch
Uma pipeline do Logstash consiste em três estágios principais: entrada, filtro e saída. As pipelines do Logstash fazem uso de plugins. Você pode usar plugins da comunidade ou criar os seus próprios.
-
Entrada: Este estágio coleta dados de várias fontes. O Logstash suporta vários plugins de entrada para lidar com fontes de dados como arquivos de log, bancos de dados, filas de mensagens e serviços na nuvem.
-
Filtro: Esta etapa processa e transforma os dados coletados na etapa de entrada. Os filtros podem modificar, enriquecer e estruturar os dados para torná-los mais úteis e facilitar a análise.
-
Saída: Esta etapa envia os dados processados a um destino. Os destinos podem incluir bancos de dados, arquivos e armazenamentos de dados como o OpenSearch.
Passo 3 – Instalando o Plugin de Saída Open Search
O plugin de saída OpenSearch pode ser instalado executando o seguinte comando:
Mais informações podem ser encontradas neste repositório logstash-output-opensearch-plugin.
Agora vamos criar uma pipeline:
Crie um novo arquivo na pasta /etc/logstash/conf.d/ chamado apache_pipeline.conf
e copie o conteúdo seguinte.
Substitua <OpenSearch_Host>
pelo hostname do seu servidor OpenSearch e <OpenSearch_Password>
pela sua senha OpenSearch.
Vamos analisar a configuração acima.
-
ENTRADA: Isso é usado para configurar uma fonte de eventos. O plugin de entrada ‘file’ está sendo usado aqui.
-
path => “/var/log/apache2/access.log” : Especifica o caminho para o arquivo de log de acesso do Apache que o Logstash lerá.
Certifique-se que o serviço do Logstash tenha acesso ao caminho de entrada.
-
start_position => “beginning”: Define onde o Logstash deve começar a ler o arquivo de log. “beginning” indica que o Logstash deve começar a processar o arquivo do início, em vez do final
-
sincedb_path => “/dev/null”: Especifica o caminho para um arquivo sincedb. Os arquivos sincedb são usados pelo Logstash para manter registro da posição atual em arquivos de log, permitindo que ele continue de onde parou em caso de reinícios ou falhas.
-
tags => “apache_access”: Atribui uma etiqueta a eventos lidos a partir desta entrada. Etiquetas são úteis para identificar e filtrar eventos no Logstash, frequentemente usadas em estágios posteriores de saída ou filtragem da configuração. Estamos usando etiquetas para o último
- FILTRO: usado para processar os eventos.
Iniciando com condicionais:
Isso verifica se a tag
apache_access
existe no campo [tags] dos eventos de log recebidos. Nós usamos essa condicional para aplicar o filtro GROK apropriado para logs de acesso e erros do Apache. -
Filtro Grok (para Logs de Acesso do Apache):
O filtro grok
%{HTTPD_COMBINEDLOG}
é um padrão predefinido no Logstash usado para analisar o formato de log de acesso combinado do Apache. Isso extrai campos como endereço IP, horário, método HTTP, URI, código de estado, etc., do campo mensagem dos eventos entrantes. -
Filtro de Mutação
Remover
(opcional): Após as logs do Apache serem analisadas, usamos mutate-remove para remover certos campos. -
Condição Else: O bloco else é executado se a tag
apache_access
não estiver presente em [tags]. Este bloco else contém outro filtro GROK para logs de erros do Apache.Este filtro grok
%{HTTPD24_ERRORLOG}
analisa mensagens que correspondem ao formato de log de erros do Apache. Ele extrai campos relevantes para logs de erro, como timestamp, nível de log, mensagem de erro, etc.Padrões GROK podem ser encontrados em: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.
-
SAÍDA: O plugin de saída envia eventos para um destino específico.
O bloco de saída começa com uma condição if. Nós estamos usando condicionais if aqui
Esta condição if é usada para rotear logs para o OpenSearch em dois índices separados,
apache_error
eapache_access
.Vamos explorar o plugin de Saída OpenSearch:
hosts => "https://XXX:25060" Seu nome de host do Open search user => "doadmin" Seu usuário do Open search password => "XXXXX" Senha do OpenSearch index => "apache_error" Nome do índice no OpenSearch ssl_certificate_verification => true Habilita a verificação de certificado SSL
Passo 4 – Iniciar o Logstash
Uma vez que a Pipeline esteja configurada, inicie o serviço Logstash:
Passo 5 – Solução de problemas
Verificar Conectividade
Você pode verificar se o Logstash pode se conectar ao OpenSearch testando a conectividade:
Substitua <seu-servidor-opensearch> com o nome do host do seu servidor OpenSearch e <seu_usuario>, <sua_senha> com suas credenciais do OpenSearch.
Ingestão de Dados
Verifique se os dados estão sendo indexados corretamente no OpenSearch:
Substitua <seu-servidor-opensearch> com o nome do host do seu servidor OpenSearch e <seu_usuario>, <sua_senha> com suas credenciais do OpenSearch. Da mesma forma, <seu_nome-de-indice> com o nome do índice.
Configuração de Firewall e Rede
Certifique-se de que as regras de firewall e as configurações de rede permitam o tráfego entre o Logstash e o OpenSearch na porta 25060
.
Logs
Os logs do Logstash podem ser encontrados em /var/log/logstash/logstash-plain.log
Para mais detalhes, consulte Resolução de Problemas.
Conclusão
Neste guia, passamos pela configuração do Logstash para coletar e encaminhar logs do Apache para o OpenSearch. Aqui está um rápido resumo do que cobrimos:
Instalando o Logstash: Cobrimos como usar os gerenciadores de pacotes APT ou YUM, dependendo da sua distribuição Linux, para instalar o Logstash em seu Droplet.
Configurando o Logstash: Criamos e ajustamos o arquivo de configuração do Logstash para garantir que os logs do Apache sejam corretamente analisados e enviados para o OpenSearch.
Verificando no OpenSearch: Configuramos um padrão de índice no OpenSearch Dashboards para confirmar que seus logs estão sendo indexados corretamente e estão visíveis para análise.
Com esses passos concluídos, você deve agora ter uma configuração funcional onde o Logstash coleta logs do Apache e os envia para o OpenSearch.
Source:
https://www.digitalocean.com/community/tutorials/forward-apache-logs-to-opensearch-via-logstash