zoukankan      html  css  js  c++  java
  • filter

    (1)json filter
    数据格式是JSON,那么可以通过它吧数据解析成你想要的数据结构

    json 设置参数
    filter{
    json {
    add_filed =>..... #hash(可选项),默认,#意思就是添加字段
    add_tag =>..... #array(可选项)
    remove_field
    remove_tag
    source=> #string(必选),这是指定来源数据,一般都是message
    target => #string,定义将要解析的目标字段

    }
    }

    例子:
    input{
    stdin {}
    }
    filter {
    json{
    source =>"message"
    }
    }
    output {
    stdout {codec =>rubydebug}
    }

    grok filter

    gork 是目前logstash里最好的一种解析各种非结构化的日志数据的工具
    官方的patterns地址:https://github.com/elastic/logstash/tree/v1.4.2/patterns


    grok的例子:

    现在又日志格式:

    10.2.3.3 - - [22/Jul/2016:16:07:28 +0800] "GET /img/icon_pop_stop.png HTTP/1.0" 200 5071

    input {
    file {
        path => ["/etc/httpd/logs/h5.yizhenmoney.com-access_log"]
     }
    }
    filter {
    grok {
        match => {"message"=>"%{IP:client_ip} - - [%{HTTPDATE:timestamp}] ":?%{WORD:http_verb} %{URIPATH:url_path} HTTP/%{NUMBER:http_version}" %{NUMBER:http_status} :?%{NUMBER:bytes}"}
    remove_field => ["message"]     #这个remove_field的作用是移除你不想让让出现的字段,这样的话,在kibana的显示页面上就不显示message这个字段的内容了

    }
    }
    output {
    elasticsearch {
        hosts => ["192.168.220.116:9200"]
        index => "h5-access-%{+YYYY.MM.dd}"
    }
    }

    还有就是在日常工作中官方提供的匹配规则不一定适合你的生产环境,这时候,你可以自己写patterns

    filter {
      grok {
        patterns_dir => ["/you_path/patterns(这里写上patterns的绝对路径)"]
        match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }
      }
    }

     filter {
    grok {
        match => {"message"=>"%{IP:client_ip} - - [%{HTTPDATE:timestamp}] ":?%{WORD:http_verb} %{URIPATH:url_path} HTTP/%{NUMBER:http_version}" %{NUMBER:http_status} :?%{NUMBER:bytes}"},

        match => {"message"=>"%{IP:client_ip} - - [%{HTTPDATE:timestamp}] ":?%{WORD:http_verb} %{URIPATH:url_path} HTTP/%{NUMBER:http_version}" %{NUMBER:http_status} :?%{NUMBER:bytes}"},

        match => {"message"=>"%{IP:client_ip} - - [%{HTTPDATE:timestamp}] ":?%{WORD:http_verb} %{URIPATH:url_path} HTTP/%{NUMBER:http_version}" %{NUMBER:http_status} :?%{NUMBER:bytes}"}
      }
    }

    还有就是多规则的匹配,因为一个日志文件里的内容的格式不一定是一致的,这个时候我们就要多条匹配规则了,多条匹配规则之间用逗号隔开

  • 相关阅读:
    燃尽的一个不便之处修改
    jquery给元素添加样式表的方法
    http协议
    春节读书
    file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
    jQuery on(),live(),trigger()
    jquery ui中的dialog,官网上经典的例子
    问题:循环元素,被选中元素个数,全选
    3.5星|《小学问》:年轻人思维与婚恋常见误区解析
    正念疗法入门介绍,作者是日籍美国正念疗法医生:3星|《高效休息法》
  • 原文地址:https://www.cnblogs.com/smail-bao/p/5693554.html
Copyright © 2011-2022 走看看