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:


Siga os Passos a seguir para instalar Graylog Server no Oracle Linux 8.7.

Passos:

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.

Oracle Linux 8.7 instalado e com as configurações abaixo

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

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:

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.