Graylog: Scegliere i tipi di input

Come scegliere il tipo di input Graylog più adatto

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione Graylog cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:

  • Server email SMTP illimitato e dedicato incluso.
  • Aggiornamenti senza sforzo con un solo clic.
  • Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://logs.tua-azienda.com).
  • Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.

Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione Graylog cloud hosting di Stackhero!

Graylog offre una varietà di input. Questi input consentono di inviare log al server Graylog oppure di permettere a Graylog di recuperare log da un'altra fonte.

Nella quasi totalità dei casi, desidererete inviare dati da un'applicazione o da un dispositivo al server Graylog. Non tratteremo i casi avanzati in cui si desidera che Graylog recuperi i log da altre fonti. Tuttavia, se è questa la vostra esigenza, sappiate che è molto semplice da configurare.

Per scegliere il tipo di input più adatto, è necessario innanzitutto decidere il formato di log che si desidera inviare a Graylog. Raccomandiamo di utilizzare il formato GELF, come descritto di seguito.

Successivamente, sarà necessario selezionare il protocollo: UDP o TCP.

La prima decisione riguarda la scelta del formato dei messaggi di log. Esistono tre opzioni principali: RAW/Plaintext, Syslog oppure GELF.

Questo è il formato più semplice. Funziona con qualsiasi sistema perché invia un messaggio in testo semplice. È molto facile da utilizzare ed è perfetto per test iniziali, come l'invio di un messaggio tramite l'utilità netcat.

Per provarlo, potete creare un input "Raw/Plaintext UDP" e poi inviare un log di test utilizzando una delle seguenti linee di comando:

  1. Da macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Da Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

È molto semplice, vero? Tuttavia, trattandosi di un formato basilare, incontrerete presto dei limiti. Per questo motivo, sconsigliamo di utilizzarlo oltre semplici test.

Si tratta di un formato ben noto, ampiamente utilizzato per memorizzare e inviare log negli ambienti server. È presente su Linux, Windows, *BSD e altri sistemi operativi.

Se utilizzate Syslog, Rsyslog o un altro servizio compatibile e desiderate inviare log da un server a Graylog, l'input syslog rappresenta l'opzione più semplice.

Tuttavia, poiché GELF è più potente, se avete la possibilità di inviare messaggi in formato GELF, vi consigliamo di farlo, come spiegato di seguito.

Si noti che il formato syslog è limitato a 1024 caratteri.

GELF significa "Graylog Extended Log Format". Questo formato è stato creato da Graylog e oggi è ampiamente adottato da molti prodotti, diventando uno standard di fatto.

Il formato GELF è potente perché consente di inviare log in modo strutturato. Il logging strutturato permette di trasmettere più campi e valori, invece di un semplice messaggio di testo non strutturato. Questo facilita l'analisi e la ricerca delle informazioni da parte di Graylog.

Ad esempio, se desiderate inviare un log che contiene un indirizzo IP e un tipo di richiesta, potete inviare un messaggio con due campi denominati ip e request_type. Dal lato Graylog, potrete poi effettuare ricerche direttamente su questi campi, ad esempio cercando tutte le richieste con la query: request_type: POST.

GELF si basa su JSON e deve includere almeno i campi version, host e short_message. Potete poi aggiungere altri campi, che devono essere preceduti da un underscore (_).

Ad esempio, un messaggio semplice con un campo aggiuntivo chiamato device_id sarà così:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

Potrete quindi cercare tutti i messaggi provenienti dal dispositivo "abcd" su Graylog utilizzando la query: device_id: abcd.

Per ulteriori dettagli su GELF, potete consultare la specifica ufficiale qui: https://docs.graylog.org/en/4.0/pages/gelf.html.

Se desiderate inviare log da server o applicazioni, potete utilizzare una delle numerose librerie disponibili che creano e inviano automaticamente i vostri messaggi. Sono disponibili esempi per Node.js, .NET e Python.

Una volta selezionato il formato più adatto (speriamo abbiate scelto GELF!), dovrete scegliere il protocollo di comunicazione tra TCP e UDP.

Il protocollo UDP è molto semplice. L'applicazione invia il messaggio al server senza richiedere una conferma di ricezione. Non c'è dialogo tra client e server, il che significa che il server non conferma di aver ricevuto il messaggio.

Il vantaggio di questo approccio è che, se il vostro server Graylog è lento o non disponibile, ciò non influirà sulle prestazioni della vostra applicazione. Lo svantaggio è che non potete essere certi che ogni log inviato dalla vostra applicazione arrivi effettivamente al server. Inoltre, la cifratura non è disponibile con UDP.

  1. Non impatta le prestazioni dell'applicazione se Graylog è lento o non disponibile.
  1. Alcuni messaggi potrebbero andare persi.
  2. La cifratura non è disponibile.
  3. La dimensione dei messaggi è limitata a 8192 byte.

Il protocollo TCP, a differenza di UDP, prevede uno scambio di informazioni tra l'applicazione e Graylog. Questo significa che ricevete una conferma che il messaggio è stato ricevuto da Graylog.

Il vantaggio di TCP è che potete reinviare un messaggio se non viene ricevuto da Graylog (ad esempio, quando il server è non disponibile). Lo svantaggio è che, se Graylog è lento o non risponde, l'applicazione deve attendere una risposta o un timeout, con il rischio di rallentamenti.

Un ulteriore vantaggio è la possibilità di cifrare le comunicazioni tramite TLS (noto anche come SSL).

  • Garantisce che il messaggio sia stato ricevuto.
  • È disponibile la cifratura (TLS).
  • Nessuna limitazione sulla dimensione dei messaggi
  • Può rallentare il mittente se Graylog risponde lentamente o è non disponibile.

Speriamo che questa guida vi abbia fornito tutte le informazioni necessarie per scegliere il formato e il protocollo migliori per inviare i vostri log a Graylog.

Ricordate che potete eseguire più input contemporaneamente utilizzando porte diverse per ciascuno. Ad esempio, potete avere un input "syslog UDP" sulla porta 514 insieme a un input "GELF TCP" sulla porta 12201.