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 montre les connexions actives et elle augmente lorsque j'essaie de faire écho, mais rien n'atteint le serveur comme pour le message.
Il semble que GELF TCP input a 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 un discussion sur les problèmes de Graylog .
Comme 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 :
echo
suffit, pas besoin de -e
Could not find parser for header: [123, 34]
dans les journaux Logstash