Lo stack ELK è anche noto come stack elastico, è costituito da Elasticsearch, Logstash e Kibana. Ti aiuta ad avere tutti i tuoi log archiviati in un unico posto e ad analizzare i problemi correlando gli eventi in un determinato momento.
Questa guida ti aiuta a installare lo stack ELK su CentOS 7 / RHEL 7 .
Componenti
Archiviazione – Esegue l'elaborazione (raccogli, arricchisci e invialo a Elasticsearch) dei log in arrivo inviati da beats (forwarder).
Ricerca elastica – Memorizza i log in entrata da Logstash e offre la possibilità di cercare log/dati in tempo reale
Kibana – Fornisce la visualizzazione dei registri.
Batti – Installato sui computer client, invia i log a Logstash tramite il protocollo Beats.
Ambiente
Per avere uno stack ELK completo, avremmo bisogno di due macchine per testare la raccolta dei log.
Pila ELK
Sistema operativo:CentOS 7 Indirizzo IP minimo:192.168.1.10HostName:server.itzgeek.local
Filebeat
Sistema operativo:CentOS 7 Indirizzo IP minimo:192.168.1.20HostName:client.itzgeek.local
Prerequisiti
Installa Java
Poiché Elasticsearch è basato su Java, assicurati di avere OpenJDK o Oracle JDK installato sulla tua macchina.
LEGGI :Come installare Oracle Java 8 su CentOS 7 / RHEL 7
Qui sto usando OpenJDK 1.8.
yum -y install java-1.8.0 wget
Verifica la versione Java.
versione java
Risultato:
Java versione "1.8.0_181"Java(TM) SE Runtime Environment (build 1.8.0_181-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, modalità mista)
Configura repository ELK
Importa la chiave di firma elastica.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Configura il repository Elasticsearch e installalo.
vi /etc/yum.repos.d/elk.repo
Aggiungi i seguenti contenuti a elk.repo file.
[elasticsearch-6.x]name=repository Elasticsearch per packagesbaseurl 6.x=https://artifacts.elastic.co/packages/6.x/ymgpgcheck=1gpgkey=https://artifacts.elastic.co/ GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
Installa Elasticsearch
Elasticsearch è un motore di ricerca open source, offre una ricerca e analisi distribuite in tempo reale con l'interfaccia web RESTful. Elasticsearch memorizza tutti i dati inviati dal Logstash e visualizzati tramite l'interfaccia web (Kibana) su richiesta degli utenti.
Installa Elasticsearch.
yum install -y elasticsearch
Configura Elasticsearch per l'avvio durante l'avvio del sistema.
systemctl daemon-reloadsystemctl abilita elasticsearchsystemctl avvia elasticsearch
Usa CURL per verificare se Elasticsearch risponde o meno alle query.
curl -X OTTIENI http://localhost:9200
Risultato:
{ "name" :"1DwGO86", "cluster_name" :"elasticsearch", "cluster_uuid" :"xboS_6K5Q2OO1XA-QJ9GIQ", "version" :{ "number" :"6.4.0", "build_flavor" :" default", "build_type" :"rpm", "build_hash" :"595516e", "build_date" :"2018-08-17T23:18:47.308994Z", "build_snapshot" :false, "lucene_version" :"7.4.0 ", "minimum_wire_compatibility_version" :"5.6.0", "minimum_index_compatibility_version" :"5.0.0" }, "tagline" :"Sai, per la ricerca"}
Installa Logstash
Logstash è uno strumento open source per la gestione di eventi e log, raccoglie i log, li analizza e li archivia su Elasticsearch per la ricerca. Sono disponibili oltre 160 plug-in per Logstash che offre la capacità di elaborare i diversi tipi di eventi senza lavoro aggiuntivo.
Installa il pacchetto Logstash.
yum -y install logstash
Crea certificato SSL (facoltativo)
Filebeat (Logstash Forwarder) sono normalmente installati sui server client e utilizzano il certificato SSL per convalidare l'identità del server Logstash per una comunicazione sicura.
Crea un certificato SSL con il nome host o IP SAN.
Opzione 1:(FQDN nome host)
Se utilizzi il nome host del server Logstash nella configurazione beats (forwarder), assicurati di avere un record per il server Logstash e assicurati anche che la macchina client possa risolvere il nome host del server Logstash.
Vai alla directory OpenSSL.
cd /etc/pki/tls/
Ora crea il certificato SSL. Sostituisci verde uno con il nome host del tuo vero server Logstash.
openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt -subj /CN=server.itzgeek.local
Opzione 2:(Indirizzo IP)
Se intendi utilizzare un indirizzo IP invece del nome host, segui i passaggi per creare un certificato SSL per IP SAN.
Per creare un certificato SAN IP, dovresti aggiungere un indirizzo IP del server Logstash a SubjectAltName nel file di configurazione di OpenSSL.
vi /etc/pki/tls/openssl.cnf
Cerca la sezione "[ v3_ca ]" e sostituisci verde uno con l'IP del tuo server Logstash.
subjectAltName =IP:192.168.1.10
Vai alla directory OpenSSL.
cd /etc/pki/tls/
Ora crea un certificato SSL eseguendo il seguente comando.
openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crtQuestologstash-forwarder.crt deve essere copiato su tutte le macchine client che inviano i log al server Logstash.
Configura Logstash
La configurazione di Logstash può essere trovata in /etc/logstash/conf.d/ . Il file di configurazione di Logstash è costituito da tre sezioni di input, filtro e output. Tutte e tre le sezioni possono essere trovate in un unico file o in file separati che terminano con .conf.
Ti consiglio di utilizzare un unico file per posizionare le sezioni di input, filtro e output.
vi /etc/logstash/conf.d/logstash.conf
Nella prima sezione, inseriremo una voce per la configurazione dell'input. La configurazione seguente imposta Logstash in modo che sia in ascolto sulla porta 5044 per i log in arrivo dai beat (forwarder) che si trovano sui computer client.
Inoltre, aggiungi i dettagli del certificato SSL nella sezione di input per la comunicazione sicura – Facoltativo.
input { beats { port => 5044 # Imposta su False se non usi SSL ssl => true # Elimina le righe sottose non usi SSL ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" }}
Nella sezione filtri. Utilizzeremo Grok per analizzare i log prima di inviarli a Elasticsearch. Il seguente filtro grok cercherà il syslog log etichettati e prova ad analizzarli per creare un indice strutturato.
filtro {if [type] =="syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date {match => [ "timestamp", "MMM d HH:mm :ss", "MMM gg HH:mm:ss" ]} }}
Per ulteriori modelli di filtro, dai un'occhiata alla pagina di grokdebugger.
Nella sezione di output, definiremo la posizione in cui verranno archiviati i log; ovviamente dovrebbe essere Elasticsearch.
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" }stdout { codec => rubydebug }}
Ora avvia e abilita il servizio Logstash.
systemctl avvia logstashsystemctl abilita logstash
Puoi risolvere qualsiasi problema esaminando i log di Logstash.
cat /var/log/logstash/logstash-plain.log
Installa e configura Kibana
Kibana fornisce la visualizzazione dei log archiviati su Elasticsearch. Installa Kibana usando il seguente comando.
yum -y installa kibana
Modifica il file kibana.yml.
vi /etc/kibana/kibana.yml
Per impostazione predefinita, Kibana è in ascolto su localhost, il che significa che non puoi accedere all'interfaccia di Kibana da macchine esterne. Per consentirlo, modifica la riga sottostante con l'IP della tua macchina.
server.host:"192.168.1.10 "
Decommenta la riga seguente e aggiornala con l'URL dell'istanza Elasticsearch. Nel mio caso, è localhost.
elasticsearch.url:"http://localhost:9200 "
Avvia e abilita kibana all'avvio del sistema.
systemctl avvia kibanasystemctl abilita kibana
Firewall
Configura un firewall sul nodo dello stack ELK per ricevere i log dalle macchine client.
5044 – Affinché Logstash riceva i log
5061 – Per accedere all'interfaccia Kibana dalla macchina esterna.
firewall-cmd --permanent --add-port=5044/tcpfirewall-cmd --permanent --add-port=5601/tcpfirewall-cmd --reload
Successivamente, configureremo i beat per spedire i log al server Logstash.
Installa e configura Filebeat
Sono disponibili quattro client beat
- Packetbeat – Analizza i dati dei pacchetti di rete.
- Filebeat – Informazioni in tempo reale sui dati di registro.
- Topbeat – Ottieni informazioni dettagliate dai dati dell'infrastruttura.
- battito metrico – Invia le metriche a Elasticsearch.
Per analizzare i log di sistema della macchina client (es. client.itzgeek.local), è necessario installare filebeat . Crea il file beats.repo.
vi /etc/yum.repos.d/beats.repo
Aggiungi il contenuto seguente al file repository sopra.
[elasticsearch-6.x]name=repository Elasticsearch per packagesbaseurl 6.x=https://artifacts.elastic.co/packages/6.x/ymgpgcheck=1gpgkey=https://artifacts.elastic.co/ GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
Ora installa Filebeat usando il seguente comando.
yum -y install filebeat
Configura una voce host sul computer client nel caso in cui il tuo ambiente non disponga di un server DNS .
vi /etc/hosts
Crea una voce host come di seguito sul computer client.
192.168.1.10 server.itzgeek.local server
Filebeat (beats) utilizza il certificato SSL per convalidare l'identità del server Logstash, quindi copia il logstash-forwarder.crt dal server Logstash al client.
Salta questo passaggio, nel caso in cui non utilizzi SSL in Logstash.
scp -pr [email protected] :/etc/pki/tls/certs/logstash-forwarder.crt /etc/ssl/certs/
Il file di configurazione di Filebeat è in formato YAML, il che significa che il rientro è molto importante. Assicurati di utilizzare lo stesso numero di spazi utilizzati nella guida.
Apri il file di configurazione di filebeat.
vi /etc/filebeat/filebeat.yml
In cima, vedresti la sezione dei cercatori. Qui è necessario specificare quali registri devono essere inviati a Logstash e come devono essere gestiti. Ogni cercatore inizia con – carattere.
A scopo di test, configureremo filebeat per inviare /var/log/messages al server Logstash. Per farlo, modifica il cercatore esistente in percorsi sezione.
Commenta il – /var/log/*.log per evitare di inviare tutti i .log file presenti in quella directory in Logstash.
filebeat.inputs:- digita:registro # Cambia in true per abilitare questa configurazione di input. abilitato:vero # percorsi di cui eseguire la scansione e il recupero. percorsi: - /var/log/messages # - /var/log/*.log. . .
Commenta la sezione output.elasticsearch: poiché non memorizzeremo i log direttamente su Elasticsearch.
Ora trova la riga output.logstash e modificare le voci come di seguito. Questa sezione definisce filebeat per inviare i log al server Logstash server.itzgeek.local sulla porta 5044 e menziona il percorso in cui è posizionato il certificato SSL copiato
Sostituisci server.itzgeek.local con l'indirizzo IP nel caso utilizzi IP SAN .
Riavvia il servizio.
systemctl riavvia filebeat
I registri dei battiti si trovano in genere in un file syslog.
cat /var/log/filebeat/filebeat
Accedi a Kibana
Accedi al Kibana utilizzando il seguente URL.
http://il-tuo-indirizzo-ip:5601/Otterresti la home page di Kibana.
Al tuo primo accesso, devi mappare l'indice di filebeat. Vai a Gestione>> Modelli di indice .
Digita quanto segue nel Pattern dell'indice casella.
filebeat-*
Dovresti vedere almeno un indice filebeat qualcosa come sopra. Fare clic su Passaggio successivo.
Seleziona @timestamp e quindi fare clic su Create .
@timestamp
Verifica i tuoi modelli di indice e le relative mappature.
Ora, fai clic su Scopri per visualizzare i registri in arrivo ed eseguire query di ricerca.
Questo è tutto.