gpt4 book ai didi

logstash - 在logstash字段中包含单调递增的值?

转载 作者:行者123 更新时间:2023-12-02 21:43:54 25 4
gpt4 key购买 nike

我知道通过logstash处理文件时没有内置的“行计数”功能(出于各种可理解且有记录的原因)。但是 - 在任何给定的 Logstash 实例中应该有一种机制 - 为每个解析的行提供一个单调递增的变量/计数。

我不想采用指标路线,因为它是一种连续轮询机制(每 n 秒)。替代方案包括对日志文件进行预处理,考虑到我的特定用例,这是 Not Acceptable 。

再次,让我重申 - 我需要能够生成/读取单调递增变量,并将其存储在 Logstash 过滤器中。

想法?

最佳答案

logstash 中没有内置任何东西来执行此操作。

您可以构建一个过滤器来轻松完成此操作

只需将类似的内容放入 lib/logstash/filters/seq.rb

# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"
require "set"
#
# This filter will adds a sequence number to a log entry
#
# The config looks like this:
#
# filter {
# seq {
# field => "seq"
# }
# }
#
# The `field` is the field you want added to the event.
class LogStash::Filters::Seq < LogStash::Filters::Base

config_name "seq"
milestone 1

config :field, :validate => :string, :required => false, :default => "seq"

public
def register
# Nothing
end # def register

public
def initialize(config = {})
super

@threadsafe = false

# This filter needs to keep state.
@seq=1
end # def initialize

public
def filter(event)
return unless filter?(event)
event[@field] = @seq
@seq = @seq + 1
filter_matched(event)
end # def filter
end # class LogStash::Filters::Seq

每次重新启动 Logstash 时,都会从 1 开始,但对于大多数情况,这是可以的。如果您需要在重新启动后保留某些内容,则需要做更多工作才能将其保留在某个地方

关于logstash - 在logstash字段中包含单调递增的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23920655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com