Passo a Passo - Montagem de infra Elastic Stack para Testes usando docker-compose
São necessários os seguintes serviços instalados:
- CentOS 7/Redhat 7
- Repositório EPEL
- Docker CE 1.8 ou superior
- docker-compose
# yum install epel-release
# yum install -y yum-utils device-mapper-persistent-data lvm2 git
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce
# usermod -aG docker $(whoami)
# systemctl enable docker.service
# systemctl start docker.service
# yum install -y python-pip
# pip install docker-compose
# docker-compose version
# firewall-cmd --zone=public --permanent --add-port=9200/tcp
# firewall-cmd --zone=public --permanent --add-port=5601/tcp
# firewall-cmd --zone=public --permanent --add-port=9600/tcp
# firewall-cmd --zone=public --permanent --add-port=5044/tcp
# cd /opt/
# git clone https://github.com/tornis/elastic.git
# ls -l
OBS: Após realizado o clone do repositório você perceberá que dentro do elastic-script exitem pastas referente a Stack da Elastic. No caso do Elasticsearch temos a pasta "es" e dentro dela possui o arquivo do docker-compose.yml e arquivos de configuração da ferramenta. O comando docker-compose dever ser executado dentro de cada pasta para que o container suba corretamente.
Ajustando a VM do SO:
# sysctl -w vm.max_map_count=262144
Dentro da pasta
# cd es
# docker-compose up -d
Verificado se o container subiu e se as portas estão operacional
# docker ps
Abaixo o resultado esperado de exemplo:
00cf84028d3f docker.elastic.co/elasticsearch/elasticsearch:7.1.1 "/usr/local/bin/dock…" 8 hours ago Up 8 hours 9200/tcp, 9300/tcp es03
8b4bb9b55ac7 docker.elastic.co/elasticsearch/elasticsearch:7.1.1 "/usr/local/bin/dock…" 8 hours ago Up 8 hours 0.0.0.0:9200->9200/tcp, 9300/tcp es01
3b67b6d01d1b docker.elastic.co/elasticsearch/elasticsearch:7.1.1 "/usr/local/bin/dock…" 8 hours ago Up 8 hours 9200/tcp, 9300/tcp es02
Outro comando para verificar se o container Elasticsearch está operando e verificar se a porta 9200 esta operante:
# netstat -nltp | grep 9200
Testado se Elasticsearch está funcional
Abra um navegador e tente acessar o Elasticsearch usando a url:
http://<IP_DO_HOST>:9200/
Se pedir login e senha use: elastic/123456
a senha esta definida no aquivo docker-compose.yml
OBS: Caso o passo 5 não tenha sido concluído com sucesso, repetir os passos anteriores.
Obs: Nesse passo vamos definir senha para os usuários que estão no core do Elasticsearch. Dentro da pasta "es" temos o script "create-roles-users.sh". Esse script define senhas para os usuários builtin do Elasticsaerch e também cria os usuários que serão usados pelo Logstash para realizar ingestão no Elasticsearch e monitoramento do Pipeline
# cd es
# ./create-roles-users.sh
Obs: Agora acessar a pasta kb e editar os aquivos conforme necessidade, no parametro elasticsearch.username: "kibana" elasticsearch.password: "123456" coloque a senha que foi definida no passo 7, veja os comentários no arquivo kibana.yml
# cd kb
# docker-compose up -d
Acesse o kibana via navegador
http://<IP_DO_HOST>:5601
Se pedir login e senha use: elastic/123456
a senha esta definida no aquivo docker-compose.yml
_Obs: Inicialmente o Logstash está configurado para ler o pipeline "Main" a partir do Elasticsearch. Observe que dentro da pasta "ls/config" estão todos os arquivos de configuração do Logstash. Especificamente no arquivo "logstash.yml" temos os parâmetros:
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: "123456"
xpack.monitoring.elasticsearch.hosts: ["http://172.17.0.1:9200"]
...
xpack.management.pipeline.id: ["main"]
xpack.management.elasticsearch.username: logstash_internal
xpack.management.elasticsearch.password: "123456"
xpack.management.elasticsearch.hosts: ["http://172.17.0.1:9200"]
eles são responsáveis por habilitar o monitoramento pela MonitorUI e gerência do Pipeline no Kibana. Então execute o script "create-pipeline-main.sh" antes de subir a instância do Logstash. Lembrando que o pipeline padrão está configurando apenas com INPUT e OUTPUT_
# cd ls
# ./create-pipeline-main.sh
Iniciando o Logstash
# cd ls
# docker-compose up -d
Kibana MonitorUI e Pipeline Config do Logstash
Identificando a instância do Logstash no Kibana MonitorUI
Identificando o pipeline "main" em Logstash Pipeline no Kibana Config