Logstash 可以從TCP Socket 中獲取日誌資料,和stdin和file方法一樣,假定每一行都是一個日誌。
下面的演示過程如下,通過Logstash獲取來自TCP Server端的輸出資料。
一、將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,也就是TCP 客戶端,接收來自TCP Server的日誌資料。
bin\\logstash -f ..\\logstash-conf\\tcp-input.conf
伺服器端傳送的字串,會經過Logstash 這個管道流向了螢幕(也就是客戶端)。