标签: logstash-grok

logstash grok过滤烦恼

Thu Sep 27 15:30:27 BST 2012:- Invalid token $_POST[custom], which indicates the amount, userid

这是我正在尝试使用grok解析logstash的日志文件.

前几个字段还可以,它看起来非常接近DATESTAMP_OTHER,但我认为BST的英国时区搞砸了.

到目前为止,但不知道如何使它工作!

%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %([PMCEB][SD]T) %{YEAR} %{GREEDYDATA:message}

logstash logstash-grok

2
推荐指数
1
解决办法
8802
查看次数

如何为时间格式编写grok模式01/27/2015 09:32:44 AM

如何为时间格式写一个grok模式01/27/2015 09:32:44 AM我尝试了%{DATESTAMP:timestamp}但它没有接受AM,任何帮助都非常感谢.

logstash logstash-grok

2
推荐指数
1
解决办法
2886
查看次数

Logstash grok多次匹配失败

我有这些日志,我试图从每一行用grok提取多个信息.但似乎没有考虑到一些比赛,尽管它们对我来说似乎很好.

这是一个示例行:

"#wtb# GetSP ok. Referer:http://test.redacted.com/path?query=string. Wtb:535e2554bdfdf33a22f564d0. Name:Client. Eans:3017565410073."
Run Code Online (Sandbox Code Playgroud)

并且继承人'conf文件的相关部分:

grok{
  break_on_match => false
  match => [
    "msg", "Referer:%{URI:referer}\.",
    "msg", "Wtb:%{WORD:wtb}",
    "msg", "Name:(?<name>[^\.]+)",
    "msg", "Eans:(?<eans>[\d,]+)",
    "referer", "https?://%{HOSTNAME:host}"
  ]
  tag_on_failure => []
}
Run Code Online (Sandbox Code Playgroud)

我正在使用多个匹配,因为每行可以是样本中给出的各种参数的任意组合.
在Kibana,该事件具有refererhost添加字段,但所有的人失踪(wtb,name,eans).我不知道为什么.自添加最后一个模式后,它在成功匹配后不会停止.任何人都可以发现我错过的东西吗?

logstash logstash-grok

2
推荐指数
1
解决办法
2476
查看次数

如何以logstash grok模式转义反斜杠?

这是我的日志:

68.192.186.96 - - [18/May/2015:12:54:42 +0000] GET http://test.com/sectionId/592/apiVersion/2/type/json HTTP/1.1 200 575 \"-\" \"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36\" \"icon_seq=0; PHPSESSID=frmnhfrrc25ullikbv71thc283\"
Run Code Online (Sandbox Code Playgroud)

这是我的模式

%{IPORHOST:remoteip} \- \- \[%{HTTPDATE:timestamp}\] %{WORD:verb} %{NOTSPACE:request} HTTP/%{NUMBER:httpversion} %{NUMBER:status} %{NUMBER:requestNum} \"\-\" %{QUOTEDSTRING:agent}
Run Code Online (Sandbox Code Playgroud)

当我检查时,日志中的反斜杠给我带来了问题。我该如何逃脱?谢谢!

logstash logstash-grok

2
推荐指数
1
解决办法
8757
查看次数

Grok 模式解析 ESC 键

我正在编写一种gr​​ok 模式来解析cinder-apifluenced中的日志,其中一行是:

