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

graylog MessageProcessor 简单说明

时间:2022-10-05 10:23:33浏览次数:108  
标签:MessageProcessor messages ID FIELD graylog 简单 Message message

MessageProcessor 是在ProcessBufferProcessor 使用的,主要进行消息的加工,比如过滤,提取,扩展

ProcessBufferProcessor参考处理

private void handleMessage(@Nonnull Message msg) {
    msg.addStream(defaultStreamProvider.get());
    Messages messages = msg;
    // 消息处理的时候使用MessageProcessor 进行消息的进一步加工
    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.insertBlocking(message);
        }
    }
}

MessageProcessor 的实现

目前主要包含以下几类,pipeline,filterchain(组合filter ),以及geoip (特殊处理了)
参考图

 

 

参考资料

https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/buffers/processors/ProcessBufferProcessor.java

标签:MessageProcessor,messages,ID,FIELD,graylog,简单,Message,message
From: https://www.cnblogs.com/rongfengliang/p/16755145.html

相关文章

  • 最简单的链表实现
    输入数字并输出的链#include<iostream>#include<stdlib.h>usingnamespacestd;​structNode{intdata;structNode*next;};​intmain(){intnum;cin>......
  • graylog RawMessage&RawMessageEvent&MessageEvent&Message 说明
    RawMessage是从grayloginput组件获取到的还没解析处理的消息,是有SimpleChannelInboundHandler处理的原始消息RawMessageEvent是Disruptor处理的事件包装MessageE......
  • 一款很简单的键盘记录器,只保留了基础功能
    //Crack.cpp:定义DLL应用程序的入口点。#include"pch.h"HINSTANCEhin; //模块句柄:即本模块在内存中的首地址BOOLAPIENTRYDllMain(HMODULEhModule, //入口函......
  • 05-RabbitMQ控制台入门及其Java简单操作
    MQ控制台简单操作建立Exchange新建Exchange成功新建Queue新建Queue成功建立Exchange与Queue的关系建立关系成功路由键:就是指发送到Exchange的消息,通......
  • 最简单搭建前端轻量级项目开发服务
    本文讨论了如何搭建一个简单的前端项目开发服务,这个服务要实现以下几点:Javascript的打包压缩;scss的编译打包压缩;简单文件http服务;监测文件变化自动刷新浏览器;零......
  • leetcode 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最近公
    一、题目大意给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点......
  • 二分法的四个简单应用
    一.寻找有序数组中的元素--寻找一个有序数组中的某个元素,并输出其下标//寻找有序数组中的某个元素#include<stdio.h>intmain(){intarr[]={-1,2,4,5,7,8,9,11};int......
  • graylog OutputRouter 简单说明
    OutputRouter核心是基于stream以及消息获取到实际消息的外部输出,方便后续的存储以及处理,实现上依赖了OutputRegistry存储了MessageOutput与Stream的关系,可以用来方便......
  • 一个简单的模拟实例说明Task及其调度问题
    编者荐语:蒋老师只用短短的几百行样例代码就为大家解释清楚了在C#中至关重要的Task和其调度的原理,这是不可多得的高质量文章。Task对于.NET的重要性毋庸置疑。通过最近的一些......
  • graylog MessageOutput 简单说明
    MessageOutput才是graylog真正写入日志到外部存储的地方不同的实现都依赖一个MessageQueueAcknowledger,对于已经处理的消息进行确认,确保不会多次执行扩展的子类  ......