ELK Stack è la piattaforma di gestione dei registri più popolare al mondo. È una raccolta di prodotti open source tra cui Elasticsearch, Logstash e Kibana. Tutti questi 3 prodotti sono sviluppati, gestiti e mantenuti da Elastic.
ELK Stack è una piattaforma potente e open source in grado di gestire un'enorme quantità di dati registrati. Il registro degli input proviene generalmente da un'interfaccia web grafica (GUI).
- Elasticsearch è un motore di ricerca e analisi basato su JSON pensato per una scalabilità orizzontale e una gestione più semplice.
- Logstash è un'interfaccia di elaborazione dati lato server che ha la capacità di raccogliere dati da diverse origini contemporaneamente. Quindi lo trasforma e quindi invia i dati alla scorta desiderata. È un'applicazione open source.
- Kibana viene utilizzato per visualizzare i tuoi dati e navigare nello Stack elastico. È anche uno strumento open source.
Installa e configura ELK Stack su Ubuntu
In questo tutorial useremo filebeat per inviare i dati di registro a Logstash. Beats sono spedizionieri di dati leggeri e per cominciare, dovremmo installare l'agente sui server.
Fase 1) Installazione di Java 8
ElasticSearch supporta Java 8 e 9, ma il problema è che Logstash è compatibile solo con Java 8. Java 9 non è ancora supportato. Pertanto, installeremo Oracle Java 8.
Avvia il Terminale e aggiungi il repository Oracle Java 8, seguito da un aggiornamento del sistema e dall'installazione effettiva.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-set-default
Presta attenzione al Terminale. Dovrai accettare le finestre del contratto di licenza e selezionare "sì" per continuare. Al termine dell'installazione, puoi controllare la versione java utilizzando i seguenti comandi:
.sudo java -version
sudo echo $JAVA_HOME
Fase 2) Installazione e configurazione di Elasticsearch
Iniziamo con wget comando per scaricare Elasticsearch seguito dalla chiave di firma pubblica:
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
In secondo luogo, installa il pacchetto apt-transport-https (le distribuzioni basate su Debian ne hanno bisogno).
sudo apt-get install apt-transport-https
Aggiungi il repository:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Aggiorna l'elenco dei repository e installa il pacchetto:
sudo apt-get update
sudo apt-get install elasticsearch
Modifichiamo il file “elasticsearch.yml”:
sudo vim /etc/elasticsearch/elasticsearch.yml
Decommentare “network.host” e “http.port”. È necessario aggiungere la seguente configurazione:
network.host: localhost http.port: 9200
Quindi, salva e chiudi il file.
Per assicurarti che ElasticSearch funzioni perfettamente, abilitalo all'avvio e Avvia ElasticSearch.
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Verifica installazione:
sudo curl -XGET 'localhost:9200/?pretty'
Fase 3) Installazione di Kibana
Iniziamo subito a installare Kibana e modifichiamo le impostazioni di Kibana:
sudo apt-get install kibana
sudo vim /etc/kibana/kibana.yml
Decommenta le seguenti righe:
server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200"
Salva ed esci dal file.
Abilitalo all'avvio e avvia il servizio Kibana:
sudo systemctl enable kibana.service
sudo systemctl start kibana.service
Fase 4) Configurazione di Nginx come proxy inverso per Kibana
Nelle righe simili, installiamo Nginx, configuriamolo e avviamo il servizio. Usa i seguenti comandi uno alla volta:
sudo apt-get install nginx apache2-utils
Configura host virtuale:
sudo vim /etc/nginx/sites-available/elk
Aggiungi la seguente configurazione al file:
server { listen 80; server_name elk.fosslinux.com; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.elkusersecret; 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; } }
Crea file utente e password per l'autenticazione del browser web:
sudo htpasswd -c /etc/nginx/.elkusersecret elkusr
Inserisci la password e ripeti. Controlla le configurazioni di Nginx:
sudo nginx -t
Abilita Nginx all'avvio del sistema e riavvia il servizio:
sudo systemctl enable nginx.service
sudo systemctl restart nginx.service
Fase 5) Installazione e configurazione di Logstash
Installa Logstash:
sudo apt-get install logstash
Qui genereremo la chiave del certificato SSL per proteggere il trasferimento del registro dal client file beat. Modifica il file "hosts" prima di creare il certificato SSL.
sudo vim /etc/hosts
Aggiungi la seguente riga al file. Assicurati di cambiare IP e nome del server con il tuo.
172.31.31.158 elk-server elk-server
Al termine, salva ed esci dal file.
Ora cambia la directory in Logstash.
sudo cd /etc/logstash/
Crea una cartella per SSL:
sudo mkdir ssl
Genera certificato SSL. Modifica elk-server con il nome del tuo server nel comando seguente.
sudo openssl req -subj '/CN=elk-server/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
Crea i seguenti file all'interno di "/etc/logstash/conf.d".
sudo cd /etc/logstash/conf.d/
crea un file di input filebeat usando vim.
sudo vim filebeat-input.conf
Aggiungi le seguenti righe.
input { beats { port => 5443 type => syslog ssl => true ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt" ssl_key => "/etc/logstash/ssl/logstash-forwarder.key" } }
Salva e chiudi il file e crea un nuovo file di configurazione.
sudo vim syslog-filter.conf
Aggiungi i seguenti contenuti.
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } add_field => [ "received_at", "%{@timestamp}" ] add_field => [ "received_from", "%{host}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
Salva ed esci dal file. Crea ricerca elastica file di output.
sudo vim output-elasticsearch.conf
Aggiungi le seguenti righe.
output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
Abilitiamo Logstash all'avvio e avviamo il servizio:
sudo systemctl enable logstash.service
sudo systemctl start logstash.service
Fase 6) Installazione e configurazione di Filebeat sui server client
Inizia con la modifica degli host file per aggiungere voci host elk. Assicurati di sostituire IP e nome con il tuo.
sudo vim /etc/hosts
172.31.31.158 elk-server
Salva ed esci dal file.
Scarica e installa la chiave di firma pubblica:
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Installa "apt-transport-https" e aggiungi repository.
sudo apt-get install apt-transport-https
sudo echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Aggiorna il repository e installa Filebeat.
sudo apt-get update
sudo apt-get install filebeat
Modifica le configurazioni di Filebeat.
sudo vim /etc/filebeat/filebeat.yml
Trova la riga seguente e modifica il valore in "true".
enabled: true
Qui non stiamo modificando il percorso del registro e Filebeat inoltrerà tutti i registri all'interno della cartella "var/log"
paths: - /var/log/*.log
Decommenta le seguenti righe:
output.logstash: # The Logstash hosts hosts: ["elk-server:5443"] ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]
Commenta Ricerca elastica:
#output.elasticsearch: # Array of hosts to connect to. # hosts: ["localhost:9200"]
Salva ed esci dal file.
Ora vai al server ELK e ottieni i contenuti "logstash-forwarder.crt"
sudo cat /etc/logstash/ssl/logstash-forwarder.crt
copia l'output e poi vai su Elk client-server.
Crea un file di certificato
sudo vim /etc/filebeat/logstash-forwarder.crt
inserisci l'output copiato e salva ed esci.
Abilita filebeat all'avvio del sistema Avvia filebeat servizio.
sudo systemctl enable filebeat.service
sudo systemctl start filebeat.service
Fase 7) Navigazione nella dashboard di Kibana
Avvia il tuo browser web preferito e inserisci il nome di dominio seguito da nome utente e password.
http://elk.fosslinux.com
Immettere il nome utente e la password creati. Dovresti vedere la pagina di benvenuto di Kibana. Fai clic sul pulsante "Esplora il mio".
Dovresti essere indirizzato alla Home Page di Kibana.
Fai clic su "Scopri" sul lato sinistro. Fai clic su "Crea modello di indice".
Quindi definisci il modello di indice "filebeat-*".
Fai clic su Avanti e scegli @timestamp" e fai clic su "Crea modello di indice".
Il pattern dell'indice dovrebbe essere creato.
Fai clic sul menu "Scopri" per vedere i registri del server.
I registri verranno visualizzati secondo il timestamp. Fare clic su qualsiasi timestamp per espanderlo e vedere il contenuto del file di registro e i suoi dettagli.
Se hai raggiunto qui, significa che hai installato e configurato correttamente lo stack ELK con filebeat. Hai qualche problema? Sentiti libero di farcelo sapere nei commenti qui sotto.