Configuracao do Elasticsearch para Analise de Logs

A analise centralizada de logs e fundamental para monitorar a saude de sistemas, identificar problemas rapidamente e manter a seguranca de infraestruturas complexas. A stack ELK (Elasticsearch, Logstash e Kibana) e a solucao open-source mais popular para esse proposito, permitindo coletar, processar, armazenar e visualizar logs de centenas de servidores em tempo real. Este guia cobre a instalacao e configuracao completa da stack ELK no Linux para ambientes de producao.

Instalacao do Elasticsearch

Adicione o repositorio oficial da Elastic e instale o Elasticsearch:

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

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

sudo apt update && sudo apt install elasticsearch -y

Configure o Elasticsearch editando o arquivo principal:

sudo nano /etc/elasticsearch/elasticsearch.yml
cluster.name: logs-producao
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

Ajuste o heap da JVM para 50% da RAM disponivel (maximo 32 GB):

sudo nano /etc/elasticsearch/jvm.options.d/heap.options
-Xms16g
-Xmx16g
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
curl -X GET "localhost:9200/_cluster/health?pretty"

Pipelines do Logstash

O Logstash processa logs de diversas fontes antes de armazena-los no Elasticsearch:

sudo apt install logstash -y
sudo nano /etc/logstash/conf.d/syslog.conf
input {
  beats {
    port => 5044
  }
  syslog {
    port => 5514
    type => "syslog"
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}: %{GREEDYDATA:log_message}" }
    }
    date {
      match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logs-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "${ES_PASSWORD}"
  }
}

Nos servidores de origem, instale o Filebeat para coletar logs e enviar ao Logstash:

sudo apt install filebeat -y
sudo filebeat modules enable system nginx
sudo systemctl start filebeat

Gerenciamento de Ciclo de Vida de Indices

Configure politicas ILM para gerenciar automaticamente indices antigos:

curl -X PUT "localhost:9200/_ilm/policy/logs-policy" -H 'Content-Type: application/json' -d '{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "50GB",
            "max_age": "1d"
          }
        }
      },
      "warm": {
        "min_age": "7d",
        "actions": {
          "shrink": { "number_of_shards": 1 },
          "forcemerge": { "max_num_segments": 1 }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": { "delete": {} }
      }
    }
  }
}'

Essa politica mantem indices na fase hot por 1 dia, move para warm apos 7 dias (reduzindo shards e otimizando armazenamento) e exclui automaticamente apos 90 dias.

Kibana: Visualizacao e Dashboards

Instale o Kibana e conecte-o ao Elasticsearch:

sudo apt install kibana -y
sudo nano /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "${KIBANA_PASSWORD}"
sudo systemctl enable kibana
sudo systemctl start kibana

Acesse o Kibana em http://seu-servidor:5601, crie um index pattern logs-* e explore os dados com Discovery. Crie dashboards com visualizacoes para monitorar volume de logs por servidor, erros por aplicacao e tendencias ao longo do tempo.

Resumo

A stack ELK fornece uma plataforma poderosa para analise centralizada de logs em ambientes de producao. Com Elasticsearch configurado em cluster, pipelines do Logstash processando logs de multiplas fontes, ILM gerenciando o ciclo de vida dos dados e Kibana fornecendo visualizacoes intuitivas, voce obtem visibilidade completa sobre a saude e seguranca da sua infraestrutura.

Artigos Relacionados