热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

grok官方文档

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http:blog.csdn.netjiangjunshow也欢迎大家转载本篇文章。分

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!


<pre name="code" class="html">grok:解析任意文本并构造它:Grok 是当前最好的方式在logstash 解析蹩脚的非结构化日志数据 到一些结构化的可查询的。这个工具是完美的对于syslog logs, apache和其他webserver logs,mysqllogs,在一般情况下,任何日志格式通常对于人是友好的而不是对于电脑Logstash 有120种模式默认,你可以找到它们在:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns. Grok Basics:Grok 通过结合文本模式来匹配你的日志语法对于一个grok 是 %{SYNTAX:SEMANTIC}语法是 模式的名字会匹配你的文本,比如,3.44 会通过NUMBER 模式匹配和55.3.244.1 通过IP模式匹配。语法是你如何匹配:SEMANTIC (语义)是标识 你给到一块文本被匹配。比如,3.44 可能是一个一个事件的持续事件,因此你可以简单的调用它。此外, 一个字符串 55.3.244.1 可能识别客户端发出的请求。在上述例子中,你的grok filter 可以看起来像这样:%{NUMBER:duration} %{IP:client}你可以添加一个数据类型转换成你的grok 模式。默认的 所有的语义都保存作为字符串.如果你希望 转换一个语义的数据类型,比如改变一个字符串为一个整型 然后将其后缀为目标数据类型。比如  %{NUMBER:num:int}  会转换num语义从一个字符串到一个整型,当前只支持转换是int和float例子: 这个质疑的语法和语义,我们可以把有用的字段从一个简单的日志像这个虚构的http 请求日志:55.3.244.1 GET /index.html 15824 0.043匹配模式:%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}{  "client": [    "55.3.244.1"  ],  "method": [    "GET"  ],  "request": [    "/index.html"  ],  "bytes": [    "15824"  ],  "duration": [    "0.043"  ]}正则表达式:Grok 坐在正则表达式之上,因此很多的正则表达式也是正确的在grok里。正则表达式库是Oniguruma,你可以看到完整的支持的正则表达式的语言在Oniguruma 网站自定义 模式:有时候logstash没有你需要的模式,你有几个选项:第一,你可以使用Oniguruma 语法用于命名捕获 让你匹配一个文件的片段,保存作为字段(?<field_name>the pattern here)/********55.3.244.1 GET /index.html 15824 0.043(?<field_name>\S+)输出:{  "field_name": [    "55.3.244.1"  ]}(?<field_name>\S+\s+)输出:多了个空格{  "field_name": [    "55.3.244.1 "  ]}(?<field_name>\S+\s+\S+)输出:{  "field_name": [    "55.3.244.1 GET"  ]}例如, 后缀日志有一个队列id 是10或者11 个16进制字符,你可以捕获像这样:(?<queue_id>[0-9A-F]{10,11})d4111111112表达式:(?<queue_id>[0-9A-F]{10,11})输出:{  "queue_id": [    "4111111112"  ]}或者,你也可以创建一个自定义模式的文件:创建一个目录叫做patterns 里面有个文件叫做extra(文件名不重要,但是名字得对你有意义)在这个文件中,写pattern 你需要的作为pattern名字,一个空格,然后正则用于哪个模式例如: 后缀队列id例子:# contents of ./patterns/postfix:POSTFIX_QUEUEID [0-9A-F]{10,11}Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>filter {  grok {    patterns_dir => ["./patterns"]    match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }  }}上面的会被匹配,结果是下面的字段:timestamp: Jan 1 06:25:43logsource: mailserver14program: postfix/cleanuppid: 21403queue_id: BEF25A72965syslog_message: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>timestamp, logsource, program, 和pid 来自SYSLOGBASE  模式本身定义了一些模式/*******************zjtest7-frontend:/usr/local/logstash-2.3.4/config# pwd/usr/local/logstash-2.3.4/configzjtest7-frontend:/usr/local/logstash-2.3.4/config# ls -lr patterns/total 4-rw-r--r-- 1 root root 32 Aug 30 13:33 postfixzjtest7-frontend:/usr/local/logstash-2.3.4/config/patterns# cat postfix POSTFIX_QUEUEID [0-9A-F]{10,11}zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat stdin.conf input {  stdin {     }} filter {  grok {    patterns_dir => ["./patterns"]    match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }  }}output { stdout {  codec=>rubydebug{}   } }zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f stdin.conf Settings: Default pipeline workers: 1Pipeline main startedJan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>{           "message" => "Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",          "@version" => "1",        "@timestamp" => "2016-08-30T05:34:11.849Z",              "host" => "0.0.0.0",         "timestamp" => "Jan  1 06:25:43",         "logsource" => "mailserver14",           "program" => "postfix/cleanup",               "pid" => "21403",          "queue_id" => "BEF25A72965",    "syslog_message" => "message-id=<20130101142543.5828399CCAF@mailserver14.example.com>"}简介:插件支持下面的配置选项:需要的配置选项:grok {  }细节:add_field1.值类型是hash2. 默认值是{}如果 filter 是成功的,增加任何属性字段到这个事件,Field名字可以动态的和包含event部分使用%{field}.filter {  grok {     add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }    patterns_dir => ["./patterns"]    match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }  }}输出;zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f stdin.conf Settings: Default pipeline workers: 1Pipeline main startedJan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>{             "message" => "Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",            "@version" => "1",          "@timestamp" => "2016-08-30T05:44:35.071Z",                "host" => "0.0.0.0",           "timestamp" => "Jan  1 06:25:43",           "logsource" => "mailserver14",             "program" => "postfix/cleanup",                 "pid" => "21403",            "queue_id" => "BEF25A72965",      "syslog_message" => "message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",    "foo_%{somefield}" => "Hello world, from 0.0.0.0"}##你可以一次增加多个字段:filter {  grok {     add_field => { "foo_%{somefield}" => "Hello world, from %{host}"      "new_field" => "new_static_value"               }    patterns_dir => ["./patterns"]    match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }  }}输出;zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f stdin.conf Settings: Default pipeline workers: 1Pipeline main startedJan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>{             "message" => "Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",            "@version" => "1",          "@timestamp" => "2016-08-30T05:46:37.029Z",                "host" => "0.0.0.0",           "timestamp" => "Jan  1 06:25:43",           "logsource" => "mailserver14",             "program" => "postfix/cleanup",                 "pid" => "21403",            "queue_id" => "BEF25A72965",      "syslog_message" => "message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",    "foo_%{somefield}" => "Hello world, from 0.0.0.0",           "new_field" => "new_static_value"add_tag1.值类型是array2.默认是[]如果filter 成功,增加任意的tags 到这个事件。Tags 可以动态的包含事件的部分使用%{field} syntax.filter {  grok {    add_tag => [ "foo_%{somefield}" ]  }}# You can also add multiple tags at once:filter {  grok {    add_tag => [ "foo_%{somefield}", "taggedy_tag"]  }}zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f stdin.conf Settings: Default pipeline workers: 1Pipeline main startedJan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>{             "message" => "Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",            "@version" => "1",          "@timestamp" => "2016-08-30T05:50:18.451Z",                "host" => "0.0.0.0",           "timestamp" => "Jan  1 06:25:43",           "logsource" => "mailserver14",             "program" => "postfix/cleanup",                 "pid" => "21403",            "queue_id" => "BEF25A72965",      "syslog_message" => "message-id=<20130101142543.5828399CCAF@mailserver14.example.com>",    "foo_%{somefield}" => "Hello world, from 0.0.0.0",           "new_field" => "new_static_value",                "tags" => [        [0] "foo_%{somefield}"    ]}break_on_match1.值类型是波尔型2.默认值是trueBreak 在第一个匹配,第一次成功匹配通过grok 会导致filter 被完成。如果你需要grok 尝试所有的patterns(可能解析不同的东西),设置这个为falsematch:1.值类型是hash2.默认是{}filter {  grok { match => { "message" => "Duration: %{NUMBER:duration}" } }}

           



给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow


这里写图片描述

推荐阅读
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
    本文介绍了达人评测酷睿i5 12450h和锐龙r7 5800h选哪个好的相关知识,包括两者的基本配置和重要考虑点。希望对你在选择时提供一定的参考价值。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
author-avatar
45仰望易_332
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有