Como instalar o Elasticsearch, Logstash e Kibana (Elk Stack) no CentOS/Rhel 7
- 4555
- 907
- Mr. Mitchell Hansen
Se você é uma pessoa que é, ou já esteve no passado, responsável por inspecionar e analisar os registros do sistema no Linux, você sabe o que um pesadelo pode se tornar se vários serviços estiverem sendo monitorados simultaneamente.
Nos dias anteriores, essa tarefa tinha que ser feita principalmente manualmente, com cada tipo de log sendo tratado separadamente. Felizmente, a combinação de Elasticsearch, Logstash, e Kibana no lado do servidor, junto com FileBeat No lado do cliente, faz com que essa tarefa antes pareça uma caminhada no parque hoje.
Os três primeiros componentes formam o que é chamado de um Elk Stack, cujo principal objetivo é coletar logs de vários servidores ao mesmo tempo (também conhecidos como registro centralizado).
Leia sugerida: 4 Boas ferramentas de monitoramento e gerenciamento de log de código aberto para Linux
Uma interface da web baseada em Java embutida permite inspecionar logs rapidamente, para facilitar a comparação e a solução de problemas. Esses logs de clientes são enviados para um servidor central por FileBeat, que pode ser descrito como um agente de remessa de log.
Vamos ver como todas essas peças se encaixam. Nosso ambiente de teste consistirá nas seguintes máquinas:
Servidor central: CENTOS 7 (Endereço de IP: 192.168.0.29). 2 GB de RAM. Cliente #1: CENTOS 7 (Endereço de IP: 192.168.0.100). 1 GB de RAM. Cliente #2: Debian 8 (Endereço de IP: 192.168.0.101). 1 GB de RAM.
Por favor, observe que o BATER Os valores fornecidos aqui não são pré -requisitos rígidos, mas valores recomendados para a implementação bem -sucedida do Elk empilhe no servidor central. Menos BATER nos clientes não fará muita diferença, se houver,.
Instalando a pilha de alces no servidor
Vamos começar instalando o Elk Empilhe no servidor, juntamente com uma breve explicação sobre o que cada componente faz:
- Elasticsearch armazena os troncos enviados pelos clientes.
- Logstash processa esses logs.
- Kibana Fornece a interface da web que nos ajudará a inspecionar e analisar os logs.
Instale os seguintes pacotes no servidor central. Primeiro, vamos instalar Java JDK versão 8 (atualizar 102, o mais recente no momento da redação deste artigo), que é uma dependência do Elk componentes.
Você pode verificar primeiro na página Java Downloads aqui para ver se há uma atualização mais recente disponível.
# yum update # cd /opt # wget--no-cookies--não-check-certificate-header "cookie: gpw_e24 = http%3a%2f%2fwww.oráculo.com%2f; oraclelicense = aceit-securebackup-cookie "" http: // download.oráculo.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm " # rpm -uvh jre-8u102-linux-x64.RPM
Hora de verificar se a instalação foi concluída com êxito:
# java -versionVerifique a versão Java da CommandLine
Para instalar as versões mais recentes de Elasticsearch, Logstash, e Kibana, Teremos que criar repositórios para yum manualmente como segue:
Ativar repositório Elasticsearch
1. Importe a chave GPG pública Elasticsearch para o RPM Package Manager:
# rpm --import http: // pacotes.elástico.Pesquisa de co/gpg-key-elástica
2. Insira as seguintes linhas no arquivo de configuração do repositório Elasticsearch.repo
:
[Elasticsearch] Nome = Elasticsearch Repository Baseurl = http: // pacotes.elástico.Co/Elasticsearch/2.X/CENTOS GPGCHECK = 1 GPGKEY = http: // pacotes.elástico.Pesquisa de Co/GPG-Key-ELASTICS Habiled = 1
3. Instale o pacote Elasticsearch.
# yum install Elasticsearch
Quando a instalação estiver concluída, você será solicitado a iniciar e ativar o Elasticsearch:
Instale o Elasticsearch no Linux4. Inicie e habilite o serviço.
# SystemCtl Daemon-Reload # SystemCtl Ativar Elasticsearch # SystemCtl START Elasticsearch
5. Permitir tráfego através da porta TCP 9200 no seu firewall:
# firewall-cmd --add-port = 9200/tcp # firewall-cmd --add-port = 9200/tcp --permanente
6. Verifique se Elasticsearch responde a solicitações simples sobre Http:
# Curl -x Obtenha http: // localhost: 9200
A saída do comando acima deve ser semelhante a:
Verifique a instalação do ElasticsearchCertifique -se de concluir as etapas acima e prosseguir com Logstash. Desde ambos Logstash e Kibana compartilhe o Elasticsearch gpg Chave, não há necessidade de reimportá-lo antes de instalar os pacotes.
Leia sugerida: Gerenciar logs do sistema (configurar, girar e importar para o banco de dados) no CentOS 7
Ativar repositório de logstash
7. Insira as seguintes linhas no arquivo de configuração do repositório Logstash.repo
:
[Logstash] Nome = Logstash Baseurl = http: // pacotes.Elasticsearch.org/logstash/2.2/CENTOS GPGCHECK = 1 GPGKEY = http: // pacotes.Elasticsearch.Org/GPG-Key-ELASTICSearch Habiled = 1
8. Instale o Logstash pacote:
# yum instalar logstash
9. Adicione a Ssl certificado com base no endereço IP do servidor de alces na linha a seguir abaixo do [v3_ca]
seção em /etc/pki/tls/openssl.CNF
:
[V3_CA] SubjectName = IP: 192.168.0.29Adicionar endereço IP do Elasticsearch Server
10. Gerar um certificado autoassinado válido para 365 dias:
# cd/etc/pki/tls # openssl req -config/etc/pki/tls/openSSL.CNF -x509 -Days 3650 -Batch -Nodes -NewKey RSA: 2048 -Keyout Private/Logstash -Forwer.Chave -out Certs/Logstash -Forwarder.Crt
11. Configure Logstash Arquivos de entrada, saída e filtro:
Entrada: Criar /etc/logstash/conf.d/entrada.conf
e insira as seguintes linhas nele. Isso é necessário para o Logstash "aprender”Como processar batidas vindo de clientes. Verifique se o caminho para o certificado e a chave corresponde aos caminhos certos, conforme descrito na etapa anterior:
entrada beats porta => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.CRT "ssl_key =>"/etc/pki/tls/private/logstash-forwer.chave"
Saída (/etc/logstash/conf.d/saída.conf
) arquivo:
saída Elasticsearch hosts => ["localhost: 9200"] Sniffing => true Manage_Template => false index => "%[@metadata] [Beat]-%+aaaaaaaaaaa.MILÍMETROS.dd "document_type =>"%[@metadata] [tipo] "
Filtro (/etc/logstash/conf.d/filtro.conf
) arquivo. Vamos registrar mensagens syslog por simplicidade:
filtro if [type] == "syslog" grok match => "message" => "%syslogline" data match => ["timestamp", "mmm d hh: mm: ss" , "Mmm dd hh: mm: ss"]
12. Verifique o Logstash Arquivos de configuração.
# Service Logstash ConfigTestVerifique a configuração do LOGSTASH
13. Inicie e habilite o Logstash:
# SystemCtl Daemon-Reload # SystemCtl Iniciar LogSh
14. Configure o firewall para permitir que Logstash obtenha os logs dos clientes (porta TCP 5044):
# firewall-cmd --add-port = 5044/tcp # firewall-cmd --add-port = 5044/tcp --permanente
Ativar repositório Kibana
14. Insira as seguintes linhas no arquivo de configuração do repositório Kibana.repo
:
[Kibana] Nome = Kibana Repository Baseurl = http: // pacotes.elástico.Co/Kibana/4.4/CENTOS GPGCHECK = 1 GPGKEY = http: // pacotes.elástico.Pesquisa de Co/GPG-Key-ELASTICS Habiled = 1
15. Instale o Kibana pacote:
# yum install kibana
16. Inicie e habilite Kibana.
# SystemCtl Daemon-Reload # SystemCtl Start Kibana # SystemCtl Ativar Kibana
17. Verifique se você pode acessar a interface da web de Kibana de outro computador (permita o tráfego na porta TCP 5601):
# firewall-cmd --add-port = 5601/tcp # firewall-cmd --add-port = 5601/tcp --permanente
18. Lançar Kibana (http: // 192.168.0.29: 5601
) Para verificar se você pode acessar a interface da web:
Voltaremos aqui depois de instalar e configurar FileBeat nos clientes.
Leia sugerida: Monitor Server faz login em tempo real com “Log.ferramenta io ”no Linux
Instale o FileBeat nos servidores do cliente
Vamos mostrar como fazer isso para Cliente #1 (Repita para Cliente #2 depois, mudando os caminhos, se aplicável à sua distribuição).
1. Copie o certificado SSL do servidor para os clientes:
# scp/etc/pki/tls/certs/logstash-forwer.CRT [email protegido]:/etc/pki/tls/certs/
2. Importar o Elasticsearch Chave Public GPG para o RPM Package Manager:
# rpm --import http: // pacotes.elástico.Pesquisa de co/gpg-key-elástica
3. Criar um repositório para FileBeat (/etc/yum.Repos.D/FileBeat.repo
) em CENTOS Distribuições baseadas:
[FileBeat] Nome = FileBeat for Elk Clients Baseurl = https: // pacotes.elástico.Co/Beats/Yum/El/$ Basearch ativado = 1 gpgkey = https: // pacotes.elástico.Co/GPG-Key-ELASTICSEARCH GPGCHECK = 1
4. Configure a fonte para instalar o FileBeat Debian e seus derivados:
# Aptidão Instale o apt-transport-https # echo "Deb https: // pacotes.elástico.Co/Beats/Apt estável ">/etc/apt/fontes.lista.D/FileBeat.Lista # Atualização de aptidão
5. Instale o FileBeat pacote:
# yum instale o arquivo de arquivo [em CENTOS e distos baseados] # aptitude install filebeat [on on Debian e seus derivados]
6. Inicie e habilite o FileBeat:
# SystemCtl Iniciar o FileBeat # SystemCtl Ativar FileBeat
Configure o FileBeat
uma palavra de cautela aqui. FileBeat A configuração é armazenada em um Yaml arquivo, que requer recuo rigoroso. Tenha cuidado com isso enquanto você edita /etc/FileBeat/FileBeat.yml
do seguinte modo:
- Sob caminhos, Indique quais arquivos de log devem ser "enviados" para o servidor de alces.
- Sob Prospectors:
input_type: log document_type: syslog
- Sob saída:
- Descomamento a linha que começa com Logstash.
- Indique o endereço IP do seu servidor e porta de alces onde o Logstash está ouvindo anfitriões.
- Verifique se o caminho para o certificado aponta para o arquivo real que você criou Etapa i (Logstash seção) acima.
As etapas acima são ilustradas na imagem a seguir:
Configurar o FileBeat em servidores clientesSalvar alterações e depois reiniciar FileBeat nos clientes:
# SystemCtl Restart FileBeat
Depois de concluirmos as etapas acima dos clientes, fique à vontade para prosseguir.
Testando o arquivo de arquivo
Para verificar se os logs dos clientes podem ser enviados e recebidos com sucesso, execute o seguinte comando no Elk servidor:
# Curl -xget 'http: // localhost: 9200/FileBeat -*/_ Search?bonito'
A saída deve ser semelhante a (observe como as mensagens de /var/log/mensagens e /var/log/seguro estão sendo recebidos de Client1 e Client2):
Testando o arquivo de arquivoCaso contrário, verifique o FileBeat Arquivo de configuração para erros.
# JournalCtl -xe
Depois de tentar reiniciar o FileBeat, o apontará para as linhas ofensivas.
Testando Kibana
Depois de verificamos que os registros estão sendo enviados pelos clientes e recebidos com sucesso no servidor. A primeira coisa que teremos que fazer em Kibana está configurando um padrão de índice e defina -o como padrão.
Você pode descrever um índice como um banco de dados completo em um contexto de banco de dados relacional. Nós iremos com FileBeat-*
(ou você pode usar um critério de pesquisa mais preciso, conforme explicado na documentação oficial).
Digitar FileBeat-*
no Nome do índice ou campo de padrão e depois clique Criar:
Observe que você terá permissão para inserir um critério de pesquisa mais refinado posteriormente. Em seguida, clique na estrela dentro do retângulo verde para configurá -lo como o padrão de índice padrão:
Configurar padrão padrão de índice KibanaFinalmente, no Descobrir Menu, você encontrará vários campos para adicionar ao relatório de visualização de log. Apenas pairu sobre eles e clique Adicionar:
Adicionar relatório de visualização de logOs resultados serão mostrados na área central da tela, como mostrado acima. Sinta -se à vontade para brincar (adicione e remova os campos do relatório de log) para se familiarizar com Kibana.
Por padrão, Kibana exibirá os registros que foram processados durante o último 15 minutos (consulte o canto superior direito), mas você pode alterar esse comportamento selecionando outro prazo:
Relatórios de log de KibanaResumo
Neste artigo, explicamos como configurar uma pilha de alces para coletar os registros do sistema enviados por dois clientes, um CentOS 7 e um Debian 8 Machines.
Agora você pode se referir à documentação oficial do Elasticsearch e encontrar mais detalhes sobre como usar essa configuração para inspecionar e analisar seus logs com mais eficiência.
Se você tiver alguma dúvida, não hesite em perguntar. Estamos ansiosos para ouvir de você.
- « A verdade de Python e Perl - recursos, prós e contras discutidos
- Como criar e executar novas unidades de serviço no Systemd usando script de shell »