标签: logstash-grok

如何使用Java中的Grok进行解析..有没有可用的示例.?

我看到Grok在解析日志数据时非常强大和致命.我想在我们的应用程序中使用Grok进行日志解析,这是在java中.我如何从Java连接/使用Grok.

parsing logstash-grok

6
推荐指数
1
解决办法
5191
查看次数

Logstash Grok过滤器Apache访问日志

我一直在那里四处寻找,但找不到工作决议.我尝试在Logstash配置文件中使用Grok Filter来过滤Apache-Access日志文件.日志消息如下所示:{"message":"00.00.0.000 - - [dd/mm/YYYY:hh:mm:ii +0000] \"GET /index.html HTTP/1.1\" 200 00"}.

在这一刻,我只能通过使用过滤客户端IP grok { match => [ "message", "%{IP:client_ip}" ] }.

我想过滤:

- The GET method, 
- requested page (index.html), 
- HTTP/1.1\, 
- server response 200
- the last number 00 after 200 inside the message body
Run Code Online (Sandbox Code Playgroud)

请注意,这些都不适合我:

grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } 
Run Code Online (Sandbox Code Playgroud)

要么

grok { match => [ "message", "%{COMBINEDAPACHELOG}" ] }
Run Code Online (Sandbox Code Playgroud)

filter logstash logstash-grok

6
推荐指数
2
解决办法
4万
查看次数

在完全使用之前调试新的logstash grok过滤器

我一直在关注本指南:

http://deviantony.wordpress.com/2014/06/04/logstash-debug-configuration/

我希望能帮助我测试我的logstash过滤器,看看我是否在全职使用之前得到了所需的输出.

作为指南的一部分,它告诉您设置输入和输出,然后设置过滤器文件.输入似乎工作正常:

input {
    stdin { }
}
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

