从python发送到logstash的TCP数据失败

时间:2018-05-03 04:32:19

标签: python tcp logstash

我正在尝试通过TCP从python脚本发送数据并在logstash中接收相同的内容。 但是没有数据交换发生。

logstash.conf

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

filter{

}

output {
    stdout {codec => rubydebug}
}

python:

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 :(得分:3)

我刚刚在sock.send('\n')之后添加sock.sendall(json.dumps(msg))并且它有效。似乎 logstash-codec-json 存在一个未解决的问题Android Room - Select query with LIKE

  

logstash' json'插件仍然需要换行符' \ n'终止通过TCP输入发送的json日志。1

参考文献:

  1. 2

  2. TCP data sending from pyton to logstash fails.