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索引(表名)
        }
    }
}

三、相关文章

猜你喜欢

转载自blog.csdn.net/qq_36025814/article/details/108842187
今日推荐