Graylog: Scegliere i tipi di input

Come scegliere il giusto tipo di input Graylog

👋 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 o permettono a Graylog di recuperare log da un'altra fonte.

In quasi tutti i casi, vorrete inviare dati da un'applicazione o un dispositivo al server Graylog. Non copriremo i casi avanzati in cui si desidera che Graylog recuperi log da altrove. Tuttavia, se desiderate farlo, state tranquilli, è molto semplice.

Per scegliere il miglior tipo di input, è necessario prima decidere il formato del log che si desidera inviare a Graylog. Consigliamo di utilizzare il formato GELF, come dettagliato di seguito.

Successivamente, dovrete selezionare il protocollo: UDP o TCP.

La prima decisione è scegliere il formato dei vostri messaggi di log. Ci sono tre opzioni principali: RAW/Plaintext, Syslog o GELF.

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

Per testarlo, 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 facile, vero? Tuttavia, poiché è un formato di base, incontrerete presto delle limitazioni. Pertanto, sconsigliamo di usarlo per più di semplici test.

Questo è un formato ben noto, ampiamente utilizzato per memorizzare e inviare log in ambienti server. Potete trovarlo su Linux, Windows e *BSD, tra altri sistemi operativi.

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

Tuttavia, poiché GELF è più potente, se potete inviare messaggi formattati in GELF, vi consigliamo di farlo, come spiegato di seguito.

Notate che il formato syslog è limitato a 1024 caratteri.

GELF sta per "Graylog Extended Log Format". Questo formato è stato creato da Graylog ed è diventato ampiamente adottato da molti prodotti, stabilendosi come uno standard.

Il formato GELF è potente perché invia i log in modo strutturato. La registrazione strutturata consente di trasmettere più campi e valori invece di un singolo messaggio di testo non strutturato. Questo rende più facile per Graylog analizzare e recuperare le informazioni.

Ad esempio, se volete 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. Sul lato Graylog, sarete in grado di cercare direttamente su questi campi, come cercare tutte le richieste con la query: request_type: POST.

GELF è basato su JSON e deve includere almeno i campi version, host e short_message. Potete quindi aggiungere campi aggiuntivi, che devono essere preceduti da un underscore (_).

Ad esempio, un messaggio semplice con un campo aggiuntivo denominato device_id appare così:

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

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

Per ulteriori dettagli su GELF, potete fare riferimento alla 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 molte librerie disponibili che creano e inviano automaticamente i vostri messaggi. Sono disponibili esempi per Node.js, .NET e Python.

Una volta selezionato il formato appropriato (speriamo abbiate scelto GELF!), dovete scegliere un protocollo di comunicazione tra TCP e UDP.

Il protocollo UDP è piuttosto semplice. La vostra applicazione invia il messaggio al server senza richiedere una conferma di ricezione. Non c'è dialogo tra il client e il 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 inattivo, non influenzerà le prestazioni della vostra applicazione. Lo svantaggio è che non potete essere certi che ogni log inviato dalla vostra applicazione raggiungerà il server. Inoltre, la crittografia non è disponibile con UDP.

  1. Non influisce sulla vostra applicazione se Graylog è lento o inattivo.
  1. Alcuni messaggi possono essere persi.
  2. La crittografia non è disponibile.
  3. La dimensione del messaggio è limitata a 8192 byte.

Il protocollo TCP, a differenza di UDP, scambia informazioni tra la vostra 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 è inattivo). Lo svantaggio è che se Graylog è lento o non risponde, la vostra applicazione deve attendere una risposta o un timeout, potenzialmente rallentandola.

Un altro vantaggio è che potete crittografare le vostre comunicazioni con TLS (noto anche come SSL).

  • Garantisce che il messaggio sia stato ricevuto.
  • La crittografia è disponibile (TLS).
  • Nessuna limitazione di dimensione del messaggio
  • Può rallentare il mittente se Graylog è lento a rispondere o inattivo.

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

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