GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare lo stack elastico su Ubuntu 16.04

Ricerca elastica è un motore di ricerca open source basato su Lucene, sviluppato in java. Fornisce un motore di ricerca full-text distribuito e multi-tenant con un'interfaccia Web HTTP Dashboard (Kibana) e uno schema di documenti JSON. Elasticsearch è un motore di ricerca scalabile che può essere utilizzato per cercare tutti i tipi di documenti, inclusi i file di registro. Elasticsearch è il cuore di 'Elastic Stack' o ELK Stack.

Archiviazione è uno strumento open source per la gestione di eventi e registri di sistema. Fornisce pipeline in tempo reale per raccogliere dati. Logstash raccoglierà il registro o i dati, convertirà tutti i dati in documenti JSON e li archivierà in Elasticsearch.

Kibana è un'interfaccia di visualizzazione dei dati per Elasticsearch. Kibana fornisce una bella dashboard (interfacce web), che ti consente di gestire e visualizzare tutti i dati da Elasticsearch da solo. Non è solo bello, ma anche potente.

In questo tutorial, ti mostrerò come installare e configurare Elastic Stack su un singolo server Ubuntu 16.04 per il monitoraggio dei log del server e come installare 'Elastic Beats' su PC client con sistema operativo Ubuntu 16.04 e CentOS 7.

Prerequisito

  • Server Ubuntu 16.04 a 64 bit con 4 GB di RAM, hostname - elk-master
  • Client Ubuntu 16.04 a 64 bit con 1 GB di RAM, nome host - elk-client1
  • CentOS 7 a 64 bit con 1 GB di RAM, nome host - elk-client2

Passaggio 1:installa Java

Java è necessario per la distribuzione dello stack elastico. Elasticsearch richiede Java 8. Si consiglia di utilizzare Oracle JDK 1.8. Installeremo Java 8 da un repository PPA.

Installa il nuovo pacchetto 'python-software-properties' così possiamo aggiungere facilmente un nuovo repository con un comando apt.

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https

Aggiungi il nuovo repository PPA Java 8 con il comando 'add-apt-repository', quindi aggiorna il repository.

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update

Installa Java 8 dal repository webpub8 PPA.

sudo apt-get install -y oracle-java8-installer

Al termine dell'installazione, assicurati che Java sia installato correttamente sul sistema controllando la versione di Java.

java -version

Fase 2 - Installa e configura Elasticsearch

In questo passaggio installeremo e configureremo Elasticsearch. Installa Elasticsearch dal repository elastico e configuralo per l'esecuzione sull'IP localhost.

Prima di installare Elasticsearch, aggiungi la chiave del repository elastico al server.

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

Aggiungi il repository elastico 5.x alla directory 'sources.list.d'.

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

Aggiorna il repository e installa Elasticsearch 5.1 con il comando apt di seguito.

sudo apt-get update
sudo apt-get install -y elasticsearch

Elasticsearch è installato. Ora vai nella directory di configurazione e modifica il file di configurazione elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Abilita il blocco della memoria per Elasticsearch rimuovendo il commento alla riga 43. Lo facciamo per disabilitare lo scambio di memoria per Elasticsearch per evitare di sovraccaricare il server.

bootstrap.memory_lock: true

Nel blocco "Rete", decommenta le righe network.host e http.port.

network.host: localhost
http.port: 9200

Salva il file ed esci da vim.

Ora modifica il file del servizio elasticsearch per la configurazione del blocco della memoria mlockall.

vim /usr/lib/systemd/system/elasticsearch.service

Decommenta la riga LimitMEMLOCK.

LimitMEMLOCK=infinity

Salva il file ed esci.

Modifica la configurazione predefinita per Elasticsearch nella directory /etc/default.

vim /etc/default/elasticsearch

Decommenta la riga 60 e assicurati che il valore sia 'illimitato'.

MAX_LOCKED_MEMORY=unlimited

Salva ed esci.

La configurazione di Elasticsearch è terminata. Elasticsearch verrà eseguito con l'indirizzo IP localhost con la porta 9200 e abbiamo disabilitato la memoria di scambio abilitando mlockall sul server Ubuntu.

Ricarica il file del servizio Elasticsearch e abilitalo all'esecuzione all'avvio, quindi avvia il servizio.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Attendi un secondo per l'esecuzione di Elasticsearch, quindi controlla la porta aperta sul server, assicurati che lo "stato" per la porta 9200 sia "LISTEN".

netstat -plntu

Quindi controlla il blocco della memoria per assicurarti che mlockall sia abilitato. Verifica anche che Elasticsearch sia in esecuzione con i comandi seguenti.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Vedrai i risultati qui sotto.

Fase 3:installa e configura Kibana con Nginx

In questo passaggio, installeremo e configureremo Kibana dietro un server web Nginx. Kibana ascolterà solo l'indirizzo IP localhost e Nginx fungerà da proxy inverso per l'applicazione Kibana.

