首页 > 其他分享 >graylog ProcessBufferProcessor 简单说明

graylog ProcessBufferProcessor 简单说明

时间:2022-10-08 13:08:48浏览次数:73  
标签:java graylog2 server ProcessBufferProcessor graylog 简单 message Message ID

ProcessBufferProcessor 的核心是进行消息处理,会调用消息处理器,同时会将消息放到OutputBuffer 中
ProcessBufferProcessor 实际上是ProcessBuffer 中Disruptor 的一个handler

核心处理

handleMessage 方法

 

private void handleMessage(@Nonnull Message msg) {
msg.addStream(defaultStreamProvider.get());
Messages messages = msg;
// 消息处理器,进行消息加工
for (MessageProcessor messageProcessor : orderedMessageProcessors) {
messages = messageProcessor.process(messages);
}

for (Message message : messages) {
message.ensureValidTimestamp();

if (!message.hasField(Message.FIELD_GL2_MESSAGE_ID) || isNullOrEmpty(message.getFieldAs(String.class, Message.FIELD_GL2_MESSAGE_ID))) {
// Set the message ID once all message processors have finished
// See documentation of Message.FIELD_GL2_MESSAGE_ID for details
message.addField(Message.FIELD_GL2_MESSAGE_ID, ulid.nextULID());
}

// The processing time should only be set once all message processors have finished
message.setProcessingTime(Tools.nowUTC());
// 消息处理标记
processingStatusRecorder.updatePostProcessingReceiveTime(message.getReceiveTime());

if(failureSubmissionService.submitProcessingErrors(message)) {
// 消息放到 outputBuffer 中
outputBuffer.insertBlocking(message);
}
}
}
msg.addStream(defaultStreamProvider.get());


MessageProcessor

MessageProcessor 会调用Filter 进行消息的加工

参考实现

graylog ProcessBufferProcessor 简单说明_3c

 

 

包含的filter 实现

graylog ProcessBufferProcessor 简单说明_3c_02

 

 

参考资料

​https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/buffers/processors/ProcessBufferProcessor.java​​​
​​​https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/plugin/messageprocessors/MessageProcessor.java​​​
​​​https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/plugin/filters/MessageFilter.java​

标签:java,graylog2,server,ProcessBufferProcessor,graylog,简单,message,Message,ID
From: https://blog.51cto.com/rongfengliang/5737211

相关文章

  • graylog 的InputBuffer 简单说明
    InputBuffer是graylog实际处理日志的部分,内部处理基于了Disruptor,同时还依赖了Journalling能力内部实际处理是依赖LocalKafka的(而且是推荐的)InputBuffer处理的几个模......
  • graylog ProcessBuffer 简单说明
    graylog在消息进入之后(对应input),选择不同的handler处理之后,会到不同的buffer中对于DirectMessageHandler的会到ProcessBuffer中,对于是否开启了Journalling,处理会不一......
  • graylog MessageInput 简单说明
    input是graylog处理消息的核心,内部对于网络的处理是基于了netty框架,消息的核心基类是MessageInput基类的能力如下图,包含了基本常用的配置,状态,以及input节点信息,同时还包......
  • C#一个简单的解析csv文件的方法
    可以将csv转成具体的类型对象,没有用序列化,需要传入转成函数手动编写类型转换代码,代码比较简单publicclassModel{publicint序号{get;set;}......
  • 力扣599(java&python)- 两个列表的最小索引总和(简单)
    题目:假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐......
  • xm-select简单使用一例
    HTML<divid="admin_ids"class="xm-select-demo"></div><scriptsrc="/Public/js/xm-select.js"></script><script> varadmin_ids=xmSelect.render({ el:'#adm......
  • voltus的IR drop分析(简单流程)
    一:文件准备voltus的环境文件配置1:pgv库配置pgv库分别配置std库;mem库;IP库配置库命令:libgen_stdcell.tclread_lib-lefset_pg_library_mode\ -ground_pins *......
  • 简单入门猜数字游戏
    #include<stdio.h>#include<stdlib.h>#include<time.h>voidmenu(){ printf("**********************************************\n"); printf("*** 1.开始游戏 ......
  • 简单理解slot算法和shadow DOM
    阅读完这篇博客你会有以下收获:slot算法是什么?shadowDOM是什么?vueslot机制与w3cwebcomponent规范的shadowDOM渲染结果有何异同?slot算法Theslottingalgorithmassign......
  • Linux下简单命令
    一、如何解压缩文件1、.tar用tar–xvf解压2、.gz用gzip-d或者gunzip解压3、.tar.gz和.tgz用tar–xzf解压4、.bz2用bzip2-d或者用bunzip2解压5、.tar.bz2......