Objetivo

Instalação das release 5.6.4 do Elasticsearch, Kibana e Logstash.

Pacotes opcionais

  • wget – uma das ferramentas para permitir instalação dos demais pacotes no centos;
  • zip – pacote para permitir a compactação de arquivos no formato .zip;
  • unzip – pacote para permitir a descompactação de arquivos no formato .zip;
  • nmap – pacote para permitir a verificação das portas listando qual o serviço está ativo naquele instante;
  • telnet – pacote para permitir a verificação da disponibilidade de acesso das de um servidor naquele instante;
  • traceroute – exibe a rota entre origem (onde é disparado o comando) e destino (para onde se quer chegar);
  • gem – pacote permite a compilação do binários complementares a serem instalados dentro do Elastchsearch, Kibana ou Logstash;
  • ping – pacote permite realizar um teste de conectividade entre duas máquinas;
  • openldap – pacote permite realizar um teste de conectividade entre uma máquina e o servidor de LDAP ( Lightweight Directory Access Protocol é um protocolo de aplicação aberto, livre de fornecedor e padrão de indústria para acessar e manter serviços de informação de diretório distribuído sobre uma rede de Protocolo da Internet) no caso da CGU é um Active DIrectory.

Configuração do SO

OBS.: Esta é uma configuração que optamos apenas para fins de estudo. Não recomendamos que para ambientes, que serão usados em meios corporativos, que o firewall esteja desabilitado.

Desabilitar firewall do linux

Setar para “disabled” a variável SELINUX no arquivo “/etc/sysconfig/selinux” passos:

$ sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
$ setenforce 0

Desabilitar o serviço firewalld (responsável pelo firewall):

$ systemctl mask firewalld
$ systemctl disable firewalld
$ systemctl stop firewalld
$ systemctl status firewalld

Instalação do Oracle JDK

o Java 1.8 é o recomendado pela Elastic. (https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html).

$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie"  "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm"

$ rpm -ivh jdk-8u151-linux-x64.rpm 

$ java -version

Criação do grupo e usuário elasticsearch para instalação da ferramenta:

$ groupadd elasticsearch
$ useradd -m elasticsearch -g elasticsearch
$ passwd elasticsearch
$ usermod -aG wheel elasticsearch

OBS.: nenhum dos processos da ferramenta fica atrelado a esta senha, caso sintam a necessidade é possível alterar a senha sem o menor problema;

Adicionando a seguinte linha “elasticsearch ALL=(ALL) ALL” no arquivo de usuário de sudo:

$ sudo visudo
Alteração dos parâmetros do sistema

Adição das seguintes linhas no vi /etc/security/limits.conf

elasticsearch soft nofile 65536
elasticsearch hard nofile 65536

Desabilitar o swap

Obs.: precisa ser executado como root

$ echo 1 > /proc/sys/vm/swappiness
$ echo "vm.swappiness=1" >> /etc/sysctl.conf

Instalação do Elasticsearch

Download da ferramenta Elasticsearch (Download elasticsearch-5.6.4.rpm)

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.rpm
$ sudo rpm -ivh elasticsearch-5.6.4.rpm

Setar a memória java heap:

$ sudo vi /etc/elasticsearch/jvm.options

Alterar os parâmetros Xms e Xmx que representam, respectivamente, o valor inicial e final da memória dedicada ao java. Sendo que o recomendado é a metade da memória RAM disponível no servidor (porém este valor pode variar para mais ou para menos. Não recomendo que este valor ultrapasse 60% do valor da RAM disponível), no nosso exemplo a máquina possui 8G:

Xms4g
Xmx4g

Configuração do elasticsearch.yml

$ sudo vi /etc/elasticsearch/elasticsearch.yml

Descomentar e alterar os seguintes parâmetros para (este é apenas um exemplo):

cluster.name: Cluster
node.name: Cluster-Node1
network.host: ##colocar o IP da máquina
http.port: 9200
discovery.zen.ping.unicast.hosts: [“10.161.1.1”, “10.161.1.2”, “10.161.1.3”, “10.161.1.4”,”10.161.1.5″] ##lista dos IP das máquina que compõem o Cluster
action.destructive_requires_name: true

Adicionar os seguinte parâmetros no final do arquivo caso seja um nó de dados:

node.master: true
node.data: true
node.ingest: true
node.attr.temp: hot
node.attr.zone: zoneA

Adicionar os seguinte parâmetros no final do arquivo caso seja o nó coordinator:

node.master: false
node.data: false
node.ingest: false
node.attr.zone: zoneA

Start automático após finalizar instalação em todos os nós:

$ sudo systemctl daemon-reload
$ sudo systemctl enable elasticsearch.service
$ sudo systemctl start elasticsearch.service

Teste do cluster

Retorna o estado do cluster:

$ curl -X GET 'http://[ip da maquina]:9200'

Retorna a saúde do cluster (ainda sem autenticação):

$ curl -X GET 'http://[ip da maquina]:9200/_cluster/health/?pretty'

Retorna a saúde do cluster já testando a autenticação básica:

$ curl -u elastic:changeme -X GET 'http://[ip_maquina]:9200/_cluster/health/?pretty'

Instalação Kibana

OBS: deve ser feito apenas no nó coordenator
Download da ferramenta Kibana (Download kibana-5.6.4-x86_64.rpm)

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.4-x86_64.rpm
$ sudo rpm -ivh kibana-5.6.4-x86_64.rpm

Configurar o kibana.yml:

$ sudo vi /etc/kibana/kibana.yml

Descomentar e alterar os seguintes parâmetros para:

server.port: 5601
server.host: "[server_coordenador]"
elasticsearch.url: "http://[server_kibana]:9200" #colocar o IP do node coordenador
kibana.index: ".kibana"

Start automático após finalizar instalação:

$ sudo systemctl daemon-reload
$ sudo systemctl enable kibana.service
$ sudo systemctl start kibana.service

Verificar status kibana

OBS.: teste a ser executado em um browser

http://[ip do kibana]:5601/status

Instalação Logstash

OBS: deve ser feita no nó coordenator

Download da ferramenta Logtash (Download logstash-5.6.4.rpm)

$ wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.4.rpm
$ sudo rpm -ivh logstash-5.6.4.rpm

Configurar o logstash.yml

$ sudo vi /etc/logstash/logstash.yml

Descomentar e alterar os seguintes parâmetros para:

node.name: Cluster-Logstash
pipeline.workers: 2 #metade dos "cores" da máquina
pipeline.output.workers: 1 #metade dos "cores" do item acima
http.host: “<ip_coordenator>”
http.port: 9600

Criar aquivo /etc/logstash/conf.d/logstash-simple.conf

$ sudo vi /etc/logstash/conf.d/logstash-simple.conf

Este é um exemplo do conteúdo:

input { stdin { } }
 output {
   elasticsearch { hosts => [“10.161.1.1:9200”, “10.161.1.2:9200”, “10.161.1.3:9200”, “10.161.1.4:9200″,”10.161.1.5:9200”]
   user => elastic
   password => changeme
 }
 stdout { codec => “rubydebug” }
 }

OBS.: no parâmetro elasticsearch colocar no array todos ips dos nós que compõe o cluster

Configurar o log4j2.properties

$ sudo vi /etc/logstash/log4j2.properties

Adicionar as linhas no arquivo log4j2.properties

logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug

Start automático após finalizar instalação:

$ sudo systemctl daemon-reload
$ sudo systemctl enable logstash.service
$ sudo systemctl start logstash.service