Installa Kibana con questo comando apt:

sudo apt-get install -y kibana

Ora modifica il file di configurazione kibana.yml.

vim /etc/kibana/kibana.yml

Decommenta le righe server.port, server.hos e elasticsearch.url.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Salva il file ed esci da vim.

Aggiungi Kibana da eseguire all'avvio e avvialo.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana verrà eseguito sulla porta 5601 come applicazione nodo.

netstat -plntu

L'installazione di Kibana è terminata, ora dobbiamo installare Nginx e configurarlo come proxy inverso per poter accedere a Kibana dall'indirizzo IP pubblico.

Quindi, installa i pacchetti Nginx e apache2-utils.

sudo apt-get install -y nginx apache2-utils

Apache2-utils è un pacchetto che contiene strumenti per il server web che funzionano anche con Nginx, useremo l'autenticazione di base htpasswd per Kibana.

Nginx è stato installato. Ora dobbiamo creare un nuovo file di configurazione dell'host virtuale nella directory dei siti disponibili di Nginx. Crea un nuovo file 'kibana' con vim.

cd /etc/nginx/
vim sites-available/kibana

Incolla la configurazione di seguito.

server {
    listen 80;

    server_name elk-stack.co;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    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;
    }
}

Salva il file ed esci da vim

Crea un nuovo file di autenticazione di base con il comando htpasswd.

sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD

Attiva l'host virtuale kibana creando un collegamento simbolico dal file kibana in "siti disponibili" alla directory "siti abilitati".

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/

Testa la configurazione di nginx e assicurati che non ci siano errori, quindi aggiungi nginx da eseguire all'avvio e riavvia nginx.

nginx -t
systemctl enable nginx
systemctl restart nginx

Fase 4 - Installa e configura Logstash

In questo passaggio, installeremo e configureremo Logsatash per centralizzare i log del server dalle origini client con filebeat, quindi filtreremo e trasformeremo tutti i dati (Syslog) e li trasporteremo nella scorta (Elasticsearch).

Installa Logstash 5 con il comando apt di seguito.

sudo apt-get install -y logstash

Modifica il file hosts con vim.

vim /etc/hosts

Aggiungi l'indirizzo IP del server e il nome host.

10.0.15.10    elk-master

Salva il file hosts ed esci dall'editor.

Ora genera un nuovo file di certificato SSL con OpenSSL in modo che le origini client possano identificare il server elastico.

cd /etc/logstash/
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt

Modifica "/CN ' al nome host del server elastico.

I file del certificato verranno creati nella directory '/etc/logstash/'.

Successivamente, creeremo i file di configurazione per logstash. Creeremo un file di configurazione 'filebeat-input.conf' come file di input da filebeat, 'syslog-filter.conf' per l'elaborazione syslog, e poi un file 'output-elasticsearch.conf' per definire l'output di Elasticsearch.

Vai alla directory di configurazione di logstash e crea i nuovi file di configurazione nella directory 'conf.d'.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Inserisci la configurazione, incolla la configurazione di seguito.

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/logstash.crt"
    ssl_key => "/etc/logstash/logstash.key"
  }
}

Salva ed esci.

Crea il file syslog-filter.conf.

vim conf.d/syslog-filter.conf

Incolla la configurazione qui sotto.

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" ]
    }
  }
}

Usiamo un plugin di filtro chiamato 'grok ' per analizzare i file syslog.

Salva ed esci.

Crea il file di configurazione dell'output 'output-elasticsearch.conf'.

vim conf.d/output-elasticsearch.conf

Incolla la configurazione qui sotto.

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Salva ed esci.

Al termine, aggiungi logstash per l'avvio all'avvio e avvia il servizio.

sudo systemctl enable logstash
sudo systemctl start logstash

Passaggio 5 - Installa e configura Filebeat su un client Ubuntu

Collegati al server come root con un account ssh.

ssh [email protected]

Copia il file del certificato sul client con il comando scp.

scp [email protected]:/etc/logstash/logstash.crt .

Modifica il file hosts e aggiungi l'indirizzo IP di elk-master.

vim /etc/hosts

Aggiungi la configurazione di seguito alla fine del file.

10.0.15.10    elk-master

Salva ed esci.

Ora dobbiamo aggiungere la chiave elastica al server elk-client1.

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

Utilizzeremo il repository elastico con il trasporto di download https, quindi dobbiamo installare il pacchetto 'apt-transport-https' sul server.

sudo apt-get install -y apt-transport-https

Aggiungi il repository elastico e aggiorna tutti i repository Ubuntu.

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update

Ora installa 'filebeat' con il comando apt.

sudo apt-get install -y filebeat

Quindi, vai alla directory di configurazione di filebeat e modifica il file 'filebeat.yml' con vim.

cd /etc/filebeat/
vim filebeat.yml

Aggiungi nuovi file di registro nella configurazione dei percorsi.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Imposta il tipo di documento su 'syslog'.

  document-type: syslog

