ELK Stack – Elasticsearch, Logstash, Kibana e Beats

Published by Lello on

ELK è l’acronimo di tre progetti open-source:

  • Elasticsearch
    Elastcsearch è un motore di ricerca ed analisi opensource, RESTful (ossia basato su architettura distribuita e quindi flessibile e scalabile) e basato su JSON.
  • Logstash
    Logstash è una pipeline di elaborazione dati, che prende come input dati da sorgenti eterogenee e in maniera concorrente – eventualmente normalizzandoli – e li invia ad Elasticsearch.
  • Kibana
    Kibana è la parte dello stack che permette la manipolazione (intesa come analisi, aggregazione e visualizzazione) dei dati presenti in Elasticsearch sotto forma di dati grezzi o aggregati. Grazie alle sue dashboard (intese come collezioni di visualizzazioni, ricerche e mappe anche in realtime)  è possibile analizzare graficamente i dati tramite diagrammi e grafici

Attorno a questo ecosistema, gravitano anche i “beats”, un sofisticato sistema di shippers (installati come agents sui sistemi da analizzare) che permettono il collect e l’invio dei dati verso lo stack Elastic.

Beats

  • Auditbeat (audit data):
    monitora l’attività e i processi del sistema, comunica direttamente con il framework di audit di Linux (permette di raccogliere gli stessi dati) ed invia gli eventi allo stack Elastic  in tempo reale
  • Filebat (log files):
    è un data shipper che permette di leggere e inoltrare le righe di log in maniera semplice verso lo stack Elastic. Ha come vantaggio che se si dovesse interrompere, ricomincerebbe la trasmissione esattamente dalla posizione in cui era stato interrotto. Filebeat utilizza un protocollo backpressure-sensitive durante l’invio di dati; questo vuol dire che se il ricevente non riesce a ricevere dati, allora l’invio degli stessi si adatterebbe alla nuova situazione, ripristinando il normale invio non appena la situazione si fosse risolta.
  • Functionbeat (cloud data):
    i sistemi distribuiti in cloud permettono di distribuire codice astraendosi dalla necessità di dover gestire software/hardware sottostante. Functionbeat offre la stessa semplicità di monitoraggio dell’infrastruttura cloud: basta distribuirlo come funzione nel framework serverless (come AWS Lambda) per raccogliere i dati relativi ai servizi cloud e portarli nello Stack Elastic per l’analisi.
  • Heartbeat (availability):
    grazie alla raccolta dei dati relativi a HW e SW, sia on-premise che in cloud, è possibile generare dati di uptime e response time
  •  Journalbeat (systemd journals):
    permette il collect e l’invio allo stack Elastic dei dati riguardanti i journal files del systemd.
  • Metricbeat (metrics):
    permette la raccolta di metriche da sistemi e servizi (CPU, memoria, Redis, NGINX, ….)
  • Packetbeat (network traffic):
    permette l’analisi dei pacchetti di rete, e quindi un monitoring in realtime del traffico degli host monitorati
  • Winlogbeat (Windows event logs):
    grazie alla lettura dei dati da qualunque canale dei log eventi di Windows è possibile monitorare in realtime quello che accade in un sistema Windows-based

Ad oggi lo stack Elastic è compatibile con numerose piattaforme e configurazioni software; è possibile consultare la matrice di compatibilità (in continua evoluzione) a questo indirizzo.

Potete trovare la documentazione su come installare lo stack Elatic a questo indirizzo; la documentazione relativa ai beats, la trovate a questo indirizzo.

Di seguito vedremo come utilizzare lo stack ELK per analizzare i dati provenienti da OSSEC e dai suoi agents; di default, vengono già fornite alcune soluzioni nello stack Elastic per elaborare flussi di dati contenuti in Elasticsearch:

 

Elastic stack - solutions

 

ELK – Installazione Elasticsearch →