Elastic Stack
Introdução
Este manual descreve o procedimento de instalação do Elastic Stack (ELK).
Preparativos para Instalação
Esta seção abrange as etapas essenciais necessárias para a instalação.
Todas as etapas devem ser executadas com privilégios de root em todos os nós, salvo indicação em contrário.
Para instalar o ELK, você precisará de:
Permissão de root no servidor
GBDS instalado no servidor
Então, siga os passos apresentados abaixo.
Faça login no servidor como root.
Prepare o Repositório
Para instalar o ELK, primeiro o repositório deve ser adicionado ao servidor.
Para isso, importe a chave GPG:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchCrie o arquivo do repositório:
vim /etc/yum.repos.d/elasticsearch.repoAdicione o seguinte conteúdo ao arquivo e salve-o:
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-mdEntão, atualize o cache do gerenciador de pacotes. Comece limpando o cache:
yum clean allFinalmente, faça um rebuild do cache dos pacotes:
yum makecacheInstalando o ELK
Instalando e Configurando o Elasticsearch
Instale o pacote Elasticsearch:
yum install elasticsearch -yEntão, abra o arquivo de configuração do Elasticsearch:
vim /etc/elasticsearch/elasticsearch.ymlNa seção Network, procure pela linha que começa com #network.host:. Descomente a linha e e altere seu valor para:
network.host: <host-ip>
^^^^^^^^^Em seguida, desligue o SSL alterando as seguintes configurações para false:
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
enabled: falseEntão, inicie o serviço do Elasticsearch:
sudo systemctl start elasticsearchE habilite o serviço do Elasticsearch para iniciar automaticamente na inicialização da máquina:
sudo systemctl enable elasticsearchFinalmente, verifique se o serviço do Elasticsearch está em execução:
curl -X GET "<host-ip>:9200"
^^^^^^^^^O resultado deve ser semelhante a:
{
"name": "QDexH8a",
"cluster_name": "elasticsearch",
"cluster_uuid": "gAAIqERvS_msO7Y1_759Ja",
"version": {
"number": "6.8.23",
"build_flavor": "default",
"build_type": "rpm",
"build_hash": "4f67856",
"build_date": "2022-01-06T21:30:50.087716Z",
"build_snapshot": false,
"lucene_version": "7.7.3",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}Instalando e Configurando o Kibana
Instale o pacote Kibana:
yum install kibana -yEntão, abra o arquivo de configuração do Kibana:
vim /etc/kibana/kibana.ymlProcure pela linha que começa com #server.host:. Descomente a linha e altere seu valor para:
server.host: "<hostname>"
^^^^^^^^^^Em seguida, procure pela linha que começa com #elasticsearch.hosts:. Descomente a linha e altere seu valor para:
elasticsearch.hosts: ["http://<elasticsearch-host-ip>:9200"]
^^^^^^^^^^^^^^^^^^^^^^^Então, inicie o serviço do Kibana:
sudo systemctl start kibanaE habilite o serviço do Kibana para iniciar automaticamente na inicialização da máquina:
sudo systemctl enable kibanaEm seguida, instale e configure o Nginx.
Instalando e Configurando o Nginx
Instale o pacote Nginx:
yum install nginx -yEm seguida, crie um arquivo que conterá as credenciais de autenticação para o Kibana. Para isso, execute o seguinte comando e insira a senha desejada quando solicitado:
echo "kibanaadmin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.usersEntão, crie um novo arquivo de configuração para o Nginx:
vim /etc/nginx/conf.d/<hostname>_kibana.conf
^^^^^^^^^^Adicione o seguinte conteúdo ao arquivo, fazendo as alterações apropriadas em server_name e proxy_pass:
Abaixo, as linhas contendo "^^^^^^^^^" estão presentes apenas para destacar as alterações que devem ser feitas. Remova-as antes de salvar o arquivo.
server {
listen 80;
server_name <host-ip>;
^^^^^^^^^
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://<kibana-host-ip>:5601;
^^^^^^^^^^^^^^^^
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrad;
}
}Teste o arquivo de configuração do Nginx:
nginx -tEntão, reinicie o serviço do Nginx:
systemctl restart nginxSe necessário, configure a conexão no SE:
setsebool httpd_can_network_connect 1 -PFinalmente, verifique se o serviço do Kibana está em execução, acessando a seguinte URL em um navegador:
http://<host-ip>/status
^^^^^^^^^O nome de usuário é kibanaadmin e a senha é a criada acima.
Instalando e Configurando o Logstash
Instale o pacote Logstash:
yum install logstash -yEm seguida, instale o pacote MySQL Connector/J:
yum install mysql-connector-java -yEntão, crie o arquivo de configuração do Logstash:
vim /etc/logstash/conf.d/smartsense.confAdicione o seguinte conteúdo ao arquivo, fazendo as alterações apropriadas em jdbc_connection_string, jdbc_user, jdbc_password e hosts:
Abaixo, as linhas contendo "^^^^^^^^^" estão presentes apenas para destacar as alterações que devem ser feitas. Remova-as antes de salvar o arquivo.
input {
jdbc {
jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://<database-ip>:3306/"
^^^^^^^^^^^^^
jdbc_user => "<database-username>"
^^^^^^^^^^^^^^^^^^^
jdbc_password => "<database-password>"
^^^^^^^^^^^^^^^^^^^
jdbc_validate_connection => true
tracking_column => "id"
use_column_value => true
statement => "SELECT * FROM smartsense.load_balancing_count where id > :sql_last_value;"
schedule => "*/2 * * * *"
clean_run => false
}
}
output {
elasticsearch {
hosts => ["<elasticsearch-host-ip>:9200"]
^^^^^^^^^^^^^^^^^^^^^^^
index => "smart_sense_index_pattern"
document_id => "%{[id]}"
}
stdout {
codec => rubydebug
}
}Em seguida, o arquivo systemd do Logstash precisa ser modificado para garantir que ele seja inicializado usando o arquivo de configuração criado anteriormente. Para isso, abra o arquivo:
vim /etc/systemd/system/logstash.serviceProcure a linha que começa com ExecStart=. Altere seu valor de:
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"Para:
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" "-f" "/etc/logstash/conf.d/smartsense.conf"Então, aplique as alterações recarregando a configuração do systemd:
systemctl daemon-reloadSe estiver instalando em um novo servidor que possui uma base de dados vazia, insira um valor fictício na tabela smartsense.load_balancing_count para evitar erros. Para isso, execute o seguinte comando e insira a senha do banco de dados:
Certifique-se de substituir <database-username> e <mysql-database-ip> pelos valores apropriados.
# vvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvv
mysql -u <database-username> -p -h <mysql-database-ip> \
-e "USE smartsense; INSERT INTO load_balancing_count
(id, hostname, load_time, api_id, transaction_type,
latent, ul, load_count, extraction_time_avg, extraction_quality_avg,
match_avg, total_avg, extraction_time_min, extraction_quality_min, match_min,
total_min, extraction_time_max, extraction_quality_max, match_max, total_max)
VALUES
(1, 'hostname', '2023-08-31 21:25:40', '8829E30D-4994-4D09-99AF-B6F818473928',
'IDENTIFY', 'false', 'false', 1, '541.0', '0.0', '48.0', '599.0',
'541', '0', '48', '599', '541', '0', '48', '599');"Em seguida, habilite o serviço do Logstash para iniciar automaticamente na inicialização da máquina:
sudo systemctl enable logstashEntão, inicie o serviço do Logstash:
sudo systemctl start logstashE acompanhe o log:
tail -f /var/log/logstash/logstash-plain.logSe um erro ocorrer indicando que o Logstash não pode escrever no diretório /var/lib/logstash/{folder}, execute o seguinte comando para alterar seu owner:
chown -R logstash:logstash /var/lib/logstashFinalmente, para verificar se o Logstash criou o índice no Elasticsearch, execute o seguinte comando:
curl -X GET "<elasticsearch-host-ip>:9200/_cat/indices?v"
^^^^^^^^^^^^^^^^^^^^^^^A saída deve ser semelhante a:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open smart_sense_index_pattern 6Ux_yM25SvG2zWGdGR0HQw 5 1 1 0 6.7kb 6.7kb
green open .kibana_1 BBO89yLnTUC3F7nhqKwf9w 1 0 4 0 18kb 18kb
green open .kibana_task_manager sIMoATiBRsS8bXiVBCscrA 1 0 2 0 12.5kb 12.5kbConfigurando o ELK com o SmartSense
Configurando o Kibana
Criando a Data View
Em um navegador, acesse: http://<kibana-host-ip>:5601. Em seguida, abra a barra lateral de opções clicando neste ícone, localizado no canto superior esquerdo da tela:

