Envoyer un message d'écho à graylog2 via le port GELF TCP 12201

20

Je dois envoyer un message au serveur graylog2 via echo pour tester si le% {@ type} pour la fonction est correct, mais une fois que je fais l'écho, cela dans le support GELF n'arrive pas sur mon serveur graylog2. S'il redémarre graylog2, les messages à son sujet arrivent sur le serveur graylog2.

Exemple de message d'écho:

echo '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}' | nc -w 1 my.graylog.server 12201

Qu'est-ce que je fais mal? Le mode graylog --debug n'affiche rien. Il ne voit même pas le message entrer.

Éditer:

L'entrée Graylog2 est configurée pour GELF TCP et affiche les connexions actives et elle augmente lorsque j'essaie de faire écho, mais rien n'atteint le serveur comme pour le message.

mYzk
la source
1
Cette commande fonctionne pour moi. La seule différence est que j'utilise le port UDP sur graylog. Par conséquent, j'ajoute un -uparamètre à nc.
amra

Réponses:

29

Il semble que l'entrée TCP GELF ait besoin d'un caractère nul à la fin de chaque message Gelf.

Vous devez donc envoyer:

echo -e '{"version": "1.1","host":"example.org","short_message":"Short message","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}\0' | nc -w 1 my.graylog.server 12201

Cette réponse a été trouvée dans une discussion sur les problèmes de Graylog .

user236376
la source
12
Ajouter un -uparamètre pour ncutiliser UDP
rsilva4
7

Alors que j'essayais de vérifier qu'une instance Logstash écoutait correctement les entrées GELF, j'ai trouvé ce fil.

Voici une commande qui fonctionnera pour Logstash + Gelf sur UDP:

echo '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}' | gzip | nc -u -w 1 127.0.0.1 12201

Remarquerez que :

  • un simple echosuffit, pas besoin de-e
  • le message est compressé, sinon vous obtiendrez cette erreur: Could not find parser for header: [123, 34]dans les journaux Logstash
  • netcat envoie sur UDP
jlecour
la source