1、新增功能探针联动处置、心跳在线检测
2、syslog-consumer模块拆分 syslog-consumer-rule模块实现日志数据消费、解析、泛化入库。
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,58 @@
|
||||
package com.haobang.syslog;
|
||||
|
||||
import org.graylog2.syslog4j.SyslogConstants;
|
||||
import org.graylog2.syslog4j.server.*;
|
||||
|
||||
import java.net.SocketAddress;
|
||||
|
||||
public class MySyslogServer {
|
||||
private static final String HOST = "127.0.0.1";
|
||||
private static final int PORT = 514;
|
||||
//514
|
||||
|
||||
private void receiveSyslogMessage() throws InterruptedException {
|
||||
SyslogServerIF server = SyslogServer.getInstance(SyslogConstants.UDP);
|
||||
SyslogServerConfigIF config = server.getConfig();
|
||||
config.setHost(HOST);
|
||||
config.setPort(PORT);
|
||||
config.addEventHandler(new SyslogServerSessionEventHandlerIF() {
|
||||
@Override
|
||||
public Object sessionOpened(SyslogServerIF syslogServerIF, SocketAddress socketAddress) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void event(Object o, SyslogServerIF syslogServerIF, SocketAddress socketAddress,
|
||||
SyslogServerEventIF syslogServerEventIF) {
|
||||
System.out.println("receive from:" + socketAddress + "\tmessage" + syslogServerEventIF.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exception(Object o, SyslogServerIF syslogServerIF, SocketAddress socketAddress, Exception e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sessionClosed(Object o, SyslogServerIF syslogServerIF, SocketAddress socketAddress, boolean b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(SyslogServerIF syslogServerIF) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy(SyslogServerIF syslogServerIF) {
|
||||
|
||||
}
|
||||
});
|
||||
SyslogServer.getThreadedInstance(SyslogConstants.UDP);
|
||||
Thread.sleep(100000);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
new MySyslogServer().receiveSyslogMessage();
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.haobang.syslog;
|
||||
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.DatagramSocket;
|
||||
|
||||
public class TestSyslogServer {
|
||||
public static void main(String[] args) throws Throwable {
|
||||
// TODO Auto-generated method stub
|
||||
DatagramSocket datagramSocket = new DatagramSocket(514);
|
||||
while (true) {
|
||||
DatagramPacket packet = new DatagramPacket(new byte[1000], 1000);
|
||||
try {
|
||||
//不会造成死循环,因为receive是阻塞式方法,若发送方不发送数据,则阻塞在该处
|
||||
datagramSocket.receive(packet);
|
||||
String msg = new String(packet.getData(), 0, packet.getLength());
|
||||
//handelMessage(msg);
|
||||
|
||||
System.out.println(packet.getAddress() + "/" + packet.getPort() + ":" + msg);
|
||||
packet.setData("I am server!!!".getBytes());
|
||||
datagramSocket.send(packet);
|
||||
Thread.sleep(1000);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void handelMessage(String messageFragment){
|
||||
StringBuilder currentMessage = new StringBuilder();
|
||||
boolean isSplitMessage = messageFragment.endsWith("..."); // 根据拆分标志判断消息是否被拆分
|
||||
|
||||
if (isSplitMessage) {
|
||||
// 拆分的消息片段,将其合并到当前消息
|
||||
currentMessage.append(messageFragment.substring(0, messageFragment.length() - 3));
|
||||
} else {
|
||||
// 完整的消息,处理并重置当前消息
|
||||
currentMessage.append(messageFragment);
|
||||
handleCompleteMessage(currentMessage.toString());
|
||||
currentMessage.setLength(0);
|
||||
}
|
||||
}
|
||||
public static void handleCompleteMessage(String completeMessage){
|
||||
System.out.println("接收到完整消息:" + completeMessage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user