• logstash grok


    grokedit
    Version: 3.3.1
    Released on: 2016-12-26
    Changelog
    
    
    解析任意文本并构造它:
    
    
    Grok 是当前 最好的方式在logstash 来解析非结构化日志数据到一些结构化和可查询的
    
    
    这个工具对于syslog logs是完美的, apache和其他webserver日志,mysqllogs 和通常的,
    
    
    任何日志格式是对人可读的
    
    Grok 基础:
    
    Grok 通过结合文本模式来匹配你的日志
    
    
    
    grok 模式是  %{SYNTAX:SEMANTIC}
    
    
    语法是 模式的名字 会匹配你的文本,比如,3.44 通过NUMBER 模式来匹配
    
    55.3.244.1 会通过一个IP模式匹配
    
    语义是识别你给定的一个被匹配的文本片段。
    
    比如,3.44 可以是一个事件的持续事件,这样你可以称为它一个简单的持续事件
    
    此外,一个字符串55.3.244.1 可能客户端发出的请求
    
    
    在上述的例子中,你获得的过滤器是这个样子:
    
    %{NUMBER:duration} %{IP:client}
    
    
    你可以增加一个数据类型转换到你的Grok 模式。
    
    
    默认 所有的语义都保存为字符串。
    
    如果你希望转一个语义的数据类型,比如改变一个字符串为一个整型 然后 在后面为目标数据类型。
    
    
    比如 %{NUMBER:num:int}  转换num语义从一个字符串为一个整型。
    
    
    例子:
    
    55.3.244.1 GET /index.html 15824 0.043
    
    The pattern for this could be:
    
    %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}
    
    更现实的例子,让我们从文件读取这些日志:
    
    input {
      file {
        path => "/var/log/http.log"
      }
    }
    filter {
      grok {
        match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
      }
    }
    
    
    正则表达式:
    
    Grok 基于正则表达式,因此任何正则表达式是正确的在grok里。
    
    正则表达式库是 Oniguruma
    
    Custom Patterns
    
    自定义模式:
    
    
    有时候 logstash 没有你需要的模式,为此,你有一些选项:
    
    
    1.你可以使用Oniguruma 语法用于捕获让你匹配的文本部分 保存它作为一个字段:
    
    (?<field_name>the pattern here)
    
    
    比如,后缀日志有一个队列id 是10或者11字符的十六进制,你可以像这样轻易的捕获:
    
    
    (?<queue_id>[0-9A-F]{10,11})
    
    或者,你可以创建自定义模式文件:
    
    
    创建一个目录 名为pattern 里面文件称为额外的(文件名不重要,但命名得有意义)
    
    
    在该文件,写下你需要的模式
    
    
    简介:
    
    详情:
    
    add_field
    
    如果第一个filter是成功的,增加另外的任意的字段到这个事件。
    
    字段名字可以是动态的包含事件的部分 使用 %{field}.
    
    
    Example:
    
    filter {
      grok {
        add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
      }
    }
    # You can also add multiple fields at once:
    filter {
      grok {
        add_field => {
          "foo_%{somefield}" => "Hello world, from %{host}"
          "new_field" => "new_static_value"
        }
      }
    }
    
    
    
    如果event 有字段  "somefield" == "hello"  这个过滤器,成功,会增加字段foo_hello 如果它是存在的,
    
    add_tag
    
    
    如果这个过滤器成功,增加任意的tags到这个事件。Tag 可以是动态的
    
    包含事件的部分 使用%{field} syntax.
    
    
    Example:
    
    filter {
      grok {
        add_tag => [ "foo_%{somefield}" ]
      }
    }
    # You can also add multiple tags at once:
    filter {
      grok {
        add_tag => [ "foo_%{somefield}", "taggedy_tag"]
      }
    }
    
    break_on_match:
    
    
    在第一次匹配后终止,第一次成功匹配通过grok 会导致filter 完成。
    
    如果你需要grok 尝试所有的模式,设置为false
    

  • 相关阅读:
    workflow里xaml格式(备忘)
    Excel 读取
    自定义工作流活动的外观的两种方式(补充)
    用SQLite,Enterprise的报错
    WF 4.0
    升级 90天 vs2008 在win2008下。
    NUnitLite web下的用法
    screen常用方法 Lei
    中文摘要的写法 Lei
    bootstrap, boosting, bagging 几种方法的联系 Lei
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349866.html
Copyright © 2020-2023  润新知