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

通过tcp向logstash发送数据

狄宪
2023-03-14
input {
  tcp {
        port => 5400
        codec => json
  }
}
filter{
  json{
    source => "message"
  }
}
output {
   elasticsearch {
      host => "localhost"
      protocol => "http"
      index => "someIndex"
   }
}
Socket socket = new Socket("logstash-hostname", 5400);
DataOutputStream os = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
os.writeBytes("{\"message\": {\"someField\":\"someValue\"} }");
os.flush();
socket.close();

共有1个答案

蒙麒
2023-03-14

问题是您的数据已经在输入上反序列化了,而您正在尝试在筛选器上再次反序列化它。只需删除json过滤器。

以下是我如何重新创建您的场景:

# the json input
root@monitoring:~# cat tmp.json 
{"message":{"someField":"someValue"}}


# the logstash configuration file
root@monitoring:~# cat /etc/logstash/conf.d/test.conf
input {
  tcp {
    port => 5400
    codec => json
  }
}

filter{
}

output {
   stdout {
     codec => rubydebug
   }
}


# starting the logstash server
/opt/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf


# sending the json to logstash with netcat
nc localhost 5400 <  tmp.json

# the logstash output via stdout
{
       "message" => {
        "someField" => "someValue"
    },
      "@version" => "1",
    "@timestamp" => "2016-02-02T13:31:18.703Z",
          "host" => "0:0:0:0:0:0:0:1",
          "port" => 56812
}

希望有帮助,

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

  • 我使用的是Spring Boot(1.5.4)。我希望通过RabbitMQ以JSON格式而不是纯文本将服务中的日志发送到Logstash。这将使我不必在Logstash端设置过滤器,以便可以在应用程序端控制格式化(使用Logback编码器)。 我知道RabbitMQ的Spring logback AMQP Appender,但是它使用的是布局(纯文本),而不是格式化的JSON。我想使用LogSta

  • 问题内容: 我试图替换在终端中运行的Netcat命令,该命令将重置服务器上的某些数据。netcat命令如下所示: 我一直试图在Java中实现它,因为我希望能够从正在开发的应用程序中调用此命令。我遇到了问题,但命令从未在服务器上执行。 这是我的Java代码: 代码还挂在应读取的while循环上,我不知道为什么。我一直在使用Wireshark捕获数据包,并且输出的数据看起来是相同的: 也许其余的包装袋

  • 我有一个程序,它创建一个套接字(服务器和客户端程序),并使用该套接字通过TCP端口发送消息。我的问题是,我如何交换多条消息?每次我发送消息时,端口都会关闭,我需要使用另一个端口发送另一条消息。 例如,我必须从客户端向服务器发送2个数字,服务器需要回复我发送的数字的总和。如何实现在同一端口上发送未定义的数字甚至2个数字? 以下是代码(相当标准的东西): 服务器: 客户: 例如,我运行代码并为服务器端

  • 问题内容: 我有一个在线网关,要求将HTML表单与隐藏字段一起提交。我需要通过没有任何HTML形式的PHP脚本来执行此操作(我具有数据库中隐藏字段的数据) 要通过GET发送数据,请执行以下操作: 并通过POST发送数据? 问题答案: 您无法使用PHP执行此操作。 正如其他人所说,您可以使用cURL-但是PHP代码成为客户端而不是浏览器。 如果必须使用POST,那么唯一的方法就是使用PHP生成填充的

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