Logstash v7.3 处理基于TCP传输的日志数据

Logstash 可以从TCP Socket 中获取日志数据,和stdin和file方法一样,假定每一行都是一个日志。

下面的演示过程如下,通过Logstash获取来自TCP Server端的输出数据。

Logstash v7.3 处理基于TCP传输的日志数据

一、将Logstash的input 部分配置为客户端

配置Logstash端,这里参数mode 用于设置Logstash 作为客户端,port 为指定的端口和Java代码中保持一致。

input {

tcp {

host => "127.0.0.1"

mode => "client"

port => 6000

}

}

output {

stdout {}

}

我们将上述配置文件 tcp-input.conf 放置到 D:\ElasticStack\logstash-conf 目录中。

二、将Java应用程序设计为服务器端

用于发生信息的程序实现代码如下,定时向Logstash 发生Welcome ... 消息。

package com.rickie;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class TcpServer {

public static void main(String[] args) throws IOException, InterruptedException {

ServerSocket serverSocket = new ServerSocket(6000);

for (int i = 0; i < 10; i++) {

// 阻塞等待消息

Socket socket = serverSocket.accept();

OutputStream outputStream = socket.getOutputStream();

outputStream.write(("Welcome, logstash" + i).getBytes());

outputStream.close();

Thread.sleep(1000000);

socket.close();

}

serverSocket.close();

}

}

三、进行调试

依次启动Java应用程序,也就是启动TCP 服务端应用,模拟日志数据输入。

Logstash v7.3 处理基于TCP传输的日志数据

然后启动logstash,也就是TCP 客户端,接收来自TCP Server的日志数据。

bin\logstash -f ..\logstash-conf\tcp-input.conf

服务器端发送的字符串,会经过Logstash 这个管道流向了屏幕(也就是客户端)。

Logstash v7.3 处理基于TCP传输的日志数据

相关推荐