Graylog: Premiers pas
Comment débuter avec Graylog
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution Graylog cloud prête à l'emploi qui offre de nombreux avantages, notamment :
- Serveur SMTP d'e-mail dédié et illimité inclus.
- Mises à jour simplifiées en un clic.
- Nom de domaine personnalisable sécurisé par HTTPS (par exemple, https://logs.votre-entreprise.com).
- Performance optimale et sécurité renforcée grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Graylog cloud hosting de Stackhero !
Création d'un premier input dans Graylog
Un input est le point d'entrée où Graylog reçoit vos logs. Vous pouvez envoyer des logs via TCP ou UDP. De plus, Graylog peut collecter des entrées de logs depuis une API, une file Kafka, un serveur RabbitMQ et d'autres méthodes.
Dans cet exemple, nous allons créer un input UDP brut. Pour commencer, ouvrez l'interface Graylog et allez dans "System" puis "Inputs". Sélectionnez "Raw/Plaintext UDP" et cliquez sur "Launch new input". Configurez votre input avec les valeurs suivantes puis validez le formulaire :
- Node : Sélectionnez votre nœud
- Title : RAW UDP
- Port : 5555
Ensuite, ouvrez un terminal sur votre ordinateur et envoyez un message UDP à votre serveur Graylog. Pensez à remplacer XXXXXX par le nom de domaine de votre service :
- Sur macOS :
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Sur Linux :
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
Après avoir envoyé le message, retournez dans Graylog et cliquez sur "Search". Vous devriez voir votre message 🎉
Félicitations, vous venez d'envoyer votre premier message à Graylog ! N'hésitez pas à créer d'autres inputs et dashboards adaptés à vos besoins. Pour aller plus loin, la documentation officielle de Graylog peut vous être utile.
Exemples de code Graylog
Plusieurs exemples de code sont disponibles dans notre dépôt Git. Ce dépôt propose des implémentations pratiques et des personnalisations supplémentaires pour vous aider à exploiter tout le potentiel de Graylog.
Envoyer des logs rsyslog vers Graylog avec chiffrement TLS
Si vous disposez d'un client rsyslog et souhaitez envoyer vos logs de manière sécurisée vers Graylog, suivez ces étapes :
N'activez aucune option TLS sur l'input de Graylog. Le TLS sera géré directement par un reverse proxy sur votre instance, ainsi Graylog ne s'en occupera pas.
-
Rendez-vous dans la configuration de votre service Graylog sur le tableau de bord Stackhero et activez le "chiffrement TLS" pour le port Syslog TCP 514.
-
Mettez à jour la configuration de votre rsyslog comme indiqué ci-dessous. Remplacez
<XXXXXX>.stackhero-network.compar le nom d'hôte de votre instance :# Définir le certificat CA TLS global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Envoyer tous les logs vers un serveur distant # Une file d'attente sur disque est créée pour cette action. Si l'hôte distant # est indisponible, les messages sont stockés sur disque et envoyés dès qu'il redevient accessible # Voir https://www.rsyslog.com/doc/v8-stable/configuration/actions.html # et 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" # préfixe unique pour les fichiers de spool queue.type="LinkedList" queue.maxDiskSpace="256m" queue.saveOnShutdown="on" action.resumeRetryCount="-1" action.resumeInterval="30" ) -
Redémarrez votre service rsyslog et vérifiez la configuration en envoyant un log avec la commande :
logger This is a test
La configuration est terminée. Vous envoyez désormais vos logs de façon sécurisée à Graylog via TLS !
Gérer l'erreur "failed to parse field [XXXX] of type [YYYY]"
Vous pouvez rencontrer une erreur telle que :
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Vous pouvez consulter cette erreur dans les logs disponibles sur le tableau de bord Stackhero ou dans le panneau d'administration Graylog sous System > Overview > Indexer failures.
Cette erreur indique qu'un log a été envoyé avec une valeur pour le champ time qui ne correspond pas au type attendu (ici, une valeur numérique de type "long"). Graylog s'appuie sur la fonctionnalité de mapping dynamique d'OpenSearch. Lorsqu'un log est envoyé pour la première fois, OpenSearch tente de deviner le type des champs. Par exemple, si un log contient le champ time avec la valeur numérique 1234, OpenSearch le définit comme champ numérique. Si un autre log est envoyé avec le champ time défini à "abcd", une chaîne de caractères, OpenSearch le rejettera car il attend une valeur numérique.
Gardez à l'esprit que le nom du champ time n'est donné qu'à titre d'exemple. Cela peut concerner n'importe quel nom de champ et type.
Pour corriger ce problème, il faut redéfinir le type attendu par OpenSearch. Pour plus d'informations, consultez la documentation officielle de Graylog.
Mettre à jour le mapping OpenSearch
Avant de continuer, activez l'accès OpenSearch dans le tableau de bord Stackhero. Accédez à votre service Graylog et cliquez sur le bouton "Configurer" pour activer l'accès OpenSearch.
Soyez vigilant avec ces modifications, une mauvaise configuration peut bloquer votre cluster OpenSearch et entraîner une perte de données. Si vous avez un doute, n'allez pas plus loin.
-
Définissez votre nouveau mapping. Dans cet exemple, nous redéfinissons le champ
timeen type string. Vous trouverez les types disponibles dans la documentation des types de champs OpenSearch. -
Enregistrez le contenu suivant dans un fichier nommé
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Envoyez ce fichier avec la commande curl suivante (remplacez
<XXXXXX>.stackhero-network.compar le nom de domaine de votre instance) :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'Vous devriez obtenir une réponse comme :
{ "acknowledged": true } -
Enfin, vérifiez que le mapping a bien été mis à jour avec cette commande (remplacez le domaine si besoin) :
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
Gérer l'erreur "Unable to write audit log entry"
Si vous voyez une erreur comme :
Unable to write audit log entry because there is no valid license
ou
Not running cleanup for auditlog entries in MongoDB because there is no valid license
cela signifie que Graylog Enterprise a été activé sans licence valide. Si vous disposez d'une licence, vous pouvez l'ajouter dans l'interface Graylog. Si vous n'avez pas de licence, il suffit de désactiver Graylog Enterprise dans le tableau de bord Stackhero.