Clique em Management (última seção). Então, nas opções do lado esquerdo, na seção Data, clique em Index Management.
Ou acesse a seguinte URL diretamente:
http://<kibana-host-ip>:5601/app/management/data/index_management/indices
^^^^^^^^^^^^^^^^Certifique-se de que o índice smart_sense_index_pattern aparece na lista.
Em seguida, na seção Kibana das opções do lado esquerdo, clique em Data Views.
Clique no botão azul Create data view e preencha os campos com as seguintes informações:
Name:
SS PatternIndex pattern:
smart_sense_index_patternTimestamp field:
load_time
Confirme a criação da Data View clicando em Save data view to Kibana.
Criando os Dashboards
Abra novamente a barra lateral de opções clicando no ícone no canto superior esquerdo da tela. Na seção Analytics, clique em Dashboards.
Ou acesse a seguinte URL diretamente:
http://<kibana-host-ip>:5601/app/dashboards
^^^^^^^^^^^^^^^^Clique no botão azul Create dashboard. Em seguida, clique em Create visualization. No lado direito, configure a visualization com as seguintes informações:
Visualization type:
Bar vertical stackedData view:
SS PatternHorizontal Axis:
Functions:
Date histogramField:
load_time
Vertical Axis:
Functions:
SumField:
load_count
Então, clique no símbolo +, localizado no canto superior esquerdo da tela, para criar um novo filtro. Configure o filtro com as seguintes informações: transaction_type is ENROLL. Confirme clicando em Add filter.
Finalmente, salve o dashboard clicando em Save to library, localizado no canto superior direito da tela, e inserindo as seguintes informações:
Title:
SS Enroll DashboardTags:
smartsense-enroll
Clique em Save and return.
Repita as operações acima para criar os seguintes dashboards:
Para VERIFY adicione o filtro:
transaction_typeisVERIFYPara UPDATE adicione o filtro:
transaction_typeisUPDATEPara IDENTIFY adicione o filtro:
transaction_typeisIDENTIFYandlatentisfalsePara LATENT adicione o filtro:
transaction_typeisIDENTIFYandlatentistrue
Com os cinco dashboards criados, entre em cada um deles e configure o intervalo de tempo a ser exibido, clicando no ícone de calendário, localizado no canto superior direito da tela.
Em seguida, clique em Share e em Copy link. Salve o link, pois ele será usado posteriormente.
Repita a operação para os cinco dashboards.
Ao final de cada link, adicione a seguinte informação:
&hide-filter-bar=true&show-time-filter=true&embed=truePor exemplo, o link:
http://172.16.0.185:5601/app/lens#/edit/a0a936d5-4e92-4015-b3e7-37810c2a114a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))Ficará:
http://172.16.0.185:5601/app/lens#/edit/a0a936d5-4e92-4015-b3e7-37810c2a114a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=trueRepita a operação para os cinco links obtidos.
Salve os links, pois serão usados no passo seguinte.
Configurando os Dashboards no SmartSense
Abra o arquivo de configuração do SmartSense, config.properties, localizado na pasta /var/lib/tomcats/smart-sense/conf:
vim /var/lib/tomcats/smart-sense/conf/config.propertiesEncontre a seção # SMARTSENSE - ELK CONFIGURATION.
Para cada propriedade (linkEnroll, linkIdentify, linkIdentifyLatent, linkUpdate, linkVerify), insira o link do dashboard correspondente obtido anteriormente. Por exemplo:
linkEnroll=http://172.16.0.185:5601/app/lens#/edit/a0a936d5-4e92-4015-b3e7-37810c2a114a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true
linkUpdate=http://172.16.0.185:5601/app/lens#/edit/25d53ee8-7adc-4b06-b05d-f38bfda39c66?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true
linkVerify=http://172.16.0.185:5601/app/lens#/edit/8bfa1546-7990-4ed3-baae-86e421a60aef?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true
linkIdentify=http://172.16.0.185:5601/app/lens#/edit/0d5edf08-ca78-40fc-ac5f-59ca91d07412?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=true
linkIdentifyLatent=http://172.16.0.185:5601/app/lens#/edit/e3f84cc5-68dd-4c76-a84e-d209da2e777a?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:now-7d/d,to:now))&hide-filter-bar=true&show-time-filter=true&embed=trueSalve e feche o arquivo.
Após a conclusão de todas as etapas do procedimento de instalação do Elastic Stack, volte para o manual de Configuração do SmartSense Server para concluir a configuração.
Atualizado
Isto foi útil?

