ELK logstash grok匹配失败存另外的es表

一、说明

和这篇差不多 ELK logstash基本配置,只是多了个_grokparsefailure判断

二、使用

  • 待匹配内容
[2020-09-26 13:07:54] GET http://www.test.com/index/index/test 0.118220
  • 配置
# 从日志写入信息
input {
    file {
        # path:输入的文件的路径 string or array
        # 读取一个类型文件:path => "路径"
        # 读取多个类型文件:path => [ "路径1", "路径2", "...", "路径n" ]
        path => "E:/test/log/*/*.log"
	    start_position => "beginning" #从什么位置开始读取文件 "beginning","end"
        stat_interval => 3 # 我们统计文件的频率(以秒为单位),以查看它们是否已被修改。number或者string_duration("1 second")
  }
}
# 处理从日志读取到的日志
filter {  
    # 使用grok正则匹配
    grok {
        match => {
            # 默认每一行为一条es记录,这一行的内容为es记录的message字段。
            # message配置单个规则: "message" => "规则1"
            # message配置多个规则: "message" => ["规则1", "规则2", ..., "规则n"]
            "message" => [
                "\[%{TIMESTAMP_ISO8601:timestamp}\] %{USERNAME:method}[T ]%{URL:url} %{NUMBER:exec_time}"
            ]
        }
    }
    # 把我们的字段timestamp替换掉系统默认的字段@timestamp
    date {
        match => ["timestamp", "ISO8601"]
        target => "@timestamp"
    }
    mutate{
        # 删除我们的字段timestamp。不删除的话es:如果正则匹配成功,一条记录就会有2个字段;timestamp,@timestamp
        remove_field => ["timestamp"]
    }
} 
# 输出信息到 es
output {
    if "_grokparsefailure" not in [tags]{ # grok匹配成功存es的info-表
        elasticsearch { 
            hosts => ["localhost:9200"] #配置Es地址
            index => "info-%{+YYYY.MM.dd}" #配置es索引(表名)
        }
    } else { # grok匹配失败存es的error-表
        elasticsearch { 
            # host(同message配置):string or array
            hosts => ["localhost:9200"] #配置Es地址
            index => "error-%{+YYYY.MM.dd}" #配置es索引(表名)
        }
    }
}

三、相关文章

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值