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.