Graylog: Iniziare
Come iniziare con 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!
Creare un primo input in Graylog
Un input è il punto finale dove Graylog riceve i tuoi log. Puoi inviare log utilizzando TCP o UDP. Inoltre, Graylog può raccogliere voci di log da un'API, una coda Kafka, un server RabbitMQ e altri metodi.
In questo esempio, creeremo un input UDP grezzo. Per iniziare, apri l'interfaccia di Graylog e naviga su "System" poi "Inputs". Scegli "Raw/Plaintext UDP" e clicca su "Launch new input". Configura il tuo input con i seguenti valori e valida il modulo:
- Node: Seleziona il tuo nodo
- Title: RAW UDP
- Port: 5555
Successivamente, apri un terminale sul tuo computer e invia un messaggio UDP al tuo server Graylog. Ricorda di sostituire XXXXXX con il nome di dominio del tuo servizio:
- Su macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Su Linux:
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
Dopo aver inviato il messaggio, torna su Graylog e clicca su "Search". Dovresti vedere il tuo messaggio 🎉
Congratulazioni, hai inviato il tuo primo messaggio a Graylog! Sentiti libero di creare input e dashboard aggiuntivi su misura per le tue esigenze. Per ulteriori indicazioni, potresti trovare utile la documentazione ufficiale di Graylog.
Esempi di codice Graylog
Diversi esempi di codice sono disponibili nel nostro repository Git. Questo repository offre implementazioni pratiche e personalizzazioni aggiuntive per aiutarti a ottenere il massimo da Graylog.
Inviare log rsyslog a Graylog utilizzando la crittografia TLS
Se hai un client rsyslog e vuoi inviare log in modo sicuro a Graylog, segui questi passaggi:
Non attivare alcuna opzione TLS sull'input di Graylog. TLS sarà gestito direttamente da un reverse proxy sulla tua istanza in modo che Graylog non lo gestisca.
-
Vai alla configurazione del tuo servizio Graylog nel dashboard Stackhero e abilita "TLS encryption" per la porta Syslog TCP 514.
-
Aggiorna la tua configurazione rsyslog come indicato di seguito. Sostituisci
<XXXXXX>.stackhero-network.comcon il nome host della tua istanza:# Definire il certificato CA TLS global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Inviare tutti i log a un server remoto # Viene creata una coda su disco per questa azione. Se l'host remoto è # offline, i messaggi vengono messi in coda su disco e inviati quando torna disponibile # Vedi https://www.rsyslog.com/doc/v8-stable/configuration/actions.html # e https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html *.* action( type="omfwd" target="<XXXXXX>.stackhero-network.com" port="514" protocol="tcp" KeepAlive="on" KeepAlive.Interval="30" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" ResendLastMSGOnReconnect="on" queue.filename="fwdRule1" # prefisso nome unico per i file di spool queue.type="LinkedList" queue.maxDiskSpace="256m" queue.saveOnShutdown="on" action.resumeRetryCount="-1" action.resumeInterval="30" ) -
Riavvia il tuo servizio rsyslog e verifica la configurazione inviando un log con il comando:
logger This is a test
Questo completa la configurazione. Ora stai inviando log in modo sicuro a Graylog utilizzando la crittografia TLS!
Gestire l'errore "failed to parse field [XXXX] of type [YYYY]"
Potresti incontrare un errore come:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Puoi visualizzare questo errore nei log forniti nel dashboard Stackhero o nel pannello di amministrazione di Graylog sotto System > Overview > Indexer failures.
Questo errore indica che un log è stato inviato con un valore per il campo time che non corrisponde al tipo previsto (in questo caso, un valore numerico di tipo "long"). Graylog sfrutta la funzionalità di mappatura dinamica di OpenSearch. Quando un log viene inviato per la prima volta, OpenSearch tenta di indovinare i tipi di campo. Ad esempio, se un log include il campo time con il valore numerico 1234, OpenSearch lo definisce come un campo numerico. Se un altro log viene inviato con il campo time impostato come "abcd", una stringa, OpenSearch lo rifiuterà perché si aspetta un valore numerico.
Ricorda che il nome del campo time è usato solo a scopo illustrativo. Può essere qualsiasi nome di campo e tipo.
Per risolvere questo problema, devi ridefinire il tipo che OpenSearch si aspetta. Per ulteriori informazioni, consulta la documentazione ufficiale di Graylog.
Aggiornare il mapping di OpenSearch
Prima di procedere, abilita l'accesso a OpenSearch nel dashboard Stackhero. Naviga al tuo servizio Graylog e clicca sul pulsante "Configure" per attivare l'accesso a OpenSearch.
Fai attenzione a queste modifiche poiché configurazioni errate possono bloccare il tuo cluster OpenSearch e potenzialmente causare perdita di dati. Se non sei sicuro, non procedere.
-
Definisci il tuo nuovo mapping. In questo esempio, ridefiniamo il campo
timeper essere di tipo string. Puoi trovare i tipi disponibili nella documentazione dei tipi di campo OpenSearch. -
Salva il seguente contenuto in un file chiamato
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Invia questo file utilizzando il seguente comando curl (sostituisci
<XXXXXX>.stackhero-network.comcon il nome di dominio della tua istanza):curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'Dovresti ricevere una risposta come:
{ "acknowledged": true } -
Infine, verifica che il mapping sia stato aggiornato con questo comando (sostituisci il dominio se necessario):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
Gestire l'errore "Unable to write audit log entry"
Se vedi un errore come:
Unable to write audit log entry because there is no valid license
o
Not running cleanup for auditlog entries in MongoDB because there is no valid license
ciò accade perché Graylog Enterprise è stato attivato senza una licenza valida. Se hai una licenza, puoi inserirla nell'interfaccia di Graylog. Se non hai una licenza, disattiva semplicemente Graylog Enterprise nel dashboard Stackhero.