Cos'è lo stack ELK?
ELK è un acronimo che sta per Elasticsearch Logstash Kibana. Ogni termine nell'abbreviazione ELK sta per un singolo software open source e tutti questi software vengono utilizzati collettivamente per l'analisi dei registri. L'analisi dei log è la scienza per dare un senso ai record generati dal computer. I registri vengono emessi da dispositivi di rete, sistemi operativi, applicazioni e tutti i tipi di dispositivi intelligenti o programmabili. Un flusso di messaggi in sequenza temporale spesso comprende un registro. I log possono essere diretti a file e archiviati su disco oppure indirizzati come flusso di rete a un raccoglitore di log.
Conosciamo brevemente le attività svolte da ciascuno dei software nello stack ELK.
Ricerca elastica: Memorizza i log e funge anche da motore di ricerca.
Archivio: Identifica i log nella rete e li invia alla ricerca elastica.
Kibana: È un software di visualizzazione dati che visualizza i dati dal database elasticsearch in modo interattivo.
Procedura di installazione
Ora che hai un'idea di base sullo stack ELK, installiamo ogni modulo o software in successione. Ma prima dobbiamo installare JAVA sul server.
Installazione JAVA
Scarica l'ultimo pacchetto JAVA o usa il comando seguente per aggiungere il pacchetto JAVA 8 al repository
sudo add-apt-repository -y ppa:webupd8team/java
Quindi aggiorna il repository usando il comando
sudo apt-get update
Utilizzare i seguenti comandi in successione per installare correttamente JAVA
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections sudo apt-get -y install oracle-java8-installer
Per verificare se il pacchetto è stato installato correttamente, digita quanto segue nel terminale
java -version
Se il pacchetto è stato installato correttamente, riceverai un messaggio come questo
java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Installazione di Elasticsearch
Utilizza i seguenti comandi uno per uno per scaricare e installare Elasticsearch sul tuo server
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list sudo apt-get update && sudo apt-get install elasticsearch
Ora esegui il comando seguente per avviare elasticsearch all'avvio
sudo update-rc.d elasticsearch defaults 95 10
Il comando darà il seguente risultato
Adding system startup for /etc/init.d/elasticsearch ... /etc/rc0.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc1.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc6.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc2.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc3.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc4.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc5.d/S95elasticsearch -> ../init.d/elasticsearch
Ora è il momento di avviarlo e vedere se funziona correttamente.
sudo /etc/init.d/elasticsearch start curl 'http://localhost:9200'
Se installato ed eseguito correttamente, dovresti ricevere un risultato di testo simile al seguente
root@ELKTest:~# curl 'http://localhost:9200' { "name" : "Termagaira", "cluster_name" : "elasticsearch", "cluster_uuid" : "72XGxcHjSjaaXDdtmIio0g", "version" : { "number" : "2.4.3", "build_hash" : "d38a34e7b75af4e17ead16f156feffa432b22be3", "build_timestamp" : "2016-12-07T16:28:56Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" }
Ora devi modificare il file di configurazione per limitare l'accesso esterno ai log di elasticsearch.
sudo vi /etc/elasticsearch/elasticsearch.yml
Ora trova la riga network.host, decommentala rimuovendo # prima della riga e sostituisci il contenuto di quella riga in localhost o 127.0.0.1 . Per questo esempio useremo localhost
network.host: localhost
Riavvia elasticsearch
sudo service elasticsearch restart
Installazione di Logstash
L'installazione di logstash è molto simile all'installazione di Elasticsearch, così come Kibana. Utilizza i seguenti comandi per importare e installare il pacchetto logstash.
echo "deb https://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install logstash
Ora esegui il comando seguente per avviare logstash all'avvio.
sudo update-rc.d logstash defaults 95 10
Result: Adding system startup for /etc/init.d/logstash ... /etc/rc0.d/K10logstash -> ../init.d/logstash /etc/rc1.d/K10logstash -> ../init.d/logstash /etc/rc6.d/K10logstash -> ../init.d/logstash /etc/rc2.d/S95logstash -> ../init.d/logstash /etc/rc3.d/S95logstash -> ../init.d/logstash /etc/rc4.d/S95logstash -> ../init.d/logstash /etc/rc5.d/S95logstash -> ../init.d/logstash
Finalmente avvia logstash
sudo /etc/init.d/logstash start
Installazione di Kibana
Usa i seguenti comandi in successione per importare e installare kibana
echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install kibana
Ora configura kibana per l'avvio all'avvio utilizzando
sudo update-rc.d kibana defaults 95 10
Result: Adding system startup for /etc/init.d/kibana ... /etc/rc0.d/K10kibana -> ../init.d/kibana /etc/rc1.d/K10kibana -> ../init.d/kibana /etc/rc6.d/K10kibana -> ../init.d/kibana /etc/rc2.d/S95kibana -> ../init.d/kibana /etc/rc3.d/S95kibana -> ../init.d/kibana /etc/rc4.d/S95kibana -> ../init.d/kibana /etc/rc5.d/S95kibana -> ../init.d/kibana
Configura il file kibana in modo che solo tu abbia accesso all'interfaccia.
sudo vi /opt/kibana/config/kibana.yml
Nel file di configurazione di Kibana, trova la riga server.host e sostituisci "0.0.0.0" con "localhost":quindi salva ed esci dal file di configurazione.
server.host: "localhost"
Ora riavvia il servizio
sudo service kibana restart
Installazione di NGINX
Prima di poter utilizzare l'interfaccia web di Kibana, devi installare un proxy inverso. Quindi installa NGINX usando il seguente comando.
sudo apt-get install nginx apache2-utils
Eseguendo il comando seguente è necessario impostare nome utente e password per l'interfaccia web di kibana
sudo htpasswd -c /etc/nginx/htpasswd.users kibadmin
Puoi usare qualsiasi nome a tua scelta al posto di kibadmin. Apparirà un messaggio che chiede di inserire una nuova password. Inserisci la password per il tuo account kibana e completa il processo.
Ora apporta le modifiche al blocco del server predefinito di Nginx usando quanto segue
sudo vim /etc/nginx/sites-available/default
Elimina il contenuto del file e incolla il codice seguente nel file, quindi salva ed esci.
server { listen 80; server_name yourdomain; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; 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; } }
Assicurati di sostituire il tuo dominio con il nome di dominio corrispondente. Quindi riavvia il server web eseguendo il comando seguente.
sudo service nginx restart
Lo stack ELK è ora installato correttamente sul server
Generazione certificato SSL
Genera certificato SSL seguendo i passaggi forniti nel link cliccando qui.
Quando hai una chiave e un certificato, inseriscili in /etc/nginx/cert.key e /etc/nginx/cert.pem e quindi crea un file /etc/nginx/sites-available/nsm con il seguente contenuto:
server { listen 80 default_server; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name hostname; <-- edit this to match your hostname root html; index index.html index.htm; ssl on; ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_protocols TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5601; include proxy_params; } }
Elimina il file di configurazione Nginx predefinito e abilita quello nuovo utilizzando il comando seguente, quindi riavvia il server web.
$ sudo rm /etc/nginx/sites-enabled/default && sudo ln -s /etc/nginx/sites-available/nsm /etc/nginx/sites-enabled/nsm $ sudo /etc/init.d/nginx restart
Se tutto viene eseguito correttamente, l'infrastruttura di ricerca principale è attiva e dovrebbe essere accessibile all'indirizzo https://