Instalar Graylog no Oracle Linux 8.7
Instalar Graylog no Oracle Linux 8.7
Trabalhando como professional de TI você já deve ter ouvido falar do Graylog.
O Graylog é um projeto open-source usado para centralizar e analizar os logs de seus servidores.
Com o Graylog, podemos centralizar os logs em um único local, analisá-los usando o Elasticsearch e visualizá-los no painel do Graylog.
Para os administradores de sistemas de TI, os logs são uma das maneiras mais rápidas de identificar a causa raiz de uma falha do sistema ou de prever uma falha. No entanto, é uma tarefa tediosa coletar manualmente os registros e analisá-los. É aí que entra o Graylog.
Este guia será voltado para o sistema operacional Oracle Linux 8.7 que foi lançado com base no Red Hat (RHEL) 8.7.
O Graylog é composto por quatro componentes de código aberto:
Elasticsearch - Mecanismo que indexa e analisa os registros.
MongoDB - Banco de dados NoSQL usado para armazenar os dados analisados e as configurações do cluster Graylog.
Java - Ambiente de execução do Elasticsearch e do Graylog.
Graylog server - O aplicativo que é usado para a visualização dos dados analisados.
Siga os Passos a seguir para instalar Graylog Server no Oracle Linux 8.7.
Passos:
Passo 1 – Instalar OpenJDK on Oracle Linux 8.7
Passo 2 – Instalar Elasticsearch 7.x
Passo 3 – Configurar Elasticsearch no Oracle Linux 8.7
Passo 4 – Instalar MongoDB 4 Server no Oracle Linux 8.7
Passo 5 - Instalar Graylog Server no Oracle Linux 8.7
Passo 6 – Configurar Graylog Server
Passo 7 – Configurar Firewall
Passo 8 – Access Graylog server Web interface
Pré-requisitos
Antes de prosseguirmos com a instalação e a configuração, precisamos primeiro nos certificar de que nosso sistema atenda aos requisitos mínimos abaixo.
4 GB RAM
2 CPUs
50 GB / disk
Permitir acesso a porta 9000 no firewall
Oracle Linux 8.7 instalado e com as configurações abaixo
- Hostname configurado (Não pode ser hostname.localdomain)
Durante a instalação do Oracle Linux você pode escolher o hostname: clique em Network & Hostname, n omenu seguinte escolha o nome do seu servidor e clique em aplicar
Se você se esqueceu de trocar o hostname durante a instação siga os passos a segui como usuário root:
você terá uma saída mais ou menos assim:
[jbitcore@jbitcore-srv]$ hostnamectl
Static hostname: jbitcore-srv
Icon name: computer-vm
Chassis: vm 🖴
caso queira trocat seu hostname use o seguinte comando:
hostnamectl set-hostname <seu hostname aqui>
Em seguida precisamos configurar seu arquivo hosts. Ainda como usuário root, use o VIM para editar o arquivo /etc/hosts
vim /etc/hosts
Mofifique a linha de configuração de IPv4 adicionando o hostname de seu servidor depois de localhost:
127.0.0.1 localhost jbitcore-srv localhost.localdomain localhost4 localhost4.localdomain4
- Coloque o SELinux em modo permissivo
Como usuário root execute o seguinte comando:
setenforce 0
Este comando colocará o SELinux em modo permissivo temporariamente, verifique o modo do SELinux com o comando abaixo:
sestatus
Para tornar a configuração permanente precisaremos editar a configuração do SELinux, use o vim novamente:
vim /etc/selinux/config
Entre em modo de edição (i) e edite a linha contendo enforcing
SELINUX=enforcing
para permissive
SELINUX=permissive
Restarte a VM
Passo 1 - Instalar OpenJDK no Oracle Linux 8.7
Precisamos instalar o Java Runtime Environment no Oracle Linux 8.7 para podermos executar o Elasticsearch e o Graylog.
Adquira o repositório OpenJDK-17 usando o dnf:
# dnf install java-17-openjdk-devel
Verifique se o Java foi instalado em sua instância do Oracle Linux 8.7 com o comando abaixo:
# java -version
Passo 2 - Instalar Elasticsearch 7.x
O próximo passo é instalar o Elasticsearch versão 7.x.
Para adicionar o repositório do Elasticsearch 7.x ao nosso sistema precisamos criar o arquivo /etc/yum.repos.d/elasticsearch.repo :
# vim /etc/yum.repos.d/elasticsearch.repo
Neste arquivo adicionamos o conteúdo abaixo:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Depois de configurar o repositório, importaremos a chave GPG:
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Agora podemos instalar o Elasticsearch:
# dnf install -y elasticsearch
Verifique a versão do Elasticsearch instalada em seu sistema:
# rpm -qi elasticsearch
Name : elasticsearch
Epoch : 0
Version : 7.17.10
Release : 1
Architecture: x86_64
Install Date: Fri 05 May 2023 01:38:22 PM JST
Group : Application/Internet
Size : 529606315
License : Elastic License
Signature : RSA/SHA512, Sun 23 Apr 2023 07:27:25 PM JST, Key ID d27d666cd88e42b4
Source RPM : elasticsearch-7.17.10-1-src.rpm
Build Date : Sun 23 Apr 2023 02:38:29 PM JST
Build Host : elasticsearch-ci-immutable-ubuntu-2004-1682227868436794963
Relocations : /usr
Packager : Elasticsearch
Vendor : Elasticsearch
URL : https://www.elastic.co/
Summary : Distributed RESTful search engine built for the cloud
Description :
Reference documentation can be found at
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
and the 'Elasticsearch: The Definitive Guide' book can be found at
https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
Passo 3 - Configurar Elasticsearch no Oracle Linux 8.7
Para que o Graylog funcione corretamente precisamos alterar algumas variáveis nos arquivos de configuração do Elasticsearch para adequá-los ao aplicativo Graylog.
Altere o nome do cluster do Elasticsearch para graylog.
Arquivo: /etc/elasticsearch/elasticsearch.yml
Variável: cluster.name: graylog
# vim /etc/elasticsearch/elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
# Before you set out to tweak and tune the configuration, make sure you
# understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: graylog
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
Modifique as opções de memória Java editando os parâmetros -Xms do arquivo /etc/elasticsearch/jvm.options
# vim /etc/elasticsearch/jvm.options
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## and the min and max should be set to the same value. For
## example, to set the heap to 4 GB, create a new file in the
## jvm.options.d directory containing these lines:
##
-Xms2g
-Xmx2g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/7.17/heap-size.html
## for more information
Acima indicamos que o requisito máximo de memória JVM será definido como 2 GB. Você pode definir uma capacidade maior ou menor, dependendo dos recursos do seu sistema.
Depois de editar os asquivos de configuração, precisamos recarregar os daemon de sistema:
# systemctl daemon-reload
Em seguida podemos iniciar o serviço elasticsearch.service
# systemctl enable --now elasticsearch.service
Faremos uma solicitação HTTP GET para verificar se o Elasticsearch está pronto para receber solicitações:
# curl http://127.0.0.1:9200
Você deverá ter um output como abaixo:
{
"name" : "jbit-graylog",
"cluster_name" : "graylog",
"cluster_uuid" : "Ghv_bh8URrybxxxqBRmwjw",
"version" : {
"number" : "7.17.10",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "fecd68e3150eda0c307ab9a9d7557f5d5fd71349",
"build_date" : "2023-04-23T05:33:18.138275597Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Passo 4 - Instalar MongoDB 4 Server no Oracle Linux 8.7
Instalar MongoDB 4 no your Oracle Linux.
Adicione o repositório do MongoDB:
# vim /etc/yum.repos.d/mongodb-org-4.repo
[mongodb-org-4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
Instale o MongoDB com o comando abaixo:
# dnf install -y mongodb-org
Inicie e habilite o serviço do MongoDB, para iniciar depois depois de um reboot
# systemctl enable --now mongod
Com o comando abaixo, verifique se o serviço MongoDB foi iniciado:
# systemctl status mongod
Passo 5. Instalar Graylog Server no Oracle Linux 8.7
Depois de instalar as dependências, podemos prosseguir com a instalação do servidor Graylog.
Faça o download e instale o repositório do Graylog com o comando abaixo:
# rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.1-repository_latest.rpm
Sample output:
Instale o Graylog Server no Oracle Linux 8.7 usando o comando dnf:
# dnf install -y graylog-server
Verifique se a instalação foi bem-sucedida verificando os arquivos RPM instalados:
# rpm -qi graylog-server
Exemplo do output:
Name : graylog-server
Version : 4.1.14
Release : 1
Architecture: noarch
Install Date: Fri 05 May 2023 02:12:59 PM JST
Group : optional
Size : 217793216
License : SSPL
Signature : RSA/SHA1, Tue 12 Apr 2022 08:56:21 PM JST, Key ID d44c1d8db1606f22
Source RPM : graylog-server-4.1.14-1.src.rpm
Build Date : Tue 12 Apr 2022 08:56:10 PM JST
Build Host : 523be56a72f0
Relocations : /
Packager : Graylog, Inc. <hello@graylog.org>
Vendor : graylog
URL : https://www.graylog.org/
Summary : Graylog server
Description :
Graylog server
Passo 6 - Configurar Graylog Server
O próximo passo é configurar as credenciais para o login de administrador do servidor Graylog.
É necessário configurar duas variáveis password_secret e uma root_password_sha2.
Instalar o utilitário pwgen para ajudá-lo a gerar uma senha aleatória de 96 caracteres.
# dnf install -y epel-release
# dnf install -y pwgen
Generate a random password of 96 characters:
# pwgen -N 1 -s 96
Você deve obter um resultado semelhante a:
x7WrtpHwuGFR1awjy3amUhStUmH9BeqybchdYd3lJHR2ZxpMNvuydpCussgzimBOT6p7HRhkA3QPFZcbsGaLpt4BPsnwdk3n
Copie a senha gerada em um editor de texto. Essa senha será usada nos próximos passos.
Em seguida, crie senha e criptografe usando o algoritmo sha2, esta senha será que você usará para fazer login na instância do Graylog via web browser:
$ echo -n Str0ngP@ssw0rd | sha256sum
a5bd1f14adcda15f127a87b8ebc5a705232ec2c9f83d6447b5f958f7d4580a56 -
Copie a senha de 96 caracteres e a senha sha2 e cole-as no arquivo /etc/graylog/server/server.conf para os valores de password_secret e root_password_sha2 respectivamente.
# vim /etc/graylog/server/server.conf
password_secret= x7WrtpHwuGFR1awjy3amUhStUmH9BeqybchdYd3lJHR2ZxpMNvuydpCussgzimBOT6p7HRhkA3QPFZcbsGaLpt4BPsnwdk3n
root_password_sha2 = a5bd1f14adcda15f127a87b8ebc5a705232ec2c9f83d6447b5f958f7d4580a56
Para tornar a interface web do Graylog acessível através do navegador, é necessário configurá-la para usar o endereço IP e a porta do servidor. Se o servidor tiver vários endereços IP, você pode usar ‘0.0.0.0’ para permitir que o Graylog seja acessível em todos os endereços IP configurados no servidor. Isso é particularmente útil quando o servidor possui várias placas de rede e precisa se comunicar com diferentes redes.
No nosso exemplo, usaremos ‘0.0.0.0:9000’ para essa configuração.
# vim /etc/graylog/server/server.conf
http_bind_address = 0.0.0.0:9000
Inicie e habilite o serviço Graylog:
# systemctl daemon-reload
# systemctl start graylog-server
# systemctl enable graylog-server
Verify that Graylog service is up and running:
# systemctl status graylog-server
Passo 7 – Configurar o Firewall
Para garantir a comunicação adequada com o servidor Graylog, é necessário ajustar as configurações do firewall. Isso envolve permitir o tráfego na porta 9000, ou qualquer outra porta que tenha sido especificada no passo anterior. Ao fazer isso, você está garantindo que o tráfego possa chegar ao servidor Graylog sem obstruções.
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
Passo 8 - Access Graylog server Web interface
Agora estamos prontos para acessar a web interface do servidor Graylog, no navegador http://<IP do servidor Graylog>:9000
Acessando a página de login use as credenciais do servidor Graylog serão:
username: admin
password: A senha simples que você definida para root_password_sha2
You can now proceed to creating your dashboards and visualizing your logs.
Como configurar o Graylog para aceitar entradas de syslog recebidas
Agora vamos configurar o Graylog para aceitar entradas de syslog.
Faça login no servidor Graylog e clique em System/Inputs (Sistema/entradas).
Na janela seguinte, selecione Syslog UDP no menu Select Input (Selecionar entrada)
Clique em Launch New Input (Iniciar nova entrada) e preencha as seguintes informações:
Node: Selecione o nó do servidor de hospedagem.
Title: syslog
Bind address: 0.0.0.0
Port: 5140
Salve as alterações.
Após este passo seu servidor Graylog estará pronto para receber logs de clientes no seu ambiente. O passo seguinte será configurar clientes Linux para enviar os logs para o Graylog.
Como configurar seus clientes Linux para enviar informações de syslog:
Agora que o Graylog está aceitando informações do syslog, precisamos configurar nossos clientes para enviar as informações. Para fazer isso, entre por SSH em um servidor Linux diferente (aquele que você deseja que envie detalhes do syslog para o Graylog) e crie um novo arquivo de configuração do rsyslog com o comando:
$ sudo vi /etc/rsyslog.d/90-graylog.conf
neste arquivo colocaremos os seguintes parametros:
*.* @SERVER:5140;RSYSLOG_SyslogProtocol23Format
**substitua "SERVER" pelo IP do seu servidor.
$ sudo systemctl restart rsyslog
com isso seu servidor já estará recebendo os logs e poderemos começar a utilizar o servidor Graylog para as atividades administrativas.
Ajustar o relógio
para ajustar o relógio teremos de ajustar o arquivo /etc/graylog/server/server.conf, neste arquivo modificaremos o valor
root_timezone = UTC
para
root_timezone = America/Sao_Paulo
Este tutorial foi feito com o intuito de dar uma boa base para quem quer instalar o Graylog em sistema Linux, a distribuição escolhida foi Oracle Linux por ser uma distro baseada no Red Hat e poder ser usada da mesma forma.
O mesmo pode ser aplicado em Rock Linux 8.7 ou Red Hat 8.7.
Futuros testes serão necessários para versões mais recentes.