-1

我在 S3 存储桶中有 AWS Lambda 和 API 网关日志,我托管了 logstash 并将日志从 s3 移动到 elasticsearch 服务以集中日志记录。我想在logstash中过滤Lambda和api网关的日志,所以在弹性搜索中我可以很容易地找到东西。

下面是我在 kibana“消息”字段中获取并想要过滤的 apigateway 日志

{"messageType":"DATA_MESSAGE",
"owner":"",
"logGroup":"API-Gateway-Execution-Logs/live",
"logStream":"d645920e395fe","subscriptionFilters":["API-Gateway-Execution-Logslive"],
"logEvents":[{"id":"3463","timestamp":1553,"message":"(d7b307ed-4c36-11e9) Extended Request Id: W6ghjgj"}]
}

filter i tried with
filter {
    grok {
        match => { "message" => "%{GREEDYDATA:wd}" }
    }
    json{
        source => "wd"
        target => "js"
    }
    mutate {
        add_field => { "t1" => "%{[js][logEvents][message]}"}
    }
}
4

2 回答 2

1

我已经使用 json 解析,使用 mutate https://www.elastic.co/guide/en/logstash/current/plugins-filters-split.html拆分和使用值

filter {
    json {
        source => "message"
    }
    split {
        field => "logEvents"
    }
    mutate {
        add_field => ["time", "%{[logEvents][timestamp]}"]
    }
于 2019-03-26T17:14:13.437 回答
0

我建议在您的 Logstash 配置文件中使用 Grok。

Grok 是将非结构化日志数据解析为结构化和可查询的好方法。

使用这些链接构建您的日志解析器

文档

例子

于 2019-03-23T10:55:16.553 回答