In questo post, vedremo come installare Elasticsearch, Logstash e Kibana 4 su Ubuntu 14.04 / 15.04. Questo stack ELK ci aiuta a archiviare e gestire i log in una posizione centralizzata. Lo stack ELK è costituito da quattro componenti vitali che costituiscono uno stack meraviglioso per analizzare i problemi correlando gli eventi in un determinato momento.
La centralizzazione dei registri semplificherà la vita di un amministratore di sistema nell'analisi dei problemi e dei problemi senza accedere a ciascuna macchina per i registri e nella visualizzazione di tali registri per la gestione per i requisiti aziendali.
Componenti:
Logstash:esegue l'elaborazione (raccolta, analisi e invio a Elasticsearch) dei log in arrivo.
Elasticsearch – Archivia i log provenienti da Logstash.
Kibana 4 – Interfaccia Web per la visualizzazione dei log (ha una propria interfaccia). I tre precedenti sono installati sul server.
Logstash-forwarder:installato sui computer client, invia il registro a Logstash tramite il protocollo lumberjack.
Versioni dell'applicazione:
Questo articolo utilizza la versione seguente dei software per lo stack ELK.
Elastisearch 1.7.0
logstash-1.5.3
Kibana 4.1.1
logstash-forwarder-0.4.0
Prerequisiti:
1. È necessario installare openJDK o Oracle JDK, si consiglia di installare Oracle JDK. Verifica la versione java utilizzando il comando seguente.
$ java -version java version "1.8.0_11" Java(TM) SE Runtime Environment (build 1.8.0_11-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
2. Installa wget.
$ sudo su - # apt-get update # apt-get install wget
Installa Elasticsearch:
Elasticsearch è un server di ricerca open source, offre una ricerca e analisi distribuite in tempo reale con interfaccia web RESTful. Elasticsearch archivia tutti i log inviati dal server logstash e visualizza i messaggi quando kibana4 richiede il riempimento completo della richiesta dell'utente tramite l'interfaccia web.
Questo argomento tratta le impostazioni di configurazione richieste per ELK, puoi anche dare un'occhiata a Install Elasticsearch su CentOS 7 / Ubuntu 14.10 / Linux Mint 17.1 per istruzioni dettagliate.
Installiamo Elasticsearch, può essere scaricato dal sito ufficiale. Configura il repository e installa l'ultima versione di Elasticsearch.
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - # echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list # apt-get update && apt-get install elasticsearch
Configura Elasticsearch per l'avvio durante l'avvio del sistema.
# systemctl daemon-reload # systemctl enable elasticsearch.service # systemctl start elasticsearch.service
Attendi almeno un minuto per consentire il riavvio completo di Elasticsearch, altrimenti il test avrà esito negativo. Ora Elastisearch dovrebbe essere in ascolto su 9200 per l'elaborazione della richiesta HTTP, possiamo usare CURL per ottenere la risposta.
# curl -X GET http://localhost:9200 { "status" : 200, "name" : "Thermo", "cluster_name" : "elasticsearch", "version" : { "number" : "1.7.0", "build_hash" : "929b9739cae115e73c346cb5f9a6f24ba735a743", "build_timestamp" : "2015-07-16T14:31:07Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "tagline" : "You Know, for Search" }
Installa Logstash:
Logstash è uno strumento open source, utilizzato per raccogliere registri, analizzarli e archiviarli cercando. Sì, logstash viene fornito con un'interfaccia web (kibana3 è integrato) per visualizzare i log di cui non discuteremo qui, invece usiamo kibana4. L'elaborazione di vari tipi di eventi può essere estesa aggiungendo plug-in, al momento sono disponibili oltre 160 plug-in. Andiamo direttamente all'installazione.
# echo "deb http://packages.elasticsearch.org/logstash/1.5/debian stable main" | sudo tee -a /etc/apt/sources.list # apt-get update && apt-get install logstash
Una volta installato il server logstash, passiamo alla sezione successiva
Crea certificato SSL:
Logstash-forwarder che verrà installato sul client-server per spedire i log richiede un certificato SSL per convalidare l'identità del server logstash. Abbiamo due opzioni per creare un certificato SSL e dipende dalla configurazione del logstash-forwarder; se utilizzi il nome host ("server":[ "server.itzgeek.local:5050" ]), il nome del soggetto di SSL deve corrispondere a "server.itzgeek.local". Se utilizzi ( “server”:[ “192.168.12.10:5050” ]) un indirizzo IP, devi creare un certificato SSL con IP SAN con valore 192.168.12.10.
Segui uno qualsiasi dei metodi per creare un certificato SSL.
Opzione 1:(FQDN nome host)
Prima di creare un certificato, assicurati di avere un record per il server logstash; assicurarsi che i server client siano in grado di risolvere il nome host del server logstash. Se non disponi di DNS, aggiungi gentilmente la voce host per il server logstash; dove 192.168.12.10 è l'indirizzo IP del server logstash e itzgeek è il nome host del tuo server logstash.
# vi /etc/hosts 192.168.12.10 server.itzgeek.local
Creiamo un certificato SSL. Vai alla directory OpenSSL.
# cd /etc/ssl/
Esegui il comando seguente per creare un certificato SSL, sostituisci quello "rosso" con il tuo vero server logstash.
# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.local
Opzione 2:(Indirizzo IP)
Prima di creare un certificato SSL, è necessario aggiungere l'indirizzo IP del server logstash a SubjectAltName nel file di configurazione di OpenSSL.
# vi /etc/pki/tls/openssl.cnf
Vai alla sezione "[ v3_ca ]" e sostituisci quella "rossa" con l'ip del tuo server logstash.
subjectAltName = IP:192.168.12.10
Vai alla directory OpenSSL.
# cd /etc/ssl/
Esegui il comando seguente per creare un certificato SSL.
# 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.
Configura Logstash:
I file di configurazione di Logstash possono essere trovati in /etc/logstash/conf.d/, solo una cartella vuota. Avremmo bisogno di creare un file, i file di configurazione logstash sono costituiti da tre sezioni di input, filtro e output; tutte e tre le sezioni possono essere trovate in un unico file oppure ogni sezione avrà estremità di file separate con .conf.
Qui useremo un singolo file per posizionare una sezione 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 lumberjack in ascolto sulla porta 5050 per i log in entrata dal logstash-forwarder che si trova nei server client, inoltre utilizzerà il certificato SSL che abbiamo creato in precedenza.
input { lumberjack { port => 5050 type => "logs" ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" } }
Nella seconda sezione, inseriremo una voce per la configurazione del filtro. Grok è un filtro in logstash, che esegue l'analisi dei log prima di inviarli a Elasticsearch per l'archiviazione. Il seguente filtro grok cercherà i log etichettati come "syslog" e tenterà di analizzarli per creare un indice strutturato.
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
Prendi in considerazione l'idea di visitare grokdebugger per i modelli di filtro.
Nella terza sezione, inseriremo una voce di configurazione dell'output. Questa sezione definisce la posizione in cui vengono archiviati i registri; ovviamente dovrebbe essere Elasticsearch.
output { elasticsearch { host => localhost index => "logstash-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Ora avvia il servizio logstash.
# systemctl start logstash.service
I registri del server Logstash sono archiviati nel file seguente e ci aiuterà a risolvere i problemi.
# cat /var/log/logstash/logstash.log
Successivamente configureremo un logstash-forwarder per spedire i log al server logstash.
Configura Logstash-forwarder.
Logstash-forwarder è un software client che spedisce i log a un server logstash, dovrebbe essere installato su tutti i server client. Logstash-forwarder può essere scaricato dal sito Web ufficiale oppure puoi utilizzare il seguente comando per scaricarlo nel terminale e installarlo.
# wget https://download.elastic.co/logstash-forwarder/binaries/logstash-forwarder_0.4.0_amd64.deb # dpkg -i logstash-forwarder_0.4.0_amd64.deb
Logstash-forwader utilizza il certificato SSL per convalidare l'identità del server logstash, quindi copia logstash-forwarder.crt che abbiamo creato in precedenza dal server logstash al client.
# scp -pr [email protected]://etc/ssl/logstash-forwarder.crt /etc/ssl
Apri il file di configurazione.
# vi /etc/logstash-forwarder.conf
Nella sezione "rete", menziona il server logstash con il numero di porta e il percorso del certificato logstash-forwarder che hai copiato dal server logstash.
Questa sezione definisce il logstash-forwarder per inviare un log al server logstash "server.itzgeek.local" sulla porta 5050 e il client convalida l'identità del server con l'aiuto del certificato SSL. Nota:sostituisci "server.itzgeek.local" con l'indirizzo IP in caso di utilizzo di IP SAN.
"servers": [ "server.itzgeek.local:5050" ], "ssl ca": "/etc/ssl/logstash-forwarder.crt", "timeout": 15
Nella sezione "file", configura quali sono tutti i file da spedire. In questo articolo configureremo un logstash-forwarder per inviare un log (/var/log/syslog) al server logstash con "syslog" come tipo.
{ "paths": [ "/var/log/syslog" ], "fields": { "type": "syslog" } }
Riavvia il servizio.
# systemctl start logstash-forwarder.service
Puoi guardare un file di registro in caso di problemi.
# cat /var/log/logstash-forwarder/logstash-forwarder.err
Configura Kibana 4:
Kidbana fornisce la visualizzazione dei log, scaricalo dal sito ufficiale. Usa il seguente comando per scaricarlo nel terminale.
# wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
Estrailo e spostalo in /opt/
# tar -zxvf kibana-4.1.1-linux-x64.tar.gz # mv kibana-4.1.1-linux-x64 /opt/kibana4
Abilita il file PID per Kibana, questo è necessario per creare un file di inizializzazione di sistema.
# sed -i 's/#pid_file/pid_file/g' /opt/kibana4/config/kibana.yml
Kibana può essere avviato eseguendo /opt/kibana4/bin/kibana, per eseguire kibana come server creeremo un file systemd.
# vi /etc/systemd/system/kibana4.service [Unit] Description=Kibana 4 Web Interface After=elasticsearch.service After=logstash.service [Service] ExecStartPre=/bin/rm -rf /var/run/kibana.pid ExecStart=/opt/kibana4/bin/kibana ExecReload=/bin/kill -9 $(cat /var/run/kibana.pid) && /bin/rm -rf /var/run/kibana.pid && /opt/kibana4/bin/kibana ExecStop=/bin/kill -9 $(cat /var/run/kibana.pid) [Install] WantedBy=multi-user.target
Avvia e abilita kibana per l'avvio automatico all'avvio del sistema.
# systemctl start kibana4.service # systemctl enable kibana4.service
Accedi al tuo portale kibana visitando il seguente link
http://your-ip-address:5601/
Otterrai una pagina successiva in cui devi mappare l'indice logstash per usare kibana. Scorri verso il basso su Nome campo ora e seleziona
@timestamp
Una volta selezionato, ti reindirizzerà alla pagina principale di kibana.
Kibana non viene fornito con alcun tipo di accesso protetto da password al portale. Con Nginx, possiamo configurare in modo tale che l'utente debba soddisfare il meccanismo di autenticazione prima di accedere al portale.
Questo è tutto, hai configurato correttamente lo stack ELK per la gestione centralizzata dei registri.