Pesquisa de site

Configurando o Logstash em Droplets para encaminhar logs Nginx para OpenSearch gerenciado


Introdução

Manter o controle dos logs do servidor web é essencial para administrar seu site sem problemas, resolver problemas e compreender o comportamento do usuário. Se você estiver usando o Nginx, ele produzirá logs de acesso e erros cheios de informações valiosas. Para gerenciar e analisar esses logs, você pode usar o Logstash para processá-los e encaminhá-los e o Managed OpenSearch da DigitalOcean para indexar e visualizar os dados.

Neste tutorial, orientaremos você na instalação do Logstash em um Droplet, na configuração para coletar seus logs Nginx e no envio deles para o DigitalOcean Managed OpenSearch.

Pré-requisitos

  • Uma conta DigitalOcean Cloud e um Ubuntu Droplet instalado e funcionando.

  • O Nginx deve ser configurado e os logs devem ser gerados em seu Droplet. Para instalar o nginx em um Droplet, consulte este tutorial sobre Como instalar o Ngnix no Ubuntu.

  • O cluster OpenSearch deve estar em execução e você deve ter acesso a ele. Visite Como criar clusters OpenSearch para obter mais detalhes.

  • A familiaridade com Nginx, Logstash e OpenSearch é benéfica.

Caso de uso

Você pode precisar desta configuração se quiser:

  • Monitore e solucione problemas: rastreie o desempenho e os erros do servidor web analisando registros em tempo real.
  • Analise o desempenho: obtenha insights sobre padrões de tráfego da web e métricas de servidor.
  • Centralizar registro: agregue registros de vários servidores Nginx em uma única instância do OpenSearch para facilitar o gerenciamento.

Observação: O tempo de configuração deve ser de cerca de 30 minutos.

Passo 1 - Instalando o Logstash em Droplets

O Logstash pode ser instalado usando arquivos binários disponíveis aqui ou repositórios de pacotes personalizados para o seu sistema operacional. Para facilitar o gerenciamento e as atualizações, geralmente é recomendado o uso de repositórios de pacotes. Você pode usar o gerenciador de pacotes APT em sistemas baseados em Debian, como Ubuntu, enquanto em sistemas baseados em Red Hat, como CentOS ou RHEL, você pode usar yum. Ambos os métodos garantem que o Logstash esteja devidamente integrado à infraestrutura de gerenciamento de pacotes do seu sistema, simplificando a instalação e a manutenção.

Nesta seção, orientaremos você na instalação do Logstash usando os gerenciadores de pacotes apt e yum, garantindo que você possa configurar o Logstash em seu Droplet, independentemente de sua distribuição Linux.

Para encontrar o sistema operacional, execute o seguinte comando:

cat /etc/os-release

Para sistemas baseados em APT (Ubuntu/Debian)

1. Baixe e instale a chave de assinatura pública:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

2.Instale o apt-transport-https se ainda não estiver instalado:

sudo apt-get install apt-transport-https

3.Adicione e salve a definição do repositório Logstash em sua lista de fontes apt:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Nota: Certifique-se de não usar comandos add-apt-repository pois isso pode adicionar uma entrada deb-src que não é suportada. Se você encontrar um erro relacionado a uma entrada deb-src, exclua-a do arquivo /etc/apt/sources.list. 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)

Se você simplesmente excluir a entrada deb-src do arquivo /etc/apt/sources.list, a instalação deverá funcionar conforme o esperado.

4.Atualize o índice do pacote para incluir o novo repositório:

sudo apt-get update

5.Instale o Logstash usando o gerenciador de pacotes apt:

sudo apt-get install logstash

6.Inicie o Logstash e habilite-o para iniciar automaticamente na inicialização:

sudo systemctl start logstash
sudo systemctl enable logstash

O Logstash agora está instalado e em execução no seu sistema.

Para sistemas baseados em YUM (CentOS/RHEL)

1. Baixe e instale a chave de assinatura pública para o repositório Logstash:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2.Crie um arquivo de repositório para Logstash em /etc/yum.repos.d/. Por exemplo, crie um arquivo chamado logstash.repo. Você pode copiar e colar o conteúdo abaixo para criar o arquivo e atualizar o conteúdo:

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

O repositório está pronto para uso.

3.Instale o Logstash usando o gerenciador de pacotes YUM:

sudo yum install logstash

4.Inicie o Logstash e habilite-o para iniciar automaticamente na inicialização:

sudo systemctl start logstash
sudo systemctl enable logstash

O Logstash agora está instalado e em execução no seu sistema.

Etapa 2 - Instalando o plug-in de saída de pesquisa aberta

Você pode instalar o plugin de saída OpenSearch executando o seguinte comando:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Você pode encontrar mais informações sobre o plugin neste repositório de plugins logstash-output-opensearch.

Etapa 3 - Configurando o Logstash para enviar logs Nginx para OpenSearch

Um pipeline Logstash consiste em três estágios principais: entrada, filtro e saída. Os pipelines do Logstash usam plug-ins. Você pode usar plug-ins da comunidade ou criar o seu próprio.

  • Entrada: Esta etapa coleta dados de diversas fontes. Logstash oferece suporte a vários plug-ins de entrada para lidar com fontes de dados como arquivos de log, bancos de dados, filas de mensagens e serviços em 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 fáceis de analisar.
  • Saída: Este estágio envia os dados processados para um destino. Os destinos podem incluir bancos de dados, arquivos e armazenamentos de dados como OpenSearch.

