Kirim pesan echo ke graylog2 melalui port GELF TCP 12201

20

Saya perlu mengirim pesan ke graylog2 server melalui echo untuk menguji apakah% {@ type} untuk fasilitas sudah benar, tetapi begitu saya melakukan itu echo yang ada dalam dukungan GELF tidak tiba di server graylog2 saya. Jika restart graylog2 maka pesan tentang hal itu mulai tiba ke server graylog2.

Contoh pesan gema:

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

Apa yang saya lakukan salah? Mode graylog --debug tidak menunjukkan apa pun. Bahkan tidak melihat pesan masuk.

Edit:

Input Graylog2 adalah setup untuk GELF TCP dan menunjukkan koneksi aktif dan memunculkan ketika saya mencoba untuk echo, tetapi tidak ada yang mencapai server seperti untuk pesan yang masuk.

mYzk
sumber
1
Perintah ini bekerja untuk saya. Satu-satunya perbedaan adalah saya menggunakan port UDP pada graylog. Karena itu saya menambahkan -uparameter ke nc.
amra

Jawaban:

29

Tampaknya input GELF TCP membutuhkan karakter nol di akhir setiap pesan Gelf.

Jadi, Anda harus mengirim:

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

Jawaban ini ditemukan dalam diskusi tentang masalah Graylog .

pengguna236376
sumber
12
Tambahkan -uparameter untuk ncmenggunakan UDP
rsilva4
7

Ketika saya mencoba memverifikasi bahwa instance Logstash mendengarkan dengan benar untuk input GELF, saya telah menemukan utas ini.

Berikut adalah perintah yang akan bekerja untuk Logstash + Gelf over 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

Perhatikan itu :

  • sederhana echosudah cukup, tidak perlu-e
  • pesan tersebut di-gzip, jika tidak Anda akan mendapatkan kesalahan ini: Could not find parser for header: [123, 34]di Logstash logs
  • netcat mengirim melalui UDP
jcecour
sumber