GELF TCP 12201 포트를 통해 graylog2에 에코 메시지 보내기


20

시설의 % {@ type}이 (가) 현재인지 테스트하기 위해 echo를 통해 graylog2 서버에 메시지를 보내야하지만 GELF 지원의 에코가 graylog2 서버에 도착하지 않는 경우. graylog2를 다시 시작하면 시작에 대한 메시지가 graylog2 서버에 도착합니다.

에코 메시지의 예 :

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

내가 무엇을 잘못하고 있지? graylog --debug 모드는 아무 것도 표시하지 않습니다. 심지어 메시지가 들어오는 것을 보지 못합니다.

편집하다:

Graylog2 입력은 GELF TCP에 대해 설정되었으며 활성 연결을 표시하고 에코하려고 할 때 발생하지만 메시지가 진행되는 동안 서버에 아무것도 도달하지 않습니다.


1
이 명령은 저에게 효과적입니다. 유일한 차이점은 graylog에서 UDP 포트를 사용한다는 것입니다. 따라서 -unc 에 매개 변수를 추가 합니다.
amra

답변:


29

GELF TCP 입력에는 각 Gelf 메시지 끝에 널 문자가 필요한 것 같습니다.

따라서 다음을 보내야합니다.

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

이 답변은 Graylog의 문제 에 대한 토론에서 발견되었습니다 .


12
추가 -u할 매개 변수를 ncUDP를 사용하는
rsilva4

7

Logstash 인스턴스가 GELF 입력을 올바르게 수신하고 있는지 확인하려고 시도 하면서이 스레드를 찾았습니다.

다음은 UDP를 통한 Logstash + Gelf에서 작동하는 명령입니다.

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

그것을주의해라 :

  • 간단한 것만 echo으로 충분합니다.-e
  • 메시지가 압축되어 있으면 그렇지 않으면이 오류가 발생합니다. Could not find parser for header: [123, 34]Logstash 로그에
  • netcat이 UDP를 통해 전송 중
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.