Lo stack ELK è anche noto come stack elastico, è composto da quattro progetti open source:Elasticsearch, Logstash, Kibana e Beats. Ti aiuta ad avere tutti i tuoi registri archiviati in un unico posto e offre la possibilità di analizzare e visualizzare i dati o i problemi correlando gli eventi in un determinato momento.
Questa guida ti aiuta a installare lo stack ELK su RHEL 8.
Componenti
Elasticsearch – Un motore di ricerca full-text open source. Memorizza i log in entrata da Logstash e offre la possibilità di cercare log/dati in tempo reale
Logstash:esegue l'elaborazione dei dati (raccogli, arricchisci e trasforma) dei log in arrivo inviati da beats (forwarder) e li invia a Elasticsearch
Kibana:fornisce la visualizzazione di dati o registri da Elasticsearch.
Beats:installato sui computer client, raccoglie e invia i log a Logstash tramite il protocollo Beats.
Ambiente
Per avere uno stack ELK completo, avremmo bisogno di due macchine per testare la raccolta dei log.
Nome host | OS | Indirizzo IP | Scopo |
---|---|---|---|
elk.itzgeek.local | RHEL 8 | 192.168.1.10 | Pila ELK |
client.itzgeek.local | CentOS 7 | 192.168.1.20 | Macchina client (Filebeat) |
Prerequisiti
Installa Java
Poiché Elasticsearch è basato su Java, è necessario che sul tuo computer sia installato OpenJDK o Oracle JDK.
LEGGI: Come installare Java su RHEL 8
Qui sto usando OpenJDK 1.8.
yum -y installa java
Verifica la versione Java.
versione java
Risultato:
openjdk versione "1.8.0_212"OpenJDK Runtime Environment (build 1.8.0_212-b04)OpenJDK 64-Bit Server VM (build 25.212-b04, modalità mista)
Configura repository ELK
Importa la chiave di firma elastica.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Configura il repository Elasticsearch sia sul server ELK che sul client.
cat </etc/yum.repos.d/elastic.repo[elasticsearch-7.x]name=repository Elasticsearch per packagesbaseurl 7.x=https://artifacts.elastic.co/packages/oss -7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-mdEOF
Installa e configura Elasticsearch
Elasticsearch è un open source, il motore di ricerca full-text offre una ricerca e analisi distribuite in tempo reale con l'interfaccia web RESTful. Elasticsearch memorizza tutti i dati inviati dal Logstash e visualizzati tramite l'interfaccia web (Kibana) su richiesta degli utenti.
Installa Elasticsearch.
yum install -y elasticsearch-oss
Modifica il file di configurazione di Elasticsearch in
vi /etc/elasticsearch/elasticsearch.yml
Imposta il nome del cluster, il nome del nodo, l'indirizzo IP di ascolto in base al tuo ambiente.
cluster.name:elkstack nome.nodo:elk.itzgeek.local host.rete:192.168.1.10
Se imposti l'indirizzo IP di ascolto, devi definire host seed e nodi master iniziali.
discovery.seed_hosts:["elk.itzgeek.local "]cluster.initial_master_nodes:["elk.itzgeek.local "]
Configura Elasticsearch per l'avvio durante l'avvio del sistema.
systemctl daemon-reloadsystemctl abilita elasticsearchsystemctl avvia elasticsearch
Usa CURL per verificare se Elasticsearch sta rispondendo alle query.
curl -X OTTIENI http://192.168.1.10:9200
Risultato:
{ "name" :"elk.itzgeek.local", "cluster_name" :"elkstack", "cluster_uuid" :"yws_6oYKS965bZ7GTh0e6g", "version" :{ "number" :"7.2.0", "build_flavor" :"oss", "build_type" :"rpm", "build_hash" :"508c38a", "build_date" :"2019-06-20T15:54:18.811730Z", "build_snapshot" :false, "lucene_version" :"8.0 .0", "minimum_wire_compatibility_version" :"6.8.0", "minimum_index_compatibility_version" :"6.0.0-beta1" }, "tagline" :"Sai, per la ricerca"}
Verifica lo stato del cluster eseguendo il comando seguente.
curl -XGET '192.168.1.10:9200/_cluster/health?pretty'
Risultato:lo stato del cluster dovrebbe essere verde.
{ "cluster_name" :"elkstack", "status" :"verde ", "timed_out" :false, "number_of_nodes" :1, "number_of_data_nodes" :1, "active_primary_shards" :0, "active_shards" :0, "relocating_shards" :0, "initializing_shards" :0, "unassigned_shards" :0, "delayed_unassigned_shards" :0, "number_of_pending_tasks" :0, "number_of_in_flight_fetch" :0, "task_max_waiting_in_queue_millis" :0, "active_shards_percent_as_number" :100.0}
Installa e configura Logstash
Logstash è uno strumento open source per la gestione dei log. Raccoglie i log, li analizza e li archivia su Elasticsearch. Sono disponibili oltre 160 plug-in per Logstash che offre la capacità di elaborare i diversi tipi di eventi senza lavoro aggiuntivo.
Installa il pacchetto Logstash.
yum -y install logstash-oss
La configurazione di Logstash può essere trovata in /etc/logstash/conf.d/
.
Il file di configurazione di Logstash è costituito da tre sezioni:input, filtro e output. Tutte e tre le sezioni possono essere trovate in un unico file o in file separati che terminano con .conf.
Ti consiglio di utilizzare un unico file per posizionare le sezioni di input, filtro e output.
vi /etc/logstash/conf.d/beats.conf
Nella sezione di input, configureremo Logstash in modo che sia in ascolto sulla porta 5044 per i log in arrivo dai beat (forwarder) installati sui computer client.
input { battiti { porta => 5044 }}
Nella sezione dei filtri, utilizzeremo Grok per analizzare i log prima di inviarli a Elasticsearch.
Il seguente filtro grok cercherà il syslog log etichettati e tenta di analizzarli per creare un indice strutturato. Questo filtro è abbastanza utile solo per monitorare i messaggi di syslog (/var/log/messages).
filtro { if [type] =="syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm :ss", "MMM gg HH:mm:ss" ] } }}
Per ulteriori modelli di filtro, visita la pagina di grokdebugger.
Nella sezione di output definiremo la posizione in cui verranno archiviati i log, ovviamente un nodo Elasticsearch.
output { elasticsearch { hosts => ["192.168.1.10:9200"] index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" }}
Ora avvia e abilita il servizio Logstash.
systemctl avvia logstashsystemctl abilita logstash
Attendi un minuto per consentire l'avvio di Logstash, quindi esegui il comando seguente per verificare se è in ascolto sulla porta 5044.
netstat -antup | grep -i 5044
Risultato:
tcp6 0 0 :::5044 :::* ASCOLTA 31014/java
Puoi risolvere i problemi di Logstash con l'aiuto dei log.
cat /var/log/logstash/logstash-plain.log
Installa e configura Kibana
Kibana fornisce la visualizzazione dei log archiviati su Elasticsearch. Installa Kibana usando il seguente comando.
yum -y install kibana-oss
Modifica il file kibana.yml.
vi /etc/kibana/kibana.yml
Per impostazione predefinita, Kibana è in ascolto su localhost, il che significa che non puoi accedere a Kibana da macchine esterne. Per consentirlo, modifica la riga sottostante e menziona l'IP del tuo server ELK.
server.host:"0.0.0.0 "
Decommenta la riga seguente e aggiornala con l'URL dell'istanza Elasticsearch.
elasticsearch.hosts:["http://192.168.1.10:9200 "]
Avvia e abilita kibana all'avvio del sistema.
systemctl avvia kibanasystemctl abilita kibana
Controlla se Kibana è in ascolto sulla porta 5601.
netstat -antup | grep -i 5601
Risultato:
tcp 0 0 0.0.0.0:5601 0.0.0.0:* ASCOLTA 3631/node
Firewall
Configura un firewall sul server ELK per ricevere i log dalle macchine client.
5044 – Affinché Logstash riceva i log
5061 – Per accedere al Kibana da macchine esterne.
firewall-cmd --permanent --add-port=5044/tcpfirewall-cmd --permanent --add-port=5601/tcpfirewall-cmd --reload
Successivamente, configureremo i beat per spedire i log al server Logstash.
Installa e configura Filebeat
Sono disponibili quattro client beat
- Packetbeat – Analizza i dati dei pacchetti di rete.
- Filebeat – Informazioni in tempo reale sui dati di registro.
- Topbeat – Ottieni informazioni dettagliate dai dati dell'infrastruttura.
- battito metrico – Invia le metriche a Elasticsearch.
Configura il repository elastico sulla macchina client per ottenere il pacchetto Filebeat.
Installa Filebeat usando il seguente comando.
yum -y install filebeat
Il file di configurazione di Filebeat è in formato YAML, il che significa che il rientro è molto importante. Assicurati di utilizzare lo stesso numero di spazi utilizzati nella guida.
Modifica il file di configurazione di filebeat.
vi /etc/filebeat/filebeat.yml
Commenta la sezione output.elasticsearch: poiché non memorizzeremo i log direttamente su Elasticsearch.
#------------ Output Elasticsearch ------------------ ------------# output.elasticsearch:# Array di host a cui connettersi. # hosts:["localhost:9200"] # Protocollo opzionale e credenziali di autenticazione di base. #protocollo:"https" #username:"elastic" #password:"changeme"
Ora trova la riga output.logstash e modificare le voci come di seguito. Questa sezione definisce filebeat per inviare i log al server Logstash 192.168.1.10 sulla porta 5044 .
In cima a /etc/filebeat/filebeat.yml
, vedresti la sezione dei cercatori. Qui è necessario specificare quali registri devono essere inviati a Logstash.
Ogni cercatore inizia con un – carattere.
Qui configureremo filebeat per inviare i log di sistema /var/log/messages
al server Logstash. Per farlo, modifica il cercatore esistente in percorsi sezione come mostrato di seguito.
Riavvia il servizio.
systemctl riavvia filebeatsystemctl abilita filebeat
Accedi a Kibana
Accedi al Kibana utilizzando il seguente URL.
http://il-tuo-indirizzo-ip:5601/Otterresti la home page di Kibana. Fai clic su Esplora da solo .
Al tuo primo accesso, devi mappare l'indice di filebeat. Vai a Gestione>> Modelli dell'indice>> Crea un modello dell'indice .
Digita quanto segue nel Pattern dell'indice casella.
filebeat-*Dovresti vedere almeno un indice filebeat qualcosa come di seguito. Fai clic su Passaggio successivo .
Seleziona @timestamp e quindi fare clic su Crea modello indice .
@timestamp
Verifica i tuoi modelli di indice e le relative mappature.
Ora, fai clic su Scopri per visualizzare i log ed eseguire query di ricerca.
Conclusione
È tutto. Hai imparato con successo come installare ELK Stack su RHEL 8. Condividi il tuo feedback nella sezione commenti.