GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare ELK Stack su Debian 8

Introduzione

Lo stack ELK è un popolare set di strumenti composto da Elasticsearch, Logstash e Kibana. Questi tre strumenti formano uno stack software che può funzionare come un potente strumento centralizzato di analisi dei dati di rete e visualizzazione dei log del server. Lo stack ELK è inoltre progettato per essere molto in grado di scalare in orizzontale su più server per il bilanciamento del carico. In questa procedura installeremo tutti i componenti dello stack ELK su un singolo server.

Prerequisiti

  • Un server che esegue Debian 8. Se non disponi già di un server, Atlantic.net offre server di hosting VPS affidabili che puoi avviare in meno di 30 secondi.

Sono supportati altri sistemi operativi, ma questo articolo si concentra su Debian 8.

Installazione di ELK Stack su Debian 8

Sudo

Dal punto di vista della sicurezza è generalmente sconsigliato lavorare come utente root. Usando sudo consente di eseguire comandi che richiedono privilegi di root da un utente non root. Per impostazione predefinita, Debian non include sudo pacchetto, quindi lo installeremo.

apt-get install sudo

Dovrai quindi aggiungere l'account utente standard a sudo gruppo che si desidera essere in grado di eseguire i comandi dei privilegi di root. Sostituisci <username> con il nome utente dell'account.

adduser <username> sudo

Esci e accedi nuovamente con il tuo nuovo utente e possiamo continuare.

La prima volta che usi sudo in una sessione ti chiederà la password dell'utente corrente.

Installazione di Elasticsearch

Iniziamo il processo installando Java sul nostro server.

Elasticsearch, il componente di ricerca e indicizzazione dei dati dello stack ELK, richiede l'esecuzione di Java. Installeremo la versione OpenJDK 7, tuttavia puoi installare qualsiasi JRE elencato nella matrice di supporto per Elasticsearch.

Per prima cosa, dovremo aggiornare gli elenchi dei pacchetti sul nostro server.

sudo apt-get update

Ora possiamo installare JRE.

sudo apt-get install openjdk-7-jre

Questa installazione potrebbe richiedere del tempo poiché ci sono molte dipendenze che APT può risolvere.

Una volta terminato, possiamo installare Elasticsearch. La versione di Elasticsearch nei repository Debian ufficiali è molto vecchia e non è supportata dalle versioni più recenti di Kibana, quindi aggiungeremo il repository elastic.co al nostro server e installeremo Elasticsearch da lì.

Scarica e installa la chiave di firma del repository per elastic.co.

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Successivamente possiamo aggiungere il repository a /etc/apt/sources.list.d/ directory.

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/Elasticsearch-2.x.list

A questo punto è necessario aggiornare nuovamente gli elenchi dei pacchetti, che aggiungerà la versione più recente di Elasticsearch dal repository elastic.co agli elenchi dei pacchetti.

sudo apt-get update

Ora possiamo installare Elasticsearch.

sudo apt-get install elasticsearch

Dovremo anche configurare il servizio Elasticsearch per l'avvio all'avvio del sistema.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service

Questo è tutto! Ora puoi avviare il servizio Elasticsearch.

sudo systemctl start elasticsearch.service

E assicurati che sia attivo.

systemctl status elasticsearch.service

Configurazione Elasticsearch

Nel nostro caso non è necessario, ma se avrai Kibana ed Elasticsearch in esecuzione su server diversi (come fanno molte distribuzioni ELK), dovrai modificare il file di configurazione di Elasticsearch, /etc/elasticsearch/elasticsearch.yml sul server Elasticsearch e aggiungi le seguenti due righe ovunque nel file:

http.cors.allow-origin: "/.*/"
http.cors.enabled: true

Allo stesso file, aggiungi una riga per denominare il cluster Elasticsearch. Il nome predefinito è elasticsearch.

cluster.name: elasticcluster

Modifica del file di configurazione di Elasticsearch

Assicurati di non aggiungere righe o spazi vuoti al file di configurazione, poiché i file YAML sono sensibili agli spazi bianchi.

E poi riavvia il demone Elasticsearch.

sudo systemctl restart elasticsearch.service

Ancora una volta, assicurati che il demone funzioni correttamente.

systemctl status elasticsearch.service

Stato del servizio Elasticsearch

Installazione di Logstash

Possiamo installare Logstash, il componente di log shipping e trasformazione dello stack ELK, in modo molto simile a Elasticsearch.

Se hai seguito questa procedura, avrai già aggiunto la chiave di firma del pacchetto Elastic.co. Quindi possiamo saltare quella parte e aggiungere immediatamente il repository logstash Elastic.co al nostro /etc/apt/sources.list.d/ .

echo "deb http://packages.elastic.co/logstash/2.0/debian stable main" | sudo tee -a /etc/apt/sources.list

E, naturalmente, aggiorna gli elenchi dei pacchetti.

