当前位置: 首页 > 知识库问答 >
问题:

从python向logstash发送TCP数据失败

花和宜
2023-03-14
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)

在执行了这两个脚本之后,我既不会得到任何错误,也不会得到日志存储中的数据,所以有人可以帮忙,比如是什么导致了这个问题。

共有1个答案

艾成益
2023-03-14

我只是在sock.sendall(json.dumps(msg))后面添加sock.send('\n'),它起作用了。看来logstash-codec-jsonAS1存在一个未解决的问题:

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

参考资料:

 类似资料:
  • 我正在从Java向logstash发送TCP字符串消息。我不想为每条消息创建一个新的TCP连接,但我想重用TCP连接。保留一个TCP连接并通过socket.write和socket.flush发送消息,直到其中一个方法抛出IOException然后打开新连接,这样是否安全?

  • 虽然之前我们已经提到过不建议直接使用 LogStash::Inputs::TCP 和 LogStash::Outputs::TCP 做转发工作,不过在实际交流中,发现确实有不少朋友觉得这种简单配置足够使用,因而不愿意多加一层消息队列的。所以,还是把 Logstash 如何直接发送 TCP 数据也稍微提点一下。 配置示例 output { tcp { host => "19

  • 我需要将一些数据从 Angular 传递到 Node.js 服务器。这是我的角度帖子列表组件:从“@angular/核心”导入 { 组件,OnInit };从 “@angular/common/http” 导入 { HttpClient }; 我的node.js服务器: 我想安慰一下。记录数据,但什么都没有发生。

  • 我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用示例的时间戳将其发送给连接的多个客户端。我使用多线程来支持多个客户端。我希望每10秒向客户端发送一次时间。但在我的代码中,客户端在收到第一个数据后停止。如何让客户端连续接收数据。我尝试在客户端添加while循环,但这并不可行。有什么建议吗 以下是示例代码:服务器端: 客户端: 我的输出: 客户端所需输出:

  • 我需要在javascript客户机和Web API控制器操作之间建立一个长时间运行(比如10分钟)的连接。Web应用程序的Azure负载均衡器的默认超时时间为4分钟,目前还无法配置。