Не удается отправить данные TCP из python в logstash - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь отправить данные из скрипта Python через TCP и получить то же самое в logstash. Но обмена данными не происходит.

logstash.conf

input {
  tcp {
      port => 5959
      codec => json
  } 
}

filter{

}

output {
    stdout {codec => rubydebug}
}

питон:

import json
import socket
import sys

HOST = "127.0.0.1"
PORT = 5959

try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
    sys.stderr.write("[ERROR] %s\n" % msg[1])
    sys.exit(1)

try:
    sock.connect((HOST, PORT))
except socket.error, msg:
    sys.stderr.write("[ERROR] %s\n" % msg[1])
    sys.exit(2)

msg = {'@message': 'python test message', '@tags': ['python', 'test']}

sock.sendall(json.dumps(msg))
sock.send('\n')
sock.close()
sys.exit(0)

После выполнения обоих сценариев я не получаю ни ошибок, ни данных в logstash, поэтому кто-то может помочь, например, что может быть причиной проблемы.

1 Ответ

0 голосов
/ 03 мая 2018

Я только добавил sock.send('\n') после sock.sendall(json.dumps(msg)), и это сработало. Кажется, существует открытая проблема с logstash-codec-json как 1 :

Плагину logstash 'json' по-прежнему требуется новая строка '\ n' для завершения журналов json, отправляемых через вход TCP. 2

Рекомендации:

  1. Не удается отправить данные TCP из pyton в logstash.

  2. Для кодека logson «json» по-прежнему требуется новая строка «\ n» в качестве разделителя для завершения журналов json, отправляемых через вход TCP.

...