Logstash:跨事件保持值

2023-12-09

我有一个日期在每个日志文件中只出现一次,并且我尝试在匹配一次后将该日期添加到所有后续事件中,使其在某些方面充当全局变量。 (日期位于文档顶部,我无法使用multiline或更改文件名或内容)

为此,我的方法是使用grep过滤器drop => false.

grok {
    patterns_dir => "[...]"
    match => [ "message", "%{DATELINE}" ]
    tag_on_failure => [ ]
}
grep {
    add_field => { "grepdate" => "%{mydate}" }
    drop => false
}
date {
    locale => "en"
    timezone => "Europe/Paris"
    match => [ "grepdate", "yyyyMMdd" ]
    target => "grepdate"
}

正则表达式:

DATELINE (= Date: (?<mydate>[0-9]{8}))

我注意到的是grepdate字段已正确添加到所有事件中 - 这就是我想要的 - 但该字段的值不是日期本身(%{mydate}),但是实际的字符串"%{mydate}",除非第一次实际匹配时(在解析我的日志文件中的实际日期时,grepdate字段包含正确的值)

我可以做什么来解决这个问题?

任何帮助是极大的赞赏。

Edit:

我现在正在尝试一种解决方案,其中包括使用memorize插入。但是,我收到以下错误:

不能使用超过 1 个过滤器工作线程,因为以下插件 不要与超过一名工人一起工作:记住

有没有办法使这个过滤器线程安全?


也许你应该使用官方的aggregate filter为此,自memorize不是官方的并且不适用于 Logstash >2.0.

事情会是这样的:

# same as what you have now
grok {
    patterns_dir => "[...]"
    match => [ "message", "%{DATELINE}" ]
    tag_on_failure => [ "not_date_line" ]

}
# add a fictional taskId field to correlate all lines
mutate {
   add_field => { "taskId" => "all" }
}

# if we're processing the first line, remember the date
if "not_date_line" not in [tags] {
    aggregate {
        task_id => "%{taskId}"
        code => "map['mydate'] = event['mydate']"
    }
} 
# if we're processing the next lines, add the date
else {
    aggregate {
        task_id => "%{taskId}"
        code => "event['mydate'] = map['mydate']"
        map_action => "update"
        timeout => 0
    }
}

然后您的所有活动都会有一个mydate包含第一条日志行上的日期的字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Logstash:跨事件保持值 的相关文章

