1. http://xiaorui.cc/2015/01/27/logstash%E4%BD%BF%E7%94%A8grok%E6%AD%A3%E5%88%99%E8%A7%A3%E6%9E%90%E6%97%A5%E5%BF%97%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/
  2. http://grokdebug.herokuapp.com/
  3. demo:http://www.tuicool.com/articles/M7ryEv
  4. Logstash 最佳实践:http://udn.yyuap.com/doc/logstash-best-practice-cn/filter/grok.html
  5. logstash filter 语法:
  6. Example
  7.  
  8. 下面是日志的样子
  9. 55.3.244.1 GET /index.html 15824 0.043
  10.  
  11. 正则的例子
  12. %{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}
  13.  
  14. 配置文件里是怎么写得?
  15.  
  16. input {
  17. file {
  18. path => “/var/log/http.log
  19. }
  20. }
  21. filter {
  22. grok {
  23. match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ]
  24. }
  25. }
  26.  
  27. 解析后,是个什么样子?
  28.  
  29. client: 55.3.244.1
  30. method: GET
  31. request: /index.html
  32. bytes: 15824
  33. duration: 0.043
  34.  
  35. 自定义正则
  36.  
  37. (?<field_name>the pattern here)
  38.  
  39. (?<queue_id>[0-9A-F]{10,11})
  40.  
  41. 当然你也可以把众多的正则,放在一个集中文件里面。
  42. # in ./patterns/postfix
  43. POSTFIX_QUEUEID [0-9A-F]{10,11}
  44.  
  45. filter {
  46. grok {
  47. patterns_dir => “./patterns
  48. match => [ "message", "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" ]
  49. }
  50. }
  51.  
  52. ############
  53.  
  54. logstash已经自带了不少的正则,如果想偷懒的话,可以在内置正则里借用下。
  55.  
  56. USERNAME [a-zA-Z0-9._-]+
  57. USER %{USERNAME}
  58. INT (?:[+-]?(?:[0-9]+))
  59. BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
  60. NUMBER (?:%{BASE10NUM})
  61. BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
  62. BASE16FLOAT \b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\b
  63.  
  64. POSINT \b(?:[1-9][0-9]*)\b
  65. NONNEGINT \b(?:[0-9]+)\b
  66. WORD \b\w+\b
  67. NOTSPACE \S+
  68. SPACE \s*
  69. DATA .*?
  70. GREEDYDATA .*
  71. QUOTEDSTRING (?>(?<!\\)(?>”(?>\\.|[^\\"]+)+”|”"|(?>’(?>\\.|[^\\']+)+’)|”|(?>(?>\\.|[^\]+)+)|`))
  72. UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
  73.  
  74. # Networking
  75. MAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})
  76. CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
  77. WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
  78. COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
  79. IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
  80. IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
  81. IP (?:%{IPV6}|%{IPV4})
  82. HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
  83. HOST %{HOSTNAME}
  84. IPORHOST (?:%{HOSTNAME}|%{IP})
  85. HOSTPORT (?:%{IPORHOST=~/\./}:%{POSINT})
  86.  
  87. # paths
  88. PATH (?:%{UNIXPATH}|%{WINPATH})
  89. UNIXPATH (?>/(?>[\w_%!$@:.,-]+|\\.)*)+
  90. TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
  91. WINPATH (?>[A-Za-z]+:|\\)(?:\
  92. ^\\?*]*)+
  93. URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
  94. URIHOST %{IPORHOST}(?::%{POSINT:port})?
  95. # uripath comes loosely from RFC1738, but mostly from what Firefox
  96. # doesn’t turn into %XX
  97. URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_\-]*)+
  98. #URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?
  99. URIPARAM \?[A-Za-z0-9$.+!*’|(){},~@#%&/=:;_?\-\[
  100. ]*
  101. URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
  102. URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
  103.  
  104. # Months: January, Feb, 3, 03, 12, December
  105. MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b
  106. MONTHNUM (?:0?[1-9]|1[0-2])
  107. MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
  108.  
  109. # Days: Monday, Tue, Thu, etc…
  110. DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)
  111.  
  112. # Years?
  113. YEAR (?>\d\d){1,2}
  114. HOUR (?:2[0123]|[01]?[0-9])
  115. MINUTE (?:[0-5][0-9])
  116. # ’60′ is a leap second in most time standards and thus is valid.
  117. SECOND (?:(?:[0-5][0-9]|60)(?:[:.,][0-9]+)?)
  118. TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
  119. # datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)
  120. DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
  121. DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
  122. ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
  123. ISO8601_SECOND (?:%{SECOND}|60)
  124. TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
  125. DATE %{DATE_US}|%{DATE_EU}
  126. DATESTAMP %{DATE}[- ]%{TIME}
  127. TZ (?:[PMCE][SD]T|UTC)
  128. DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
  129. DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
  130.  
  131. # Syslog Dates: Month Day HH:MM:SS
  132. SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
  133. PROG (?:[\w._/%-]+)
  134. SYSLOGPROG %{PROG:program}(?:
  135. )?
  136. SYSLOGHOST %{IPORHOST}
  137. SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
  138. HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
  139.  
  140. # Shortcuts
  141. QS %{QUOTEDSTRING}
  142.  
  143. # Log formats
  144. SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
  145. COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth}
  146. “(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})” %{NUMBER:response} (?:%{NUMBER:bytes}|-)
  147. COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
  148.  
  149. # Log Levels
  150. LOGLEVEL ([A-a]lert|ALERT|[T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)
  151.  
  152. Logstash 最佳实践
  153. http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html
  154. https://www.gitbook.com/book/chenryn/kibana-guide-cn
  155. 配置示例
  156.  
  157. input{
  158. file {
  159. path => ["/var/log/*.log", "/var/log/message"]
  160. type => "system"
  161. start_position => "beginning"
  162. }
  163. }
  164. 解释
  165. 有一些比较有用的配置项,可以用来指定 FileWatch 库的行为:
  166. discover_interval
  167. logstash 每隔多久去检查一次被监听的 path 下是否有新文件。默认值是 15 秒。
  168. exclude
  169. 不想被监听的文件可以排除出去,这里跟 path 一样支持 glob 展开。
  170. sincedb_path
  171. 如果你不想用默认的 $HOME/.sincedb(Windows 平台上在C:\Windows\System32\config\systemprofile\.sincedb),可以通过这个配置定义 sincedb 文件到其他位置。
  172. sincedb_write_interval
  173. logstash 每隔多久写一次 sincedb 文件,默认是 15 秒。
  174. stat_interval
  175. logstash 每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒。
  176. start_position
  177. logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 "beginning"logstash 进程就从头开始读取,有点类似cat,但是读到最后一行不会终止,而是继续变成 tail -F

logstash 使用grok正则解析日志的更多相关文章

  1. grok 正则解析日志例子<1>

    <pre name="code" class="html">下面是日志的样子 55.3.244.1 GET /index.html 15824 0. ...

  2. 使用logstash的grok插件解析springboot日志

    使用logstash的grok插件解析springboot日志 一.背景 二.解决思路 三.前置知识 四.实现步骤 1.准备测试数据 2.编写`grok`表达式 3.编写 logstash pipel ...

  3. Logstash使用grok插件解析Nginx日志

    grok表达式的打印复制格式的完整语法是下面这样的: %{PATTERN_NAME:capture_name:data_type}data_type 目前只支持两个值:int 和 float. 在线g ...

  4. Logstash使用grok过滤nginx日志(二)

    在生产环境中,nginx日志格式往往使用的是自定义的格式,我们需要把logstash中的message结构化后再存储,方便kibana的搜索和统计,因此需要对message进行解析. 本文采用grok ...

  5. logstash的grok正则匹配规则文件

    文件路径:logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns/grok-patterns 在线调试g ...

  6. Logstash收集nginx日志之使用grok过滤插件解析日志

    grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [ ...

  7. Logstash使用grok解析IIS日志

    Logstash使用grok解析IIS日志 1. 安装配置 安装Logstash前请确认Elasticsearch已经安装正确,参见RedHat6.4安装Elasticsearch5.2.0. 下载链 ...

  8. 使用Hive的正则解析器RegexSerDe分析nginx日志

    1.环境: hadoop-2.6.0 + apache-hive-1.2.0-bin 2.使用Hive分析nginx日志,站点的訪问日志部分内容为: cat /home/hadoop/hivetest ...

  9. ELK logstash 处理MySQL慢查询日志

    在生产环境下,logstash 经常会遇到处理多种格式的日志,不同的日志格式,解析方法不同.下面来说说logstash处理多行日志的例子,对MySQL慢查询日志进行分析,这个经常遇到过,网络上疑问也很 ...

随机推荐

  1. 二维码识别:Halcon与C++中多字节环境下的字节编码格式设置和转换

    Halcon环境下可通过设置set_system(‘filename_encoding’, ‘utf8’),可以将二维码的识别结果解析出汉字. VS环境下则需要将utf8转换成gbk格式.代码如下: ...

  2. Keil C51 中指针的使用

    指针是C语言中比较难的一个内容,Keil C51在指针方面有和标准C不一样的地方,今天看了一些资料学习了一下Keil C51 中指针的使用. keil51的指针,包含两种指针:普通指针,兼容标准C:内 ...

  3. C# DES_AES_MD5_加密_解密

    一.DES加解密 DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章, ...

  4. javaWeb Cache技术――OSCache(转-全)

    什么是osCache? 它是:http://baike.baidu.com/view/1835163.htm?fr=aladdin OSCache使用指南 一.下载安装 OSCache是一个基于web ...

  5. UESTC_秋实大哥搞算数 2015 UESTC Training for Data Structures<Problem N>

    N - 秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  6. Add Digits 解答

    Question Given a non-negative integer num, repeatedly add all its digits until the result has only o ...

  7. PHP 表单验证 - 完成表单实例

    ------------------------------------------------------------------------------------------- 本节展示如何在用 ...

  8. SHDP--Working With HBase(一)之基本介绍

    最近在做web项目使用到了Hadoop,HBase,在这里对Spring For Hadoop(SHDP)的使用做个总结,主要使用了SHDP中提供的一些封装好的HBase模块. Spring For ...

  9. ArcSDE for Oracle表空间管理——暂时(TEMP)表空间

    Oracle暂时表空间主要用来做查询和存放一些缓冲区数据.暂时表空间消耗的主要原因是须要对查询的中间结果进行排序. 重新启动数据库能够释放暂时表空间,假设不能重新启动实例,而一直保持问题sql语句的运 ...

  10. Splay POJ3468(老题新做)

    A Simple Problem with Integers Time Limit:5000MS     Memory Limit:131072KB     64bit IO Format:%I64d ...