Pila ELK è una piattaforma di analisi dei dati completa, composta da tre strumenti open source Elasticsearch , Archiviazione e Kibana . Questo stack ti aiuta a archiviare e gestire i registri a livello centrale e offre la possibilità di analizzare i problemi correlando gli eventi in un momento particolare.
Questo post ti guida a installare lo stack ELK su Ubuntu 18.04 / Ubuntu 16.04 .
Componenti
Ricerca elastica – Memorizza i log in entrata da Logstash e offre la possibilità di cercare log/dati in tempo reale
Archiviazione – Elaborazione (raccogli, arricchisci e invialo a Elasticsearch) dei log in arrivo inviati da beats (forwarder).
Kibana – Fornisce la visualizzazione di eventi e registri.
Batti – Installato su macchine client e invia i log a Logstash o Elasticsearch tramite il protocollo Beats.
Prerequisiti
Installa Java
Elasticsearch richiede OpenJDK o Oracle JDK disponibile sulla tua macchina.
Qui, per questa demo, sto usando OpenJDK. Installa Java utilizzando il comando seguente insieme al pacchetto di supporto wget e HTTPS per APT.
sudo apt aggiornamentiudo apt install -y openjdk-8-jdk wget apt-transport-https
Controlla la versione Java.
versione java
Risultato:
openjdk versione "1.8.0_181"OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)OpenJDK 64-Bit Server VM (build 25.181-b13, modalità mista)
Se vuoi usare Oracle Java JDK, leggi.
LEGGI :Installa Oracle Java JDK 10/8 su Ubuntu 18.04
LEGGI :Installa Oracle Java JDK 8 su Ubuntu 16.04
Configura repository ELK
I pacchetti impilati ELK possono essere facilmente ottenuti da Elastic CO impostando il suo repository ufficiale .
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Installa Elasticsearch
Ora installeremo il server Elasticsearch, un motore di ricerca open source basato su Lucene. Fornisce un motore di ricerca full-text distribuito in tempo reale con capacità multi-tenant con un'interfaccia Web (HTTP) e documenti JSON senza schema.
Installa Elasticsearch utilizzando il comando seguente, v6.4 al momento della stesura di questo articolo.
sudo apt aggiornamentiudo apt install -y elasticsearch
Avvia il servizio Elasticsearch.
sudo systemctl avvia elasticsearchsudo systemctl abilita elasticsearch
Attendi qualche minuto ed esegui il comando seguente per vedere lo stato dell'interfaccia REST di Elasticsearch.
curl -X OTTIENI http://localhost:9200
Risultato:
{ "name" :"nqS7TFZ", "cluster_name" :"elasticsearch", "cluster_uuid" :"vERyh1VpR46G9T21H_3gKQ", "version" :{ "number" :"6.4.0", "build_flavor" :"default" , "build_type" :"deb", "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"}
L'output di cui sopra conferma che Elasticsearch è attivo e funziona correttamente.
Installa Logstash
Logstash è un motore di raccolta dati e analisi dei log open source. 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 un diverso tipo di eventi senza lavoro aggiuntivo.
sudo apt install -y logstash
Crea certificato SSL per Logstash (facoltativo)
È facoltativo impostare il Forwarder (Filebeat) che installiamo sui computer client per utilizzare il certificato SSL per la trasmissione sicura dei log.
Crea il certificato SSL con il nome host o IP SAN.
Opzione 1:(Nome host o FQDN)
Vai alla directory OpenSSL.
cd /etc/ssl/
Ora crea il certificato SSL usando OpenSSL. Sostituisci server.itzgeek.local con il nome host del tuo server Logstash.
sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.local
Questo logstash-forwarder.crt dovrebbe essere copiato su tutti i server client che inviano i log al server logstash.
Opzione 2:(Indirizzo IP)
Segui i passaggi seguenti per creare un certificato SSL per IP SAN.
Come prerequisito, aggiungi l'indirizzo IP del server Logstash a SubjectAltName nel file di configurazione di OpenSSL.
sudo nano /etc/ssl/openssl.cnf
Cerca [ v3_ca ] sezione e aggiorna subjectAltName con l'indirizzo IP del tuo server Logstash.
subjectAltName =IP:192.168.1.10
Vai alla directory OpenSSL.
cd /etc/ssl/
Ora crea il certificato SSL eseguendo il seguente comando.
sudo openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt
Questo logstash-forwarder.crt dovrebbe essere copiato su tutti i server client che inviano i log al server logstash.
Convertire SSL
Converti la chiave corrente nel formato PKCS8 affinché Logstash funzioni correttamente.
sudo openssl pkcs8 -in logstash-forwarder.key -topk8 -nocrypt -out logstash-forwarder.key.pem
Modifica l'autorizzazione del file in modo che sia leggibile da tutto il mondo.
sudo chmod 644 /etc/ssl/logstash-forwarder.key.pem
Configura Logstash
La configurazione di Logstash è composta da tre sezioni, ovvero input, filtro e output. Puoi inserire tutte le sezioni in un unico file o in un file separato per ciascuna sezione, terminare con .conf .
Qui useremo un singolo file per posizionare le sezioni di input, filtro e output. Crea un file di configurazione in /etc/logstash/conf.d/ directory.
sudo nano /etc/logstash/conf.d/logstash.conf
Nella sezione di input, configureremo Logstash in modo che sia in ascolto sulla porta 5044 per i log in entrata, dai beat (Forwarder) che si trovano sui computer client.
Inoltre, aggiungi i dettagli del certificato SSL nella sezione di input per una comunicazione sicura.
input { beats { port => 5044 # Imposta su False se non esegui SSL ssl => true # Elimina le righe sottostanti se non viene utilizzato SSL ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key.pem" }}
Nella sezione filtri. Utilizzeremo Grok per analizzare i log prima di inviarli a Elasticsearch, per l'archiviazione.
Il seguente filtro grok cercherà i log etichettati syslog 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 pattern di filtro GROK, dai un'occhiata a qui .
Nella sezione output definiremo dove archiviare i log, ovviamente Elasticsearch in caso di stack ELK.
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" }stdout { codec => rubydebug }}
Ora avvia e abilita il servizio Logstash.
sudo systemctl riavvia logstashsudo systemctl abilita logstash
Registri Logstash:
sudo cat /var/log/logstash/logstash-plain.log
Installa e configura Kibana
Kibana fornisce la visualizzazione dei dati archiviati su Elasticsearch. Installa Kibana usando il seguente comando.
sudo apt install -y kibanaPer impostazione predefinita, Kibana è in ascolto su localhost, il che significa che non puoi accedere all'interfaccia web di Kibana da macchine esterne.
Per consentire l'accesso, modifica /etc/kibana/kibana.yml file.
sudo nano /etc/kibana/kibana.yml
Apporta le modifiche alla riga sottostante con l'indirizzo IP del tuo server.
server.host:"192.168.1.10 "
Inoltre, alcuni casi Elasticsearch e Kibana funzionano su macchine diverse , quindi aggiorna la riga sottostante con l'indirizzo IP del server Elasticsearch.
elasticsearch.url:"http://localhost:9200 "
Avvia e abilita Kibana all'avvio della macchina.
sudo systemctl riavvia kibanasudo systemctl abilita kibana
Installa Beats
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.
Assicurarsi che le macchine client possano risolvere il nome host del server Logstash. Se il tuo ambiente non ha un server DNS , dovrai aggiungere una voce host per il server Logstash sul computer client.
sudo nano /etc/hosts
Crea una voce simile a quella di seguito.
192.168.1.10 server.itzgeek.local
Installa Filebeat
Filebeat è un agente software che viene eseguito sulla macchina client remota e invia i log al server Logstash per l'analisi o Elasticsearch per l'archiviazione dipende dalla configurazione.
Installa il supporto HTTPS per apt.
sudo apt aggiornamentiudo apt install -y apt-transport-https
Filebeat è disponibile nel repository Elastic, quindi è necessario configurarlo per l'installazione di Filebeat.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Installa Filebeat usando il seguente comando.
sudo apt aggiornamentiudo apt install -y filebeat
Configura Filebeat
Per prima cosa, copia il file logstash-forwarder.crt sul computer client remoto.
Salta questo passaggio, nel caso in cui non utilizzi SSL in Logstash per comunicazioni sicure.scp -pr [email protected] :/etc/ssl/logstash-forwarder.crt /etc/ssl
Modifica il file di configurazione di filebeat /etc/filebeat/filebeat.yml per inviare i log al server Logstash.
sudo nano /etc/filebeat/filebeat.yml
La configurazione seguente prevede l'invio dei log di sistema (/var/log/syslog ) al server Logstash. Per questa demo, ho commentato /var/log/*.log per evitare di inviare tutti i log al server Logstash.
Ora trova la riga output.logstash: e modificare le voci per inviare i log di sistema a Logstash e menzionare anche la posizione del certificato SSL.
Sostituisci server.itzgeek.local con indirizzo IP del server Logstash nel caso si utilizzi IP SAN.Riavvia il servizio Filebeat.
sudo systemctl riavvia filebeat
Il registro di Filebeat si trova in genere nel suo file di registro.
sudo cat /var/log/filebeat/filebeat
Accedi all'interfaccia Kibana
Accedi all'interfaccia web di Kibana andando al seguente URL.
http://il-tuo-indirizzo-ip:5601/O
http://nome-del-servizio:5601Otterresti 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 l'indice filebeat qualcosa come sopra. Fai clic su Passaggio successivo .
Seleziona @timestamp e quindi fai clic su Crea modello di indice .
@timestamp
Dai un'occhiata ai modelli dell'indice e alla sua mappatura.
Fai clic su Scopri nella barra di navigazione a sinistra per visualizzare i log in entrata dalle macchine client.
Questo è tutto.