随机推荐

  • 设置 UILabel 行距

    如何修改多行中的行间距 行距 UILabel Edit 显然NSAttributedString在 iOS 6 及更高版本上可以做到这一点 而不是使用NSString要设置标签的文本 请创建一个NSAttributedString 为其设置
  • 将自定义对象从 JList 拖放到 JLabel 中

    我有一个包含自定义对象 ArrayList 的 JList 并且我正在尝试创建拖放到字段中的操作 我无法理解如何打包和接收 Transferable 中的对象 据我所知 这大约是 import java awt import java aw
  • 计算 SQL Server 中不包括重叠时间和中断的总时间

    从选择查询的开始时间和结束时间列表中 我需要找出不包括重叠时间和休息时间的总时间 StartTime EndTime 2014 10 01 10 30 00 000 2014 10 01 12 00 00 000 90 mins 2014
  • 来自多个变量的 Pivot_wider 函数(tidyr r 包)

    我想将数据框置于宽格式中 考虑两个变量作为标准 甚至可能是不必要的 但我对此发表评论是因为原始 df 是 480 行和几个子级别 这是返回一个错误 library tidyr library dplyr df lt structure li
  • 如何在 JavaFX css 中将 -fx-max-width 设置为 USE_PREF_SIZE?

    我正在编写一个 JavaFX 8 应用程序 想知道是否可以将 例如 按钮的最小或最大宽度设置为USE PREF SIZE通过CSS 班上Region定义USE PREF SIZE as Double NEGATIVE INFINITY 但是
  • 如何迭代(键,值)boost::python:dict

    我怎样才能迭代C 在我的升压 python 字典 我需要key and value在每个循环中 我的尝试是这样的 for auto x MyBoostPythonDict iteritems determine key determine
  • SQLSTATE[HY093]:参数号无效[重复]

    这个问题在这里已经有答案了 我在执行搜索查询时遇到一些问题 我收到这个错误 SQLSTATE HY093 参数号无效 这是我的代码
  • 执行 R 脚本时 MS-SQL 服务器中的“无效 BXL 流”

    我正在将 R 脚本作为 ms sql 存储过程执行 我正在尝试使用 geosphere 包 但是当我执行存储过程时 出现错误 无效的 BXL 流 并且执行停止 该软件包已安装在计算机上 只需加载该软件包就会导致此错误 即library ge
  • 复制链表C中的节点

    我正在尝试复制链表中的节点 我不确定我是否做得正确 我尝试制作测试用例 但没有成功 如果有人可以告诉我哪里出了问题以及我做对了什么 以及测试我的代码的最佳方法是什么 struct node int id char side int quan
  • 如何检查 SymPy 表达式是否具有解析积分

    我想解决我的另一个问题here因此 每当 和 积分没有解析 符号解时 我需要 sympy 返回错误 例如 如果我尝试 from sympy import init printing use unicode False wrap line F
  • 如何从 Excel 的数据列中删除字符

    我正在格式化收到的一些数据 我在 A 列中有几百个学生的名字 由于某种奇怪的原因 有一个随机的 随机放置在名称中 我想以编程方式删除所有 所有名字中的字符 For x 2 To 300 Dim strStudent as String ho
  • 如何将外部自定义 URL 添加到 woocommerce 端点

    我想将自定义端点 URL 添加到 woocommerce 上的我的帐户页面 是否可以 因此 当客户点击此链接时 他们将重定向到我的 YouTube 页面 function custom wc end point if class exist
  • 将段落拆分成句子

    我有一大堆文字 例如 我想将一个段落分成句子 但有一个问题 我的段落包括诸如 Jan 13 2014 之类的日期 诸如 U A E 之类的单词以及诸如 2 2 之类的数字 我该如何分割这个 Output I want to split a
  • 排列矩阵的行和列

    假设我有以下矩阵 数组 array 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 我想应用以下排列 1 gt 5 2 gt 4 结果最终应该是 array 1 1 1 0 0 1 0 1
  • 如何确定文件、函数和行号?

    在 C 中 我可以像这样打印调试输出 printf FILE s FUNC s LINE d LOG s n FILE FUNCTION LINE logmessage 我怎样才能在Python中做类似的事情 有一个名为inspect它提供
  • CSS 悬停时更改颜色

    我试图用第二个来覆盖我的第一个 颜色变化 我希望在悬停文本时在图标上显示银色 在悬停图标时在图标上显示红色图标 I tried HTML ul li class liDoc a href My link a i class fa fa tr
  • 如何使用正则表达式 Java 将方括号内的破折号替换为下划线

    我试图用下划线替换方括号内的破折号 但它会用字符串中的下划线替换所有破折号 例如 我想替换 a a gamma with a a gamma 但它取代了all带有下划线的字符串中的破折号 您可以使用 String n a a gamma S
  • Task.WhenAny 和 SemaphoreSlim 类

    使用时WaitHandle WaitAny and Semaphore class像下面这样 var s1 new Semaphore 1 1 var s2 new Semaphore 1 1 var handles new s1 s2 v
  • 在调用所有 Promise 后循环遍历 jQuery Deferreds

    我目前正在尝试使用 HTML5 FileAPI 构建文件上传器 文件上传器应该处理多个文件并显示图像预览 如果文件是图像 由于 FileReader 类异步工作 我想等到所有文件都被读取 因此我正在使用 Deferreds 读取文件的方法返
  • Logstash:跨事件保持值

    我有一个日期在每个日志文件中只出现一次 并且我尝试在匹配一次后将该日期添加到所有后续事件中 使其在某些方面充当全局变量 日期位于文档顶部 我无法使用multiline或更改文件名或内容 为此 我的方法是使用grep过滤器drop gt fa