2015-09-17 17:44:49.663 ^[[00;32mDEBUG oslo_concurrency.lockutils [^[[00;36m-^[[00;32m] ^[[01;35m^[[00;32mAcquired semaphore "singleton_lock"^[[00m ^[[00;33mfrom (pid=30534) lock /usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:198^[[00m
Run Code Online (Sandbox Code Playgroud)

^[[00;32m其他此类事件是ASCII 颜色代码,在终端中打印时打印如下:

我需要解析该行,并且当没有使用(测试的)模式的 颜色代码时我能够做到这一点%{TIMESTAMP_ISO8601:timestamp}%{SPACE}%{LOGLEVEL:loglevel}%{SPACE}{NOTSPACE:api}%{SPACE}\[(?:%{DATA:request})\]%{SPACE}%{GREEDYDATA:message}

如何修改 grok 模式以便能够解析彩色日志行?

我发现以下内容是否可以帮助任何人找到解决方案:

  • ^[实际上是ESC键,八进制代码为\033,十六进制代码为\x1B,十进制 ASCII 代码为27 ,也用^[表示。
  • 有一个名为color-stripper的fluidd 插件具有相同的功能,但对我不起作用,也不适合我的用例。

regex ansi-escape grok fluentd logstash-grok

2
推荐指数
1
解决办法
2509
查看次数

使用正则表达式提取堆栈跟踪的最后'引起'

不幸的是,我还不是一个正则表达式专家,因此遇到以下问题:假设我有一个包含多个链式异常的Java堆栈跟踪,我想要达到的是提取以"由...引起"的最后一行.

javax.servlet.ServletException: Something bad happened
     at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
.
.
Caused by: com.example.myproject.MyProjectServletException
.
.
Caused by: This is the line I want to capture
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现Caused by.(?!.*Caused by)基于负向前瞻,在我删除了所有标签和空格后,给了我最后一个"由...引起"(但不是其余部分).有没有办法让我得到我想要的结果?如果必须删除所有空格,那对我来说没问题.谢谢!

编辑:对不起,我想我忘记了一些非常重要的事情.使用'substring'将是Java中的完美解决方案,但我需要的是一个正则表达式,我可以在Logstash中用于grok模式.

regex logstash logstash-grok

2
推荐指数
1
解决办法
975
查看次数

logstash grok TIMESTAMP_ISO8601类型?

我有一个简单的logstash grok过滤器:

filter {
  grok {
    match => { "message" => "^%{TIMESTAMP_ISO8601:timestamp} %{NOTSPACE:name} %{WORD:level} %{SPACE} %{GREEDYDATA:message}$" }
    overwrite => [ "message" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

这可行,它解析我的日志,但根据Kibana,时间戳值以数据类型输出string.

logstash @timestamp字段具有数据类型date.

grok文档说您可以指定数据类型转换,但只支持int和float:

如果您希望转换语义的数据类型,例如将字符串更改为整数,则使用目标数据类型将其后缀.例如%{NUMBER:num:int},它将num语义从字符串转换为整数.目前唯一支持的转换是int和float.

这表明我应该把它留作字符串,但是,如果索引支持datetime值,为什么你不希望它正确存储并可以作为日期时间进行排序?

logstash logstash-grok

2
推荐指数
1
解决办法
7095
查看次数

骗子不读连字符

这是我的骗子模式

2017年9月25日08:58:17,861 p = 14774 u = ec2用户| 14774 1506329897.86160:检查any_errors_fatal

我正在尝试读取用户,但是只给出ec2,没有给出完整的单词

抱歉,我是grok过滤器的新手

我目前的模式:

%{TIMESTAMP_ISO8601:timestamp} p =%{WORD:process_id} u =%{WORD:user_id}

电流输出

...
...
...
  "process_id": [
    [
      "14774"
    ]
  ],
  "user_id": [
    [
      "ec2"
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

elasticsearch logstash kibana logstash-grok

2
推荐指数
1
解决办法
2567
查看次数

logstash grok,用json过滤器解析一行

我正在使用 ELK(弹性搜索、kibana、logstash、filebeat)来收集日志。我有一个带有以下几行的日志文件,每一行都有一个 json,我的目标是使用 Logstash Grok 取出 json 中的键/值对并将其转发到弹性搜索。

2018-03-28 13:23:01  charge:{"oldbalance":5000,"managefee":0,"afterbalance":"5001","cardid":"123456789","txamt":1}

2018-03-28 13:23:01  manage:{"cuurentValue":5000,"payment":0,"newbalance":"5001","posid":"123456789","something":"new2","additionalFields":1}
Run Code Online (Sandbox Code Playgroud)

我正在使用Grok Debugger制作正则表达式模式并查看结果。我目前的正则表达式是:

%{TIMESTAMP_ISO8601} %{SPACE} %{WORD:$:data}:{%{QUOTEDSTRING:key1}:%{BASE10NUM:value1}[,}]%{QUOTEDSTRING:key2}:%{BASE10NUM:value2}[,}]%{QUOTEDSTRING:key3}:%{QUOTEDSTRING:value3}[,}]%{QUOTEDSTRING:key4}:%{QUOTEDSTRING:value4}[,}]%{QUOTEDSTRING:key5}:%{BASE10NUM:value5}[,}]
Run Code Online (Sandbox Code Playgroud)

正如人们所见,它是硬编码的,因为真实日志中 json 中的键可以是任何单词,值可以是整数、双精度或字符串,而且键的长度各不相同。所以我的解决方案是不可接受的。我的解决结果如下图,仅供参考。我正在使用Grok 模式

我的问题是,尝试在 json 中提取键是否明智,因为弹性搜索也使用 json?其次,如果我尝试从 json 中取出键/值,是否有正确、简洁的 Grok 模式?

解析上述行中的第一行时,Grok 模式的当前结果给出以下输出。

{
  "TIMESTAMP_ISO8601": [
    [
      "2018-03-28 13:23:01"
    ]
  ],
  "YEAR": [
    [
      "2018"
    ]
  ],
  "MONTHNUM": [
    [
      "03"
    ]
  ],
  "MONTHDAY": [
    [
      "28"
    ]
  ],
  "HOUR": [
    [
      "13",
      null
    ]
  ],
  "MINUTE": [
    [
      "23",
      null
    ]
  ],
  "SECOND": [
    [ …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok elastic-stack

2
推荐指数
1
解决办法
7517
查看次数

在 Logstash 过滤器中拥有多个 grok 模式的正确方法是什么?

这两个选项的有效 logstash 配置是什么?

else if [pipeline] == "tomcat_all" {
  grok {
    match => [ "message", "%{MONTH}%{SPACE}%{MONTHDAY},%{SPACE}%{YEAR}%{SPACE}%{HOUR}:?%{MINUTE}(?::?%{SECOND})%{SPACE}(?:AM|PM)%{SPACE}%{NOTSPACE:class}%{SPACE}%{NOTSPACE:type_log}%{SPACE}%{WORD:loglevel}:%{SPACE}%{GREEDYDATA:log_text}" ]
    match => [ "message", "%{TIME:timestamp}%{SPACE}\|-%{WORD:loglevel}%{SPACE}in%{SPACE}%{NOTSPACE:class}%{SPACE}%{GREEDYDATA:log_text}" ]

...

else if [pipeline] == "123" {
  grok {
    match => [ "message", "%{MONTH}%{SPACE}%{MONTHDAY},%{SPACE}%{YEAR}%{SPACE}%{HOUR}:?%{MINUTE}(?::?%{SECOND})%{SPACE}(?:AM|PM)%{SPACE}%{NOTSPACE:class}%{SPACE}%{NOTSPACE:type_log}%{SPACE}%{WORD:loglevel}:%{SPACE}%{GREEDYDATA:log_text}" ]
  }
  grok {
    match => [ "message", "%{TIME:timestamp}%{SPACE}\|-%{WORD:loglevel}%{SPACE}in%{SPACE}%{NOTSPACE:class}%{SPACE}%{GREEDYDATA:log_text}" ]
  }
Run Code Online (Sandbox Code Playgroud)

Logstash 似乎在两种配置下都可以正常启动并且没有报告错误,但是对于多个 grok 模式,grok 解析还不能正常工作。

logstash logstash-grok

2
推荐指数
1
解决办法
6754
查看次数