
Problema
Os sistemas geram logs muito volumosos, de difícil análise e administração, tornando complexa a gestão por parte do cliente.
Para contornar limitações de espaço em disco, normalmente o cliente adota uma destas soluções:
- configura os logs com nível mínimo de detalhes;
- rotaciona e elimina os logs com alta frequência;
Estas soluções levam à perda de informações importantes no momento de análise de um problema.
Cenário comum:
- o cliente abre chamado reportando um problema, porém não tem o log em nível detalhado, ou então possui log detalhado apenas das últimas horas e não do momento do erro;
- com isso recebe orientação para aumentar o nível de log e provocar o problema novamente, e isso nem sempre é factível, especialmente em problemas mais graves, como queda de serviços;
- como consequência a atuação do suporte fica prejudicada, aumentando o tempo de atendimento, a quantidade de iterações e esforço de investigação, para todos os envolvidos.
Precisamos de uma forma mais robusta de armazenar e consultar logs recentes sem comprometer a operação e minimizando impactos ao usuário final.
Solução proposta
Definir uma configuração para possibilitar gerenciamento ativo dos logs gerados pelo sistema, que possa ser implantado pelo próprio cliente na sua estrutura e utilizado para agilizar análises, consultorias, atendimentos de suporte e situações relacionadas.
Setup
Esta documentação demonstra o setup que já utilizamos internamente e recomendamos aos clientes. Reforçamos que esta não é a única solução que existe nem a única forma de fazer. Aqui tivemos a intenção de definir uma solução simples e 100% utilizando sofrware livre. O cliente pode ficar à vontade para experimentar outros tipos de ferramentas.
O setup que propomos utiliza 3 ferramentas que fazem parte do Elastic stack para coletar e armazenar os logs do PASOE, que devem ser gerados com nível detalhado e rotacionados para evitar estouro de disco:
- Filebeat - agente que monitora os logs e envia continuamente os dados para o banco de dados;
- Elasticsearch - o banco de dados propriamente dito - coração de todo o stack;
- Kibana - interface gráfica para aplicar queries sobre o banco e mostrar os resultados;

Requisitos de hardware
Descrevemos aqui a configuração que estamos utilizando internamente para os ambientes de desenvolvimento. Cenários de produção dos clientes podem demandar de configurações diferentes, especialmente no quesito Disco, dependendo do volume de logs e quantidade de tempo que desejar armazená-los.
Recomendamos criar uma nova Virtual Machine exclusiva para este setup, para isolar os processos e garantir que as demais máquinas utilizadas para o sistema não sejam afetadas.
- Sistema Operacional: Oracle Linux 8 (pode ser outro. Utilizamos este por ser homologado para os recursos da Progress).
- Disco: 500 GB (hoje estamos gerenciando logs de 10 ambientes e mantendo histórico por 7 dias. 500 GB está se mostrando suficiente).
- Memória: 8 GB (dependendo da quantidade de logs a administrar e usuários que realizarão consultas, pode ser interessante mais memória, para otimizar a performance).
- Processadores: 4 núcleos (dependendo da quantidade de logs a administrar e usuários que realizarão consultas, pode ser interessante mais núcleos, para otimizar a performance).
Passo a passo para a instalação
Elasticsearch
Instalação
&&& tratar os passos para criar a senha forte do elasticsearch e também os usuários para kibana_admin e filebeat. validar se precisará editar 2x o elasticsearch.yml (primeiro sem segurança para criar os usuários e depois elevar a segurança em outro passo). &&&
Vamos começar pelo banco de dados, que é a parte mais importante de todo o stack. Inicialmente faremos a instalação padrão conforme a documentação da ferramenta:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install elasticsearch
Configuração
Após instalado, vamos editar as configurações no arquivo /etc/elasticsearch/elasticsearch.yml:
Utilize este arquivo em anexo como modelo: elasticsearch.yml
Atenção especial para estes campos:
- path.data: /elasticsearch # é neste diretório que os dados serão armazenados, portanto aponte para uma pasta (ou volume) com ao menos 500 GB disponíveis.
- path.logs: /var/log/elasticsearch # os logs do elasticsearch serão fundamentais para mitigar quaisquer problemas durante a configuração
- Os campos abaixo precisam ser adicionados para que a interface gráfica (veremos a seguir) exija login e senha. Sem estes campos o acesso fica aberto:
- xpack.security.enabled: true
xpack.security.authc.realms.native.native1.enabled: true
xpack.security.authc.realms.native.native1.order: 0
xpack.security.transport.ssl.enabled: false
xpack.security.http.ssl.enabled: false
A porta default do Elasticsearch é 9200. Se necessário, altere diretamente no arquivo.
Kibana
Instalação
Agora vamos instalar a interface gráfica, pois através dela será mais simples realizar as demais configurações do Elasticsearch.
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install kibana
Configuração
Após instalado, vamos editar as configurações no arquivo /etc/kibana/kibana.yml:
Utilize este arquivo como modelo: kibana.yml
Atenção especial para estes campos:
- server.port: 8080 # por default a porta do Kibana é 5601. Aqui internamente optamos por utilizar a 8080 por ser mais adequada ao nosso modelo de redes e segurança.
- server.host: "0.0.0.0" # fizemos esta configuração para permitir acesso à interface gráfica à partir de qualquer ponto da rede. Restrinja de acordo com a sua necessidade. #
- elasticsearch.username: "kibana_user" # usuário que foi criado na etapa anterior para permitir que o Kibana faça login no Elasticsearch para realizar queries e aplicar alterações de configurações.
- elasticsearch.password: "elastic" # este setup permite que a senha fique legível no arquivo. Por ser algo controlado na rede interna, isso nos atende. Mas você pode optar por utilizar um formato mais robusto, seguindo a documentação oficial do Kibana, que não vamos tratar nesta documentação.