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
07/12/2018 at 10:28 am
Parabenizo-o pelo tutorial, irei implementar para que monitore impressora em redes e os logs de impressão em nivel experimental. Grande abs e obrigado caro colega.
CurtirCurtido por 1 pessoa
07/12/2018 at 10:40 am
Obrigado Aurelio. a stack ELK é muito usada para isto. Espero que seja um Case de sucesso. Abs.
CurtirCurtir