我正在尝试通过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中收到任何错误也没有数据,所以有人可以帮助解决导致问题的原因。
答案 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
参考文献: