添加递增 1 的新计数器 (trap_id) 字段
Add new counter (trap_id) field which increments by 1
代码:
filter {
if ([trap_id]) {
mutate {
update => { "trap_id" => "trap_id"++ }
}
else
mutate {
add_field => { "trap_id" => 1 }
}
}
}
场景:
我正在尝试引入一个新字段(trap_id),每次生成陷阱时它都需要递增 1。
错误:
:ConfigurationError", :message=>"在第 26 行第 50 列(字节 1229)过滤后应为 #, {, } 之一 {\n
指向行:更新 => { "trap_id" => "trap_id"++ }
问题:
我该如何修复错误?或者对于给定的场景,这是正确的做法吗?
您不能使用该语法递增字段。您也许可以使用 math 过滤器(尽管您需要安装它,并且它已经三年未更新),或者您可以在 ruby.
中安装
ruby {
init => '@trap_id = 0'
code => '
@trap_id += 1
event.set("trap_id", @trap_id)
'
}
您需要将 pipeline.workers 设置为 1 才能可靠地工作。如果有多个管道工作线程,那么对实例变量的访问将不会在它们之间同步。它可能几乎所有时间都有效,但两个线程在调用 event.set 之前递增 @trap_id 并非不可能。如果出于某种原因,对 event.set 的调用实际上必须再次引用内存(而不是寄存器),那么这将得到错误的结果。
代码:
filter {
if ([trap_id]) {
mutate {
update => { "trap_id" => "trap_id"++ }
}
else
mutate {
add_field => { "trap_id" => 1 }
}
}
}
场景: 我正在尝试引入一个新字段(trap_id),每次生成陷阱时它都需要递增 1。
错误: :ConfigurationError", :message=>"在第 26 行第 50 列(字节 1229)过滤后应为 #, {, } 之一 {\n
指向行:更新 => { "trap_id" => "trap_id"++ }
问题: 我该如何修复错误?或者对于给定的场景,这是正确的做法吗?
您不能使用该语法递增字段。您也许可以使用 math 过滤器(尽管您需要安装它,并且它已经三年未更新),或者您可以在 ruby.
中安装ruby {
init => '@trap_id = 0'
code => '
@trap_id += 1
event.set("trap_id", @trap_id)
'
}
您需要将 pipeline.workers 设置为 1 才能可靠地工作。如果有多个管道工作线程,那么对实例变量的访问将不会在它们之间同步。它可能几乎所有时间都有效,但两个线程在调用 event.set 之前递增 @trap_id 并非不可能。如果出于某种原因,对 event.set 的调用实际上必须再次引用内存(而不是寄存器),那么这将得到错误的结果。