首页 文章

Logstash过滤器:聚合 - 超时时自动保存

提问于
浏览
0

我在AWS中有一个Lambda函数,它将日志报告给ELK实例 . 每次调用lambda函数都会生成一个与每个日志事件一起发送的唯一 invocation_id ,因此可以在ELK中识别来自单个调用的事件 . 在操作结束时,我发送"Done"事件 .

Lambda函数可能会失败或超时,然后不会发送“完成”事件 .

我想使用logstash aggregate filter来识别失败的调用 . 含义 - 每个 invocation_id 将在聚合贴图中为 task_id ,"Done"事件将为 end_of_task .

我需要告诉它“超时(在X时间之后没有收到事件)保存聚合事件,状态=失败” .

这个过滤器有可能吗?如果是这样,语法是什么?从文档中不清楚..

1 回答

  • 0

    Logstash聚合过滤器支持从版本2.3.0开始生成超时事件 . 以下是如何使用此功能实现您的目标:

    if [action] == "BEGIN" {
      aggregate {
        task_id => "%{id}"
        code => "map['bytes'] = 0"
        map_action => "create"
      }
    } elseif [action] == "DONE" {
      aggregate {
        task_id => "%{id}"
        code => "event['bytes'] += map['bytes']"
        timeout_code => "event.tag('failed')"
        map_action => "update"
        end_of_task => true
        timeout => 10
        push_map_as_event_on_timeout => true
    } else {
        aggregate {
        task_id => "%{id}"
        code => "map['bytes'] += event['bytes']"
        map_action => "update"
        add_tag => [ "drop" ]
    }
    

相关问题