Agora vamos criar um pipeline.

1.Crie o arquivo de configuração do Logstash em /etc/logstash/conf.d/nginx-to-opensearch.conf com o seguinte conteúdo:

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_access"]
  }
  file {
    path => "/var/log/nginx/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_error"]
  }
}
filter {
  if "nginx_access" in [tags] {
    grok {
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  } else if "nginx_error" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  }
}
output {
  if "nginx_access" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_error-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  }
}

Substituir :

  • OpenSearch-Hostname pelo nome de host do seu servidor OpenSearch.
  • com sua senha do OpenSearch.

2.Aplique a nova configuração reiniciando o Logstash:

sudo systemctl restart logstash

3. Verifique os logs do Logstash para garantir que ele esteja processando e encaminhando os dados corretamente:

sudo tail -f /var/log/logstash/logstash-plain.log

Detalhamento da configuração do nginx-to-opensearch.conf

ENTRADA

O bloco input configura duas entradas de arquivo para leitura de logs:

Registros Nginx: Caminhos: /var/log/nginx/access.log (para logs de acesso) /var/log/nginx/error.log (para logs de erros) Posição inicial: início – Lê desde o início dos arquivos de log. Caminho Sincedb: /dev/null – Desativa o rastreamento para leitura contínua. Tags: ["nginx_access"] para logs de acesso ["nginx_error"] para logs de erros

Observação: certifique-se de que o serviço Logstash tenha acesso aos caminhos de entrada.

FILTRO

O bloco filter processa logs com base em suas tags:

Processamento de registros: Registros de acesso: Usa um filtro grok para analisar o formato do log de acesso, extraindo campos como client_ip, timestamp, method, solicitação, http_versão, resposta, bytes, referenciador e user_agent. Remove a mensagem original e determinados campos de metadados.

Registros de erros: Verifica a tag nginx_error e aplica um filtro grok para extrair campos como timestamp, level, pid, tid e error_message. Também remove os campos mensagem e metadados.

SAÍDA

O bloco output roteia eventos para OpenSearch com base em suas tags:

Roteamento para OpenSearch: Para logs de acesso e de erros, ele especifica: Hosts: URL da instância do OpenSearch. Usuário: doadmin para autenticação. Senha: sua senha do OpenSearch. Índice: nginx_access-%{+YYYY.MM.dd} para registros de acesso nginx_error-%{+YYYY.MM.dd} para registros de erros Configurações de SSL: ativa a verificação de SSL e certificado.

Passo 4 - Configurar OpenSearch

1.Abra seu navegador e acesse o URL do painel OpenSearch:

https://<OpenSearch-Hostname>

Substitua OpenSearch-Hostname pelo nome do host do seu servidor OpenSearch.

2.Crie um padrão de índice. um. Na barra lateral esquerda, navegue até Gerenciamento > Gerenciamento de painel > Padrões de índice. b. Clique em Criar padrão de índice no canto superior direito. c. Digite nginx_access-* ou nginx_error-* como padrão de índice para corresponder a todos os índices criados pelo Logstash e clique em Próxima etapa. d. Clique em Criar padrão de índice.

3. Certifique-se de que o padrão de índice foi criado com sucesso e está visível na lista Padrões de índice.

4.Na barra lateral esquerda, vá para Discover e selecione o padrão de índice que você criou (nginx_access-* ou nginx_error-*). Verifique se as entradas de log estão visíveis e indexadas corretamente.

5.Crie visualizações e painéis. Visite Como criar um painel no OpenSearch para obter mais detalhes.

Solução de problemas

Verifique a conectividade

Você pode verificar se o Logstash pode se conectar ao OpenSearch testando a conectividade:

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

Substituir :

  • OpenSearch-Hostname pelo nome de host do seu servidor OpenSearch.
  • com sua senha do OpenSearch.

Ingestão de dados

Você pode garantir que os dados sejam indexados corretamente no OpenSearch usando o seguinte comando curl:

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

Substituir :

  • OpenSearch-Hostname pelo nome de host do seu servidor OpenSearch.
  • com sua senha do OpenSearch

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 Logstash e OpenSearch na porta 25060.

Conclusão

Neste guia, você aprendeu a configurar o Logstash para coletar e encaminhar logs Nginx para OpenSearch.

Você revisou como usar os gerenciadores de pacotes apt ou yum, dependendo da sua distribuição Linux, para colocar o Logstash em funcionamento no seu Droplet. Você também criou e ajustou o arquivo de configuração do Logstash para garantir que os logs do Nginx sejam analisados corretamente e enviados ao OpenSearch. Em seguida, você configura um padrão de índice nos painéis OpenSearch para verificar se os logs estão sendo indexados corretamente e estão visíveis para análise. Com essas etapas concluídas, você deve agora ter uma configuração funcional onde o Logstash coleta logs Nginx e os envia para o OpenSearch. Esta configuração permite que você use as poderosas ferramentas de pesquisa e visualização do OpenSearch para analisar os logs do seu servidor.

Se você tiver algum problema, verifique as dicas de solução de problemas que fornecemos e consulte a documentação do Logstash e do OpenSearch para obter mais ajuda. O monitoramento regular manterá seu sistema de registro funcionando de maneira suave e eficaz.

Artigos relacionados: