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

标签 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 中收到任何数据,所以有人可以帮助解决可能导致问题的问题。

最佳答案

我只是在 sock.sendall(json.dumps(msg)) 之后添加了 sock.send('\n') 并且它起作用了。 logstash-codec-json 似乎有一个悬而未决的问题 1 :

The logstash 'json' plugin still requires a newline '\n' to terminate json logs being sent over a TCP input.2

引用:

  1. TCP data sending from pyton to logstash fails.

  2. The logstash 'json' codec still requires a newline '\n' as a delimiter to terminate json logs being sent over a TCP input.

关于python - 从 python 发送到 logstash 的 TCP 数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50147017/

相关文章:

regex - 使用Logstash解析范围请求 header

docker - Filebeat监控容器内多个容器的日志

Python覆盖率看不到配置文件

python - 使用 Python 的 Fabric 库对 "execute"进行嵌套调用

python - OSM 到有向图 (python-igraph/networkx)

python for a in b, a not in b

windows - 确定 TCP/IP 端口是否已在 Windows 下使用?

c - 服务器/客户端的 C 指针问题

android - Android 上的 Http 持久连接以及从 wi-fi 切换到蜂窝网络

elasticsearch - Filebeat的Logstash输出。什么是 'index'配置选项?