Disabilita l'output di elasticsearch aggiungendo commenti alle righe.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Abilita l'output logstash, decommenta la configurazione e modifica il valore come di seguito.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Salva ed esci.

Sposta il file del certificato nella directory filebeat.

mv ~/logstash.crt /etc/filebeat/

Avvia filebeat e aggiungilo per l'esecuzione all'avvio.

sudo systemctl start filebeat
sudo systemctl enable filebeat

Controlla lo stato del servizio.

sudo systemctl status filebeat

Passaggio 6:installazione e configurazione di Filebeat su un client CentOS

I Beats sono data shipper, agenti leggeri che possono essere installati sui nodi client per inviare enormi quantità di dati dalla macchina client al server Logstash o Elasticsearch. Sono disponibili 4 beat, "Filebeat" per "File di registro", "Metricbeat" per "Metriche", "Packetbeat" per "Dati di rete" e "Winlogbeat" per il client Windows "Registro eventi".

In questo tutorial, ti mostrerò come installare e configurare "Filebeat" per inviare i dati di registro al server logstash tramite una connessione SSL sicura.

Copia il file del certificato dal server elastico al server client1. Accedi al server client1.

ssh [email protected]

Copia il file del certificato con il comando scp.

scp [email protected]:/etc/logstash/logstash.crt .
TYPE elk-server password

Modifica il file hosts e aggiungi l'indirizzo del server elk-master.

vim /etc/hosts

Aggiungi l'indirizzo del server elk-master.

10.0.15.10    elk-master

Salva ed esci.

Quindi, importa la chiave elastica nel server elk-client2.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Aggiungi un repository elastico al server.

cd /etc/yum.repos.d/
vim elastic.repo

Incolla la configurazione qui sotto.

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Salva ed esci.

Installa filebeat con questo comando yum.

sudo yum -y install filebeat

Filebeat è stato installato, ora vai nella directory di configurazione e modifica il file 'filebeat.yml'.

cd /etc/filebeat/
vim filebeat.yml

Nella riga 21 della sezione dei percorsi, aggiungi alcuni nuovi file di registro, aggiungeremo qui due file:'/var/log/secure' per l'attività ssh e '/var/log/messages' per il registro del server.

  paths:
    - /var/log/secure
    - /var/log/messages

Aggiungi una nuova configurazione alla riga 26 per definire il tipo di file in 'syslog'.

  document-type: syslog

Per impostazione predefinita, filebeat utilizza elasticsearch come output. In questo tutorial, lo cambieremo in logshtash. Disabilita l'output di elasticsearch aggiungendo commenti alle righe 83 e 85.

Disabilita l'output di elasticsearch.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Ora aggiungi la nuova configurazione di output di logstash, decommenta la configurazione di output di logstash e cambia tutti i valori in quelli mostrati nella configurazione di seguito.

output.logstash:
  # The Logstash hosts
  hosts: ["elk-master:5443"]
  bulk_max_size: 2048
  ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Salva ed esci.

Aggiungi filebeat per iniziare all'avvio e avvialo.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Ora puoi controllare e guardare il file di registro di filebeat per assicurarti che funzioni correttamente.

tail -f /var/log/filebeat/filebeat

Fase 8 - Test

Apri il tuo browser web e visita il dominio dello stack elastico che hai configurato nella configurazione nginx, il mio è "elk-stack.co", digita il nome utente amministratore con la tua password e premi Invio per accedere alla dashboard di Kibana.

Crea un nuovo indice predefinito 'filebeat-* ' e fai clic su 'Crea '.

L'indice predefinito è stato creato. Se hai più battute sullo stack elastico, puoi configurare una battuta predefinita con un semplice clic sulla "stella pulsante '.

Vai a 'Scopri ' e vedrai tutti i file di registro dei server elk-client1 ed elk-client2.

Un esempio di output JSON dal registro del server elk-client1 per un accesso ssh non valido.

E c'è molto di più che puoi fare con il dashboard di Kibana, provalo!

Elastic Stack è stato installato su un server Ubuntu 16.04, filebeat è stato installato su server client Ubuntu e CentOS.


Ubuntu
  1. Come installare Elasticsearch su Ubuntu 18.04

  2. Come installare Graylog2 su Ubuntu 14.04

  3. Come installare Graylog2 su Ubuntu 15.04 / 14.10

  4. Come installare Elasticsearch su Ubuntu 20.04

  5. Come installare e configurare Elasticsearch su Ubuntu 20.04

Come installare Graylog 3.0 su Ubuntu 18.04 / Ubuntu 16.04

Come installare Elasticsearch, Logstash e Kibana (ELK Stack) su Ubuntu 18.04 / Ubuntu 16.04

Come installare ELK Stack su Ubuntu 18.04

Come installare qt su Ubuntu 20.04

Come installare Graylog Server su Ubuntu 21

Come installare Elasticsearch Logstash Kibana (stack elastico) su Ubuntu 18.04