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

时间:2016-04-13 15:29:58

标签: logstash aws-lambda elastic-stack

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

Lambda函数可能会失败或超时,然后是"完成"事件未发送。

我想使用logstash aggregate filter来识别失败的调用。含义 - 每个invocation_id在聚合地图中都是task_id,并且"完成"事件将是end_of_task

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

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

1 个答案:

答案 0 :(得分: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" ]
}