sudo apt-get update

Successivamente, possiamo installare Logstash.

sudo apt-get install logstash

Come con Elasticsearch, dovremo abilitare Logstash all'avvio del sistema.

sudo systemctl daemon-reload
sudo systemctl enable logstash.service

Ora possiamo avviare Logstash.

sudo systemctl start logstash.service

E assicurati che sia in esecuzione.

systemctl status logstash.service

Ora possiamo passare alla configurazione!

Configurazione logstash

Logstash utilizza i file di configurazione che si trovano in /etc/logstash/conf.d . Dovremo creare tre nuovi file in quella directory poiché non esiste una configurazione predefinita.

cd /etc/logstash/conf.d
sudo touch 01-input.conf 10-syslog.conf 30-lumberjack-output.conf

Useremo il primo file, 01-input.conf , per specificare come Lumberjack ascolterà i log in arrivo.

Apri il file per la modifica (sostituendo l'editor di testo che preferisci, se hai una preferenza).

sudo editor 01-input.conf

Aggiungi il seguente blocco:

input {
  lumberjack {
    port => 5000
    type => "logs"
    ssl_certificate => "/etc/ssl/certs/logstash-forwarder.crt"
    ssl_key => "/etc/ssl/logstash-forwarder.key"
  }
}

Salva e chiudi il file.

Non preoccuparti ancora dei certificati SSL. Li genereremo a breve.

Successivamente, dobbiamo aggiungere una configurazione di filtro a 10-syslog.conf . Un filtro può confrontare i messaggi in arrivo (log) e applicare trasformazioni ai dati prima di indicizzarli in Elasticsearch.

Apri il file nel tuo editor,

sudo editor 10-syslog.conf

e aggiungi quanto segue:

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}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Questo filtro intercetta tutti i log in entrata che corrispondono al formato syslog standard, quindi aggiunge un timestamp e un campo hostname a ogni messaggio. Estrae anche alcune informazioni dal messaggio di registro come il PID syslog, quale programma ha generato il messaggio e il messaggio syslog stesso.

Sarà necessario scrivere un nuovo filtro per ogni nuovo tipo di registro che desideri utilizzare con Logstash/Elasticsearch.

Infine, possiamo andare al nostro file di configurazione di output, 30-lumberjack-output.conf . Questo file conterrà un semplice blocco di output che specifica che i messaggi indicizzati devono essere inviati a Elasticsearch e il nome del cluster.

Apri il file nel tuo editor.

sudo editor 30-lumberjack-output.conf

Aggiungi il seguente blocco:

output {
  elasticsearch {
    hosts => ["localhost"]
  }
}

Ora arriveremo alla generazione dei certificati SSL per il tuo stack ELK.

Genera certificati SSL

Il protocollo Lumberjack utilizzato da Logstash per comunicare i messaggi di registro è progettato per essere protetto da un capo all'altro e SSL è un requisito fondamentale. Non preoccuparti, però, è abbastanza semplice generare i certificati.

Perché stiamo usando un indirizzo IP piuttosto che un nome host per i servers direttiva in /etc/logstash-forwarder.conf , dovremo aggiungere un campo IP SAN al certificato SSL generato. Includine uno aggiungendo un subjectAltName riga al file di configurazione di OpenSSL, /etc/ssl/openssl.cnf .

sudo editor /etc/ssl/openssl.cnf

