Temos um artigo falando sobre o que é Graylog: Graylog: É uma Plataforma para Gerenciamento de Log
Hoje, iremos instalar a versão 5.0 do Graylog no Debian e, como vimos no artigo do link acima, o Graylog trabalha com os componentes:
- Elasticsearch é útil para armazenar logs e pesquisar texto. Para sermos mais precisos, esta versão 5.0 do Graylog depende do OpenSearch 1.x, 2.x ou Elasticsearch 7.10.2
- MongoDB é útil para gerenciamento de metadados. Versões MongoDB 5.x or 6.x
- OpenJDK 17 (está embutido no Graylog 5.0 e não precisa ser instalado separadamente).
O Graylog pode ser instalado de várias maneiras diferentes, permitindo que você escolha o que for melhor para você.
Este guia descreve a maneira recomendada de instalar o Graylog no Debian Linux 10 (Buster) e 11 (Bullseye). Todos os links e pacotes estão presentes no momento da escrita.
Por motivo apenas de aprendizagem, este artigo pressupõe que qualquer firewall está desativado e o tráfego pode fluir por todas as portas necessárias. Não deixe desativado em produção!
Instalando o MongoDB
Graylog 5.0 é compatível com MongoDB 5.x-6.x.
O repositório oficial do MongoDB fornece a versão mais atualizada e é a forma recomendada de instalação do MongoDB.
Vamos ao passo a passo
#1 Execute um update
maria@debian11VM:~$ apt update -y
#2 Instale o gnupg com esse comando: sudo apt install gnupg
maria@debian11VM:~$ apt install gnupg -y
Se, por acaso, ocorrer alguma falha no comando acima, execute:
maria@debian11VM:~$ sudo apt -f install -y
#2 Vamos atualizar o repositório e instalarmos o MongoDB. Execute os comandos abaixo
maria@debian11VM:~$ wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
maria@debian11VM:~$ echo "deb http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
maria@debian11VM:~$ sudo apt update -y
maria@debian11VM:~$ sudo apt install -y mongodb-org
#3 Agora, coloque o MongoDB para iniciar automaticamente ao ligarmos o pc.
maria@debian11VM:~$ sudo systemctl daemon-reload
maria@debian11VM:~$ sudo systemctl enable mongod.service
Se quiser verificar se o mongoDB está mesmo habilitado para iniciar durante boot, execute
maria@debian11VM:~$ sudo systemctl --type=service --state=active | grep mongo
Veja esse artigo: Usando SYSTEMD para ver Lista de Programas e Seus Status
Instalando o OpenSearch
Veja: O que é OpenSearch em Informática?
Se você estiver usando o OpenSearch como nó de dados, siga as etapas abaixo para instalar o OpenSearch 2.4.1.
O método de instalação recomendado é seguir a documentação do usuário fornecida pelo serviço OpenSearch. Para configurar o serviço OpenSearch com sua instância Graylog, leia as recomendações e orientações a seguir.
Opcionalmente, você pode optar por desabilitar transparent hugepages(páginas enormes transparentes) para melhorar o desempenho antes de instalar o opensearch:
Vamos criar um serviço chamado desabilitar-paginas-transparentes-grandes.service dentro de /etc/systemd/system/
Lembrando que esse passo é opcional. Ok?
Execute o comando abaixo para criarmos e editar o arquivo desabilitar-paginas-transparentes-grandes.service
maria@debian11VM:~$ sudo nano /etc/systemd/system/desabilitar-paginas-transparentes-grandes.service
Cole o seguinte conteúdo, salve e saia do arquivo
echo "Description=Desabilita Páginas Transparentes Grandes ou (THP) DefaultDependencies=no After=sysinit.target local-fs.target [Service] Type=oneshot ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null' [Install] WantedBy=basic.target" | sudo tee /etc/systemd/system/desabilitar-paginas-transparentes-grandes.service
Dê permissão de execução ao arquivo
maria@debian11VM:~$ sudo chmod 755 /etc/systemd/system/desabilitar-paginas-transparentes-grandes.service
Agora, vamos iniciar e habilitar o início automático do serviço que acabamos de criar com esse nome grande: desabilitar-paginas-transparentes-grandes.service
maria@debian11VM:~$ sudo systemctl daemon-reload
maria@debian11VM:~$ sudo systemctl enable desabilitar-paginas-transparentes-grandes.service
maria@debian11VM:~$ sudo systemctl start desabilitar-paginas-transparentes-grandes.service
Pronto, agora iremos para o passo a passo obrigatório
#1 Crie seu usuário OpenSearch.
Não se assuste com tanta informação. Apenas informamos alguns parâmetros para que o usuário não seja capaz de logar, não tenha pasta home, desabilita a senha(password)…
maria@debian11VM:~$ sudo adduser --system --disabled-password --disabled-login --home /var/empty --no-create-home --quiet --force-badname --group opensearch
Agora, podemos iniciar a instalação do OpenSearch. As instruções completas para a instalação do tarball estão registradas na documentação do OpenSearch.
#2 faça download do opensearch
maria@debian11VM:~$ wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.4.1/opensearch-2.4.1-linux-x64.tar.gz
#3 Crie o diretório onde ficarão os dados(data) do Graylog
maria@debian11VM:~$ sudo mkdir -p /graylog/opensearch/data
#4 Crie a pasta onde ficarão os logs do opensearch
maria@debian11VM:~$ sudo mkdir -p /var/log/opensearch
#5 Extraia os dados do arquivo do opensearch que baixamos no passo #2
maria@debian11VM:~$ sudo tar -zxf opensearch-2.4.1-linux-x64.tar.gz opensearch-2.4.1/Mova para a pasta todo o conteúdo(*) para a pasta /graylog/opensearch/
maria@debian11VM:~$ sudo mv opensearch-2.4.1/* /graylog/opensearch/
#6 dê permissões e defina proprietário como sendo o usuário opensearch
maria@debian11VM:~$ sudo chown opensearch:opensearch /graylog/opensearch/ -R
maria@debian11VM:~$ sudo chown opensearch:opensearch /var/log/opensearch/ -R
maria@debian11VM:~$ sudo chmod 2750 /var/log/opensearch/ -R
maria@debian11VM:~$ sudo chmod 2750 /graylog/opensearch/ -R
#7 criei um arquivo vazio
maria@debian11VM:~$ sudo -u opensearch touch /var/log/opensearch/graylog.log
#8 Vamos criar um serviço para podermos iniciar, parar e restartar o opensearch
Use o nano para editar um arquivo que chamaremos – adivinha? – de opensearch.service
maria@debian11VM:~$ sudo nano /etc/systemd/system/opensearch.service
Copie e cole todo o texto abaixo, salve e feche o editor nano
echo "[Unit] Description=Opensearch Documentation=https://opensearch.org/docs/latest Requires=network.target remote-fs.target After=network.target remote-fs.target ConditionPathExists=/graylog/opensearch ConditionPathExists=/graylog/opensearch/data [Service] Environment=OPENSEARCH_HOME=/graylog/opensearch Environment=OPENSEARCH_PATH_CONF=/graylog/opensearch/config ReadWritePaths=/var/log/opensearch User=opensearch Group=opensearch WorkingDirectory=/graylog/opensearch ExecStart=/graylog/opensearch/bin/opensearch # Especifica o número máximo de descritor de arquivo que pode ser aberto por este processo LimitNOFILE=65535 #Especifica o número máximo de processos LimitNPROC=4096 # Especifica o tamanho máximo da memória virtual LimitAS=infinity # Especifica o tamanho máximo do arquivo LimitFSIZE=infinity # Desative a lógica de tempo limite e aguarde até que o processo seja interrompido TimeoutStopSec=0 # O sinal SIGTERM é usado para interromper o processo Java KillSignal=SIGTERM # Envie o sinal apenas para a JVM em vez de seu grupo de controle KillMode=process # O processo Java nunca é morto SendSIGKILL=no # Quando uma JVM recebe um sinal SIGTERM, ela sai com o código 143 SuccessExitStatus=143 # Permita uma inicialização lenta antes que o módulo notificador do systemd seja ativado para estender o timeout TimeoutStartSec=180 [Install] WantedBy=multi-user.target" | sudo tee /etc/systemd/system/opensearch.service
Observe que colocamos em algumas linhas as pastas que criamos.
Dê permissão ao arquivo do serviço
maria@debian11VM:~$ sudo chmod 755 /etc/systemd/system/opensearch.service
e
maria@debian11VM:~$ sudo systemctl daemon-reload
Configuração Graylog para OpenSearch
#1 Comece abrindo o arquivo yml:
Abra com o editor nano
maria@debian11VM:~$ nano /graylog/opensearch/config/opensearch.yml
Altere as linhas abaixo, colocando os valores referentes, salve e feche o editor nano. Essas linhas estarão comentadas; para descomentá-las basta remover o # no início de cada uma. Outras linhas podem não existir, basta digitá-las.
cluster.name: graylog path.data: /graylog/opensearch/data path.logs: /var/log/opensearch network.host: 0.0.0.0 discovery.type: single-node action.auto_create_index: false plugins.security.disabled: true
Acima, atualizamos os seguintes campos para um estado mínimo de execução inseguro:
#2 Ative as opções da JVM:
maria@debian11VM:~$ sudo nano /graylog/opensearch/config/jvm.options
Agora, atualize as configurações do XMS com metade da memória do sistema instalada, conforme exemplo abaixo:
-Xms4g -Xmx4g
Acima,
- Xms representa o tamanho inicial do espaço heap total.
- Xmx representa o tamanho máximo do espaço heap total
#3 Configure os parâmetros do kernel em tempo de execução; execute sudo sysctl -w vm.max_map_count=262144 e sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
maria@debian11VM:~$ sudo sysctl -w vm.max_map_count=262144
maria@debian11VM:~$ sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
Se recebeu alguma permissão negada no segundo comando, basta usar o nano e abrir o arquivo /etc/sysctl.conf e digitar ou colar o texto vm.max_map_count=262144
O arquivo /etc/sysctl.conf é um arquivo de configuração de variáveis do sistema
#4 Finalmente, habilite o serviço do sistema:
maria@debian11VM:~$ sudo systemctl daemon-reload
maria@debian11VM:~$ sudo systemctl enable opensearch
maria@debian11VM:~$ sudo systemctl start opensearch.service
Instalando o ElasticSearch
Elasticsearch 7.10.2 é a única versão compatível com Graylog 5.0; no entanto, o site graylog.org recomenda o OpenSearch para novas instalações de cluster Graylog.
Os comandos a seguir iniciarão a instalação da versão de código aberto do Elasticsearch. Veja a página de instalação do Elasticsearch para obter instruções mais detalhadas.
#1 Execute wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
maria@debian11VM:~$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
#2 Execute esse outro comando para colocarmos o link de download do Elasticsearch no repositório. echo “deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
maria@debian11VM:~$ echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Esse comando adiciona deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main dentro do arquivo /etc/apt/sources.list
#3 Atualize o sources.list executando apt update
maria@debian11VM:~$ sudo apt update
#4 Agora faça a instalação do Elasticsearch
maria@debian11VM:~$ sudo apt install elasticsearch-oss -y
Configuração do Graylog para Elasticsearch
#1 Modifique o arquivo de configuração do Elasticsearch (/etc/elasticsearch/elasticsearch.yml), defina o nome do cluster como graylog e remova o # para tirar o comentário de action.auto_create_index: false e dessa forma para habilitar a ação. Abra o arquivo com o nano:
maria@debian11VM:~$ sudo nano /etc/elasticsearch/elasticsearch.yml
Altere:
cluster.name: graylog action.auto_create_index: false
Se não existir essas linhas basta digitá-las.
#2 Depois de modificar a configuração, você pode iniciar o Elasticsearch e verificar se está em execução. Execute a sequência de comandos abaixo
maria@debian11VM:~$ sudo systemctl daemon-reload
maria@debian11VM:~$ sudo systemctl enable elasticsearch.service
maria@debian11VM:~$ sudo systemctl start elasticsearch.service
Recebi o erro abaixo:
maria@debian11VM:~$ sudo systemctl start elasticsearch.service Job for elasticsearch.service failed because a timeout was exceeded. See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
O log, exibido pelo comando systemctl status, informa:
maria@debian11VM:~$ sudo systemctl status elasticsearch.service ● elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: failed (Result: timeout) since Thu 2023-03-30 11:26:12 -03; 56s ago Docs: https://www.elastic.co Process: 8578 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=143) Main PID: 8578 (code=exited, status=143) CPU: 1min 7.021s mar 30 11:24:55 debian11VM systemd[1]: Starting Elasticsearch... mar 30 11:26:10 debian11VM systemd[1]: elasticsearch.service: start operation timed out. Terminating. mar 30 11:26:12 debian11VM systemd[1]: elasticsearch.service: Failed with result 'timeout'. mar 30 11:26:12 debian11VM systemd[1]: Failed to start Elasticsearch. mar 30 11:26:12 debian11VM systemd[1]: elasticsearch.service: Consumed 1min 7.021s CPU time.
Graylog
#1 Agora instale a configuração do repositório Graylog e o próprio Graylog Open com os seguintes comandos. Execute wget https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.deb
maria@debian11VM:~$ wget https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.deb
Foi baixado o arquivo graylog-5.0-repository_latest.deb
#2 Faça a instalação do repositório usando o arquivo .deb. Execute: sudo dpkg -i graylog-5.0-repository_latest.deb
maria@debian11VM:~$ sudo dpkg -i graylog-5.0-repository_latest.deb
Acima, instalamos apenas o repositório, o caminho onde está o graylog. Não instalamos o graylog.
#3 atualize o sources.list
maria@debian11VM:~$ sudo apt update
#4 Instale o graylog
maria@debian11VM:~$ sudo apt install graylog-server -y
Edite o arquivo de configuração do Graylog
O arquivo de configuração do graylog é /etc/graylog/server/server.conf. Leia as instruções no arquivo de configurações e edite conforme necessário
Além disso, adicione password_secret e root_password_sha2, pois são obrigatórios e o Graylog não será iniciado sem eles.
#1 podemos usar o programa pwgen. Pode instalá-lo em seu pc assim:
maria@debian11VM:~$ sudo apt install pwgen -y
e gerar senhas assim:
maria@debian11VM:~$ pwgen -N 1 -s 96 dmlc7Oz0FNZqKfbM7YBMiHpHeQEH7J9om6eNtlwqrYeLJwQJd0wlD2OjbMcLLGTP0XZwnIo8BnQ22lxVcj1p5T73Xhi5DJCe
Cole esse valor na frente de password_secret dentro de /etc/graylog/server/server.conf.
#2 agora, vamos gerar a senha que usaremos para acessar o Graylog pelo navegador. Crie uma senha root. Podemos usar o sha256sum ou shasum para gerar um hash e assim proteger nossa senha. Execute echo -n senha123 | shasum -a 256. Troque senha123 por sua senha pessoal.
maria@debian11VM:~$ echo -n senha123 | shasum -a 256 43a686f73c60a514732be39854324c965990f4ee68448e948a928d6e2b4ad0d9 -
Copie o hash 43a686f73c60a514732be39854324c965990f4ee68448e948a928d6e2b4ad0d9
Também, para poder se conectar ao Graylog, você deve definir http_bind_address para o nome do host público ou um endereço IP público para a máquina com a qual você pode se conectar. Mais informações sobre essas configurações podem ser encontradas em Configurando a interface da web.
Outra coisa, se você estiver operando uma configuração de nó único e quiser usar HTTPS para a interface web Graylog e a API REST Graylog, é possível usar NGINX ou Apache como um proxy reverso.
Vamos lá.
A última etapa é habilitar o Graylog durante a inicialização do sistema operacional e verificar se ele está em execução.
maria@debian11VM:~$ sudo systemctl daemon-reload
maria@debian11VM:~$ sudo systemctl enable graylog-server.service
maria@debian11VM:~$ sudo systemctl start graylog-server.service
Bônus
Saiba que o Graylog demora para iniciar, alguns minutos. Iniciar e ver os logs é uma boa. Para isso execute o comando abaixo.
maria@debian11VM:~$ sudo systemctl start graylog-server && tail -n 0 -f /var/log/graylog-server/server.log
Veja se o ElasticSearch está iniciado com o comando
maria@debian11VM:~$ sudo systemctl status elasticsearch
Se não estiver iniciado, faça
maria@debian11VM:~$ sudo systemctl start elasticsearch
O Graylog depende que o ElasticSearch já esteja iniciado. Não só o ElasticSearch deve ser iniciado antes do Graylog, mas também o MondoDB e demais programas mostrados acima.
Veja também: O que é o Elasticsearch em Informática?
A próxima etapa é ingerir mensagens em sua instância Graylog e extrair as mensagens com extratores ou usar pipelines para trabalhar com as mensagens.
Fontes: graylog.org, opensearch.org