output {
    stdout {
        codec => json
    }
    file {
        codec => json
        path => /tmp/debug-filters.json
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行logstash进程时,我收到以下错误(这里我用--configtest运行它,因为错误建议我尝试一下,但它不提供任何更多信息):

# /opt/logstash/bin/logstash -f /etc/logstash/debug.d -l /var/log/logstash/logstash-debug.log --configtest

Sending logstash logs to /var/log/logstash/logstash-debug.log.
Error: Expected one of #, ", ', -, [, { at line 21, column 17 (byte 288) after output {
    stdout {
        codec => json
    }
    file {
        codec => json
        path =>
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除输出中的文件部分,我可以运行logstash进程,但是当我将日志行粘贴到shell时,我没有看到日志条目分解为我希望grok过滤器的组件打破它.我这样做的全部是:

Oct 30 08:57:01 VERBOSE[1447] …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok

6
推荐指数
2
解决办法
2万
查看次数

是否需要有关使用非捕获组的Grok模式的信息(?:)

我了解使用捕获组和非捕获组编写正则表达式的概念。

例如:

a(b|c)会匹配并捕获abac

a(?:b|c)将匹配abac但捕获一个

但是,当我制作一个新的自定义grok模式时,它有什么用?使用非捕获组又意味着什么?

在下面的HOUR中查看一些现有的grok模式:

HOUR (?:2[0123]|[01]?[0-9])
Run Code Online (Sandbox Code Playgroud)

在这里,我们还可以使用匹配小时格式(2[0123]|[01]?[0-9])。是什么使grok模式在这里使用非捕获表达式?我应该基于什么参数决定使用此参数(?:subex)

regex logstash-grok

6
推荐指数
1
解决办法
1811
查看次数

使用不区分大小写的Logstash过滤器

如何将此Logstash过滤器更改为不区分大小写?

filter {
  if "foo" in [message] {
    mutate { add_field => { "Alert_level" => "5" }}
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法按https://github.com/elastic/logstash/pull/3636所示工作

logstash logstash-grok logstash-configuration

6
推荐指数
1
解决办法
2410
查看次数

Grok模式用于日志文件中不同类型的日志

我正在尝试为我的日志文件编写grok模式,该日志文件有三种不同类型的日志,我想在类型名称(TYPE1,TYPE2,TYPE3)上放置一个过滤器,然后为这一个日志文件写入三种不同的grok模式.此外,我的日志文件是一个csv分隔文件.

日志文件:
TYPE1,word,word,word,num
TYPE2,word,word,word,word
TYPE3,num,word,num,word

这是我到目前为止所尝试的:

filter {
if [message] =~ /TYPE1/ {
grok {
    match => [ "message", "%{WORD:type},%{WORD:a1"},%{WORD:a2"},%{WORD:a3"},%{POSINT:a4"}]
     }
   }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用.另外,在这个配置文件中,我为其他文件(运行良好)编写了grok模式,如:

filter {
    if [type] == "sometype1" or [type] == "sometype2" {
    grok {
    match => [ "message",  "%{POSINT:moduleid}%{SPACE}%{NUMBER:date}"]
         }
      }
   }
Run Code Online (Sandbox Code Playgroud)

并且给我问题的日志文件有type = sometype3,我没有在任何地方提到过.

谢谢

logstash logstash-grok

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

将日期格式从YYYY/MM/DD转换为YYYY-MM-DD HH:MM:SS格式在Logstash中用于nginx错误日志

我有以下形式的nginx错误日志: -

2015/09/30 22:19:38 [错误] 32317#0:*23 [lua] responses.lua:61:handler():Cassandra错误:UNIQUE检查错误:Cassandra错误:连接被拒绝,客户端:127.0. 0.1,server :, request:"POST/consumers/HTTP/1.1",host:"localhost:8001"

如上所述,我能够解析这些日志.

我的过滤器配置如下: -

filter {  
  grok {
      match => {
        "message" => [
          "%{DATESTAMP:mydate} \[%{DATA:severity}\] (%{NUMBER:pid:int}#%{NUMBER}: \*%{NUMBER}|\*%{NUMBER}) %{GREEDYDATA:mymessage}",
          "%{DATESTAMP:mydate} \[%{DATA:severity}\] %{GREEDYDATA:mymessage}",
          "%{DATESTAMP:mydate} %{GREEDYDATA:mymessage}"
        ]
      }
      add_tag => ["nginx_error_pattern"]
    }

    if ("nginx_error_pattern" in [tags]) {      
      grok {
        match => {
          "mymessage" => [
            "server: %{DATA:[request_server]},"
          ]
        }        
      }

      grok {
        match => {
          "mymessage" => [
            "host: \"%{IPORHOST:[request_host]}:%{NUMBER:[port]}\""
          ]
        }        
      }

      grok {
        match => {
          "mymessage" => …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok logstash-configuration

5
推荐指数
1
解决办法
1万
查看次数

Logstash太空领域的grok模式

嗨如何为下面的日志写一个grok表达式

[2017-03-25T00:00:07,137][WARN ]

match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}/]/[%{LOGLEVEL:log-level}\s*\]" }
Run Code Online (Sandbox Code Playgroud)

这是正确的,如何在grok中写空间?谢谢

logstash-grok

5
推荐指数
1
解决办法
1万
查看次数

编写grok模式来分割键值对

这是我第一次使用 grok 和 elasticsearch。我正在尝试编写一个 grok 文件来解析以下行。

2017-07-25 10:48:23,477 [[api-my-app-v1-20.0.0].apiHttpListenerConfig.worker.58] INFO  esb.api-my-app-v1.get-blah.http.response - transactionID=f61b8053-70d2-11e7-b274-3639cc5335d0 creationTime=2017-07-25T10:48:23.254+10:00 txnState=END timeTaken=11
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经写了这个 grok...

%{TIMESTAMP_ISO8601:timestamp}\s+%{DATA:thread}\s+%{LOGLEVEL:loglevel}\s+%{JAVACLASS:category}\s+-\s+%{GREEDYDATA:msgbody}
Run Code Online (Sandbox Code Playgroud)

它给了我这个......

{
  "timestamp": [
    [
      "2017-07-25 10:48:23,477"
    ]
  ],
  "YEAR": [
    [
      "2017"
    ]
  ],
  "MONTHNUM": [
    [
      "07"
    ]
  ],
  "MONTHDAY": [
    [
      "25"
    ]
  ],
  "HOUR": [
    [
      "10",
      null
    ]
  ],
  "MINUTE": [
    [
      "48",
      null
    ]
  ],
  "SECOND": [
    [
      "23,477"
    ]
  ],
  "ISO8601_TIMEZONE": [
    [
      null
    ]
  ],
  "thread": [
    [
      "[[api-my-app-v1-20.0.0].apiHttpListenerConfig.worker.58]"
    ]
  ],
  "loglevel": [ …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok

5
推荐指数
1
解决办法
6447
查看次数

如何使具有自定义分类器的 AWS Glue 爬网程序跳过日志文件的第一行?

我是胶水新手,我正在尝试让爬虫功能从一些日志文件中提取数据库表。问题是文件的第一行不同。我定义了一个自定义 Grok 分类器,只要删除第一行,它就可以正常工作,但是当我使用原始日志文件时,它会停止工作并使用默认的粘合分类器(这显然对我不起作用)。我尝试将 'skip.header.line.count'=1 添加到表属性(并将爬网程序设置为不更新架构),但这也不起作用。有没有办法在 grok 模式中写“跳过第一行”?

amazon-web-services logstash-grok aws-glue aws-glue-data-catalog

5
推荐指数
0
解决办法
572
查看次数