Individua la riga contenente [ v3_ca ] e inserire la riga seguente sotto di essa. (Sostituisci il 127.0.0.1 con l'indirizzo IP del tuo server Logstash, se Logstash è installato su un server separato.)

[ v3_ca ]
subjectAltName = IP:127.0.0.1

Salva e chiudi il file. Ora possiamo generare il certificato SSL.

sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout /etc/ssl/logstash-forwarder.key -out /etc/ssl/certs/logstash-forwarder.crt

sudo chown logstash:logstash /etc/ssl/logstash-forwarder.key
sudo chmod 600 /etc/ssl/logstash-forwarder.key

Ora riavvia logstash e controlla se è stato avviato correttamente.

sudo systemctl restart logstash.service
systemctl status logstash.service

Stato del servizio Logstash

Anche se è stato avviato, controlla i file di registro in /var/log/logstash/logstash.* e assicurati che non ci siano errori durante l'avvio.

Installazione di Logstash-Forwarder

Ora che abbiamo installato il componente lato server di Logstash, dobbiamo installare il client Logstash-Forwarder su ogni server di cui vuoi monitorare i log.

In questo tutorial, installeremo Logstash-Forwarder sullo stesso server che esegue il resto di ELK, ma normalmente Logstash-Forwarder verrebbe eseguito su altri server.

Per prima cosa, dovremo aggiungere ancora una volta un nuovo repository al sistema.

echo "deb http://packages.elasticsearch.org/logstashforwarder/debian stable main" | sudo tee -a /etc/apt/sources.list.d/logstash-forwarder.list

E, ancora, aggiorna gli elenchi dei pacchetti.

sudo apt-get update

Ora possiamo installare Logstash-Forwarder.

sudo apt-get install logstash-forwarder

Al termine dell'installazione, apri il file di configurazione per Logstash-Forwarder.

sudo editor /etc/logstash-forwarder.conf

Cancella la configurazione predefinita esistente e aggiungi il seguente blocco:

{
  "network": {
    "servers": [ "127.0.0.1:5000" ],
    "timeout": 15,
    "ssl ca": "/etc/ssl/certs/logstash-forwarder.crt"
  },
  "files": [
    {
      "paths": [ "/var/log/syslog", "/var/log/auth.log" ],
      "fields": { "type": "syslog" }
    }
  ]
}

Questa configurazione verificherà /var/log/syslog e /var/log/auth.log per le nuove voci e quindi taggherà ogni messaggio in uscita da quei file con syslog nel type campo.

Se stai installando Logstash-Forwarder su un host separato, assicurati di cambiare i servers direttiva per includere l'indirizzo IP del server remoto. Inoltre, assicurati di copiare il file del certificato SSL nella posizione corretta sul server remoto.

Ora abiliteremo Logstash-Forwarder all'avvio.

sudo systemctl daemon-reload
sudo systemctl enable logstash-forwarder.service

Infine, possiamo riavviare il servizio Logstash-Forwarder per applicare le modifiche alla configurazione.

sudo systemctl restart logstash-forwarder.service

Se il demone si avvia correttamente, possiamo procedere alla configurazione di Kibana e all'avvio e all'esecuzione dell'intero stack ELK.

systemctl status logstash-forwarder.service

Stato del servizio Logstash-forwarder

Per verificare se logstash-forwarder funziona, controlla il file di registro per gli eventi in fase di elaborazione.

tail -f /var/log/logstash-forwarder/*

File di registro Logstash-Forwarder

Installazione di Kibana

Sfortunatamente, al momento della stesura di questo articolo, elastic.co non offre versioni pacchettizzate di Kibana, lasciando all'utente la gestione del demone. Dovremo creare un file di servizio systemd e installare manualmente Kibana.

Vai a /opt directory e scarica Kibana.

cd /opt
wget -qO - https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz | sudo tar -xzf -

Dovremo creare un nuovo utente per l'esecuzione di Kibana e impostare la proprietà della directory del programma.

sudo useradd kibana
sudo chown kibana:kibana kibana-4.3.0-linux-x64/ -R

Seguendo questo passaggio, possiamo creare il file del servizio systemd.

sudo touch /usr/lib/systemd/system/kibana.service

Aggiungi la definizione del servizio al file.

sudo editor /usr/lib/systemd/system/kibana.service

[Unit]
Description=kibana
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
User=kibana
Group=kibana
ExecStart=/opt/kibana-4.3.0-linux-x64/bin/kibana
Restart=always
StandardOutput=null
# Connects standard error to journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Ora dobbiamo ricaricare tutte le unità di sistema e quindi abilitare il servizio Kibana.

sudo systemctl daemon-reload
sudo systemctl enable kibana.service

Ora possiamo avviare Kibana.

sudo systemctl start kibana.service

Ricontrolla per assicurarti che sia in esecuzione e siamo fuori!

systemctl status kibana.service

Stato del servizio Kibana

Configurazione Kibana

Il file di configurazione principale di Kibana si troverà in /opt/kibana-4.3.0-linux-x64/config/kibana.yml . Le opzioni predefinite dovrebbero essere sufficienti per questa procedura, ma puoi modificare le impostazioni secondo necessità per la tua configurazione.

Passa all'indirizzo IP del tuo server in un browser web, alla porta 5601, per accedere alla pagina di inizializzazione di Kibana. Kibana ti chiederà di configurare un modello di indice; seleziona received_at per il nome del campo dell'ora e premere Create .

Crea un modello di indice in Kibana

Questo è tutto! I componenti dello stack ELK, Elasticsearch, Logstash e Kibana, sono installati e operativi.

Dove andare dopo

Grazie per aver seguito questo tutorial sull'installazione dello stack ELK su Debian 8. Ricontrolla con noi per articoli correlati e per provare uno dei nostri server VPS incredibilmente veloci.


Linux
  1. Come installare Elasticsearch su Debian 9

  2. Come installare Elasticsearch su Debian 10

  3. Come installare ELK Stack su RHEL 8

  4. Come installare ELK Stack su Ubuntu 16.04

  5. Come installare MongoDB su Debian 11

Come installare lo stack LEMP su Debian 11

Come installare lo stack LAMP su Debian 11

Come installare Vai su Debian 11

Come installare ELK Stack su CentOS 7

Come installare ELK Stack su CentOS 8

Come installare ELK Stack su Ubuntu 20.04