Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
A Pilha Elastic — anteriormente conhecida como ELK Stack — é uma coleção de
softwares de código aberto produzida pela Elastic que permite pesquisar, analisar e
visualizar logs gerados a partir de qualquer fonte em qualquer formato. Esta é uma
prática conhecida como centralização de logs. A centralização de logs pode ser útil ao
tentar identificar problemas com seus servidores ou aplicações, uma vez que ela permite
que você pesquise todos os seus logs em um único lugar. Também é útil porque ele lhe
permite identificar problemas que abrangem vários servidores correlacionando seus logs
durante um período de tempo específico.
Você irá aprender como instalar todos os componentes da pilha Elastic — incluindo
o Filebeat, um Beat usado para encaminhar e centralizar logs e arquivos — e configurá-
los para coletar e visualizar logs de sistema.
Vamos instalar todos esses componentes em um único servidor, que vamos nos referir
como nosso servidor da pilha Elastic.
Nota: ao instalar a pilha Elastic, você deve usar a mesma versão em toda a pilha. Neste
tutorial, vamos instalar as versões mais recentes de toda a pilha que são, no momento da
escrita deste artigo, o Elasticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1 e Filebeat 7.7.1.
Pré-requisitos
Para concluir este tutorial, você precisará do seguinte:
Além disso, como a pilha Elastic é usada para acessar informações valiosas sobre seu
servidor, que você não deseja que usuários não autorizados acessem, é importante que
você mantenha seu servidor seguro instalando um certificado TLS/SSL. Isso é opcional,
mas altamente recomendado.
No entanto, como você acabará por fazer alterações em seu bloco de servidor Nginx ao
longo deste guia, provavelmente faria mais sentido para você completar o guia Let’s
Encrypt on Ubuntu 20.04 no final do segundo passo deste tutorial. Com isso em mente,
se você planeja configurar o Let’s Encrypt em seu servidor, você precisará ter o
seguinte em mãos antes de fazer isso:
Para começar utilize o cURL, a ferramenta de linha de comando para transferir dados
com URLs, para importar a chave GPG pública do Elasticsearch para o APT. Observe
que estamos usando os argumentos -fsSL para silenciar todo o progresso e possíveis
erros (exceto para uma falha de servidor) e permitir que o cURL faça uma solicitação
em um novo local se for redirecionado. Faça o pipe da saída do comando cURL no
programa apt-key, que adiciona a chave pública GPG para o APT.
Em seguida, atualize suas listas de pacotes para que o APT leia a nova origem do
Elastic:
Agora, o Elasticsearch está instalado e pronto para ser configurado. Use seu editor de
texto preferido para editar o arquivo de configuração principal do
Elasticsearch, elasticsearch.yml. Aqui, usaremos o nano:
/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network
-----------------------------------
network.host: localhost
. . .
Você pode testar se seu serviço Elasticsearch está em execução enviando uma
requisição HTTP:
Você verá uma resposta mostrando algumas informações básicas sobre seu nó local,
semelhantes a esta:
Output
"name" : "Elasticsearch",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ",
"version" : {
"number" : "7.7.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
Como você já adicionou a fonte de pacotes Elastic no passo anterior, você pode apenas
instalar os componentes restantes da pilha Elastic usando o apt:
Digite e confirme uma senha no prompt. Lembre-se ou tome nota deste login, pois você
precisará dele para acessar a interface Web do Kibana.
Usando o nano ou seu editor de texto preferido, crie o arquivo de bloco de servidor do
Nginx:
Observe que se você seguiu o tutorial de pré-requisitos do Nginx até o fim, você pode já
ter criado este arquivo e o preenchido com algum conteúdo. Nesse caso, exclua todo o
conteúdo existente no arquivo antes de adicionar o seguinte:
/etc/nginx/sites-available/your_domain
server {
listen 80;
server_name your_domain;
location / {
proxy_pass http://localhost: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_upgrade;
}
}
Copy
1. sudo ln -s /etc/nginx/sites-available/your_domain
/etc/nginx/sites-enabled/your_domain
2.
Copy
1. sudo nginx -t
2.
Copy
Se quaisquer erros forem relatados em sua saída, retorne e verifique se o conteúdo que
você colocou em seu arquivo de configuração foi adicionado corretamente. Depois que
você vir syntax is ok na saída, reinicie o serviço do Nginx:
Se você seguiu o guia de configuração inicial do servidor, você deverá ter um firewall
UFW ativado. Para permitir conexões ao Nginx, podemos ajustar as regras digitando:
O Kibana agora está acessível através do seu FQDN ou do endereço IP público do seu
servidor de pilha Elastic. Você pode verificar a página de status do servidor do Kibana
navegando para o seguinte endereço e digitando suas credenciais de login quando
solicitado:
http://your_domain/status
Esta página de status exibe informações sobre o uso de recursos do servidor e lista os
plugins instalados.
Agora que o painel do Kibana está configurado, vamos instalar o próximo componente:
Logstash.
Insira a seguinte configuração de input. Isso especifica uma entrada para o beats que
irá ouvir na porta TCP 5044.
/etc/logstash/conf.d/02-beats-input.conf
input {
beats {
port => 5044
}
}
Copy
Salve e feche o arquivo.
/etc/logstash/conf.d/30-elasticsearch-output.conf
output {
if [@metadata][pipeline] {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%
{+YYYY.MM.dd}"
pipeline => "%{[@metadata][pipeline]}"
}
} else {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%
{+YYYY.MM.dd}"
}
}
}
Copy
Se seu teste de configuração for bem sucedido, inicie e habilite o Logstash para colocar
as alterações de configuração em vigor:
Neste tutorial, usaremos o Filebeat para encaminhar logs locais para nossa pilha Elastic.
O Filebeat suporta inúmeras saídas, mas você geralmente apenas enviará eventos
diretamente para o Elasticsearch ou para o Logstash para processamento adicional.
Neste tutorial, usaremos o Logstash para realizar processamento adicional nos dados
coletados pelo Filebeat. O Filebeat não precisará enviar quaisquer dados diretamente
para o Elasticsearch, então vamos desativar essa saída. Para fazer isso, encontre a
seção output.elasticsearch e comente as seguintes linhas precedendo-as com
um #:
/etc/filebeat/filebeat.yml
...
#output.elasticsearch:
#hosts: ["localhost:9200"]
...
/etc/filebeat/filebeat.yml
output.logstash:
hosts: ["localhost:5044"]
Vamos habilitá-lo:
Output
Enabled:
system
Disabled:
apache2
auditd
elasticsearch
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
traefik
...
Por padrão, o Filebeat está configurado para usar caminhos padrão para o syslog e os
logs de autorização. No caso deste tutorial, você não precisa alterar nada na
configuração. Você pode ver os parâmetros do módulo no arquivo de
configuração /etc/filebeat/modules.d/system.yml.
Output
O Filebeat vem empacotado com painéis de amostra do Kibana que lhe permitem
visualizar dados do Filebeat no Kibana. Antes que você possa usar os painéis, você
precisa criar o padrão de índice e carregar os painéis no Kibana.
Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true`
for enabling.
Loaded dashboards
See more:
https://www.elastic.co/guide/en/elastic-stack-overview/current/xpac
k-ml.html
Se você configurou sua pilha Elastic corretamente, o Filebeat começará a enviar seu
syslog e logs de autorização para o Logstash, que então irá carregar esses dados no
Elasticsearch.
Para verificar se o Elasticsearch está realmente recebendo esses dados, consulte o índice
do Filebeat com este comando:
Output
...
{
{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 2,
"successful" : 2,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 4040,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
"_index" : "filebeat-7.7.1-2020.06.04",
"_type" : "_doc",
"_id" : "FiZLgXIB75I8Lxc9ewIH",
"_score" : 1.0,
"_source" : {
"cloud" : {
"provider" : "digitalocean",
"instance" : {
"id" : "194878454"
},
"region" : "nyc1"
},
"@timestamp" : "2020-06-04T21:45:03.995Z",
"agent" : {
"version" : "7.7.1",
"type" : "filebeat",
"ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-
962a80371ec0",
"hostname" : "june-ubuntu-20-04-elasticstack",
"id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32"
},
...
Se sua saída mostrar 0 total hits, o Elasticsearch não está carregando nenhum log sob o
índice que você pesquisou e você precisará revisar sua configuração por erros. Se você
recebeu a saída esperada, continue até o próximo passo, no qual veremos como navegar
por alguns painéis do Kibana.
Aqui, você pode pesquisar e navegar pelos seus logs e também personalizar seu painel.
Neste ponto, porém, não haverá muito lá porque você só está coletando syslogs do seu
servidor de pilha Elastic.
Por exemplo, você pode visualizar estatísticas detalhadas baseadas em suas mensagens
syslog:
Você também pode visualizar quais usuários usaram o comando sudo e quando:
O Kibana tem muitos outros recursos, como gráficos e filtros, para você explorar.
Conclusão
Neste tutorial, você aprendeu como instalar e configurar a pilha Elastic para coletar e
analisar logs de sistema. Lembre-se que você pode enviar praticamente qualquer tipo de
log ou dados indexados para o Logstash usando o Beats, mas os dados tornam-se ainda
mais úteis se eles forem analisados e estruturados com um filtro do Logstash, pois isso
transforma os dados em um formato consistente que pode ser lido facilmente pelo
Elasticsearch.
If you’ve enjoyed this tutorial and our broader community, consider checking out our
DigitalOcean products which can also help you achieve your development goals.