zoukankan      html  css  js  c++  java
  • logstash 解析 json,根据字段值输出到不同文件

    需求:日志文件是json格式的,不同类型的日志的json字段不同,根据日志类型来分到不同的文件中。

    不同的日志类型:
    {"logType":"type1","userId":"","time":"","expReportnum":"","dealnum":""}
    {"logType":"type2","userId":"","userName":"","time":"","expReportnum":""}
    ...

    logType字段指定了日志类型

    logstash的配置:

    # 指定输入数据源为beats 并且开发9011端口接受数据
    input {
        beats {
            host => "0.0.0.0"
            port => 9023
            # 以json格式解析日志,方便下面配置取到 logType 字段
            codec => json
        }
    }
    
    filter{
    
      mutate{
         remove_field => ["host"]
         remove_field => ["agent"]
         remove_field => ["ecs"]
         remove_field => ["tags"]
         remove_field => ["fields"]
         remove_field => ["@version"]
         remove_field => ["input"]
         remove_field => ["log"]
         remove_field => ["cloud"]
         remove_field => ["uuid"]
         lowercase => ["logType"]
      }
      # 如果 json 中没有 logType 字段,添加一个 logType 字段,并设置值为 other
      if ![logType] {
          mutate {
            add_field => {"logType" => "other"}
          }
    
    }
    
    # 指定数据输出源为elasticsearch 并且指定index名称
    output {
    
        elasticsearch{
           hosts=>["172.16.131.131:9200"]
           index=>"index1"
        }
    
        # 通过 %{logType} 可以引用 logType 字段的值
        file {
           path => "/home/log/logfile-%{logType}-%{+YYYY}-%{+MM}-%{+dd}.log"
        }
    
        stdout { codec => rubydebug }
    
    }
    
  • 相关阅读:
    java——spring中bean的作用域
    java——线程池
    java—如何解决缓存穿透
    java—锁的学习研究
    java--springmvc
    java—多线程—notify/notifyAll
    php 基础复习 2018-06-18
    php 基础复习 2018-06-19
    php 以单下划线或双下划线开头的命名
    mysql 常用sql语句
  • 原文地址:https://www.cnblogs.com/lighter-blog/p/12661839.html
Copyright © 2011-2022 走看看