标签: logstash-grok

如何使用仅给出索引的正则表达式提取子字符串?

有什么方法可以提取字符串/句子的一部分,仅给出子字符串的起始位置和结束位置的起始索引和终止索引?例如:“这是一个例子00001。等等。” 我需要使用正则表达式从位置 10 到 15(即示例)获取子字符串。

regex logstash-grok

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

Logstash grok 过滤器不适用于最后一个字段

在 Logstash 2.3.3 中,grok 过滤器不适用于最后一个字段。

要重现该问题,请创建test.conf如下:

input {
  file {
    path => "/Users/izeye/Applications/logstash-2.3.3/test.log"
  }
}

filter {
  grok {
    match => { "message" => "%{DATA:id1},%{DATA:id2},%{DATA:id3},%{DATA:id4},%{DATA:id5}" }
  }
}

output {
  stdout {
    codec => rubydebug
  }
}
Run Code Online (Sandbox Code Playgroud)

跑步./bin/logstash -f test.conf

启动后,在另一个终端运行echo "1,2,3,4,5" >> test.log

我得到以下输出:

Johnnyui-MacBook-Pro:logstash-2.3.3 izeye$ ./bin/logstash -f test.conf 
Settings: Default pipeline workers: 8
Pipeline main started
{
       "message" => "1,2,3,4,5",
      "@version" => "1",
    "@timestamp" => "2016-07-07T07:57:42.830Z",
          "path" => "/Users/izeye/Applications/logstash-2.3.3/test.log",
          "host" => "Johnnyui-MacBook-Pro.local",
           "id1" => …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok

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

编写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
查看次数

使用Grok Debugger测试Logstash过滤器是否存在Apache错误

我试图理解使用grok过滤我的apache错误日志.

我的错误日志文件如下所示:

[Thu Feb 27 13:22:44 2014] [error] [client 10.110.64.71] script not found or unable to stat: /var/www/cgi-bin/php4
Run Code Online (Sandbox Code Playgroud)

如何使用grok过滤?我到目前为止:

filter {
  grok {
    type => "apache-error"
    pattern => "\[%{HTTPDATE:timestamp}\] \[%{WORD:class}\] \[%{WORD:originator} %{IP:clientip}\] %{GREEDYDATA:errmsg}"
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用Grok调试器,但我几乎不知道我在做什么.我对logstash来说几乎是全新的.

logstash logstash-grok

4
推荐指数
1
解决办法
4456
查看次数

使用logstash选择性解析csv文件

我正在尝试通过logstash将数据从csv文件提供给elasticsearch.这些csv文件包含第一行作为列名.在解析文件时是否有任何特定方法可以跳过该行?是否有任何我可以使用的条件/过滤器,如果出现异常,它会跳到下一行?

我的配置文件看起来像:

input {  
      file {
          path => "/home/sagnik/work/logstash-1.4.2/bin/promosms_dec15.csv"
          type => "promosms_dec15"
          start_position => "beginning"
          sincedb_path => "/dev/null"
      }
}
filter {

    csv {
        columns => ["Comm_Plan","Queue_Booking","Order_Reference","Generation_Date"]
        separator => ","
    }  
    ruby {
          code => "event['Generation_Date'] = Date.parse(event['Generation_Date']);"
    }

}
output {  
    elasticsearch { 
        action => "index"
        host => "localhost"
        index => "promosms-%{+dd.MM.YYYY}"
        workers => 1
    }
}
Run Code Online (Sandbox Code Playgroud)

我的csv文件的前几行看起来像

"Comm_Plan","Queue_Booking","Order_Reference","Generation_Date"
"","No","FMN1191MVHV","31/03/2014"
"","No","FMN1191N64G","31/03/2014"
"","No","FMN1192OPMY","31/03/2014"
Run Code Online (Sandbox Code Playgroud)

无论如何我可以跳过第一行吗?此外,如果我的csv文件以新行结尾,其中没有任何内容,那么我也会收到错误.如果它们位于文件末尾或者如果thre是2行之间的空行,我如何跳过这些新行?

csv logstash logstash-grok

4
推荐指数
1
解决办法
5991
查看次数

用于logstash的grok的条件匹配

我有这种格式的PHP日志

[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client <ipv4 ip address>] <some php error type>: <other msg with /path/of/a/php/script/file.php and something else>
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client <ipv4 ip address>] <some php error type>: <other msg without any file name in it>
[Day Mon DD HH:MM:SS YYYY] [Log-Type] [client <ipv4 ip address>] <some msg with out semicolon in it but /path/of/a/file inside the message>
Run Code Online (Sandbox Code Playgroud)

这是我试图通过logstash处理后发送到Graylog2.在这里使用这篇文章,我能够开始.现在我想得到一些额外的字段,以便我的最终版本看起来像这样.

{
       "message" => "<The entire error message goes here>", …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok

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

在grok语句中使用logstash if语句

我正在创建一个logstash grok过滤器来从备份服务器中提取事件,我希望能够测试一个模式的字段,如果它匹配模式,则进一步处理该字段并提取其他信息.

为此,我在if声明中嵌入了一个声明grok.这导致测试失败Error: Expected one of #, =>后立即失败if.

这是过滤语句:

filter {
    grok {
        patterns_dir => "./patterns"
        # NetWorker logfiles have some unusual fields that include undocumented engineering codes and what not
        # time is in 12h format (ugh) so custom patterns need to be used.
        match => [ "message", "%{NUMBER:engcode1} %{DATESTAMP_12H:timestamp}  %{NUMBER:engcode2} %{NUMBER:engcode3} %{NUMBER:engcode4} %{NUMBER:ppid} %{NUMBER:pid} %{NUMBER:engcode5} %{WORD:processhost} %{WORD:processname} %{GREEDYDATA:daemon_message}" ]
        # attempt to find completed savesets and pull that info from …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-grok

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

logstash grok过滤器,用于具有任意属性 - 值对的日志

(这与我的其他问题logstash grok过滤器的自定义日志有关)

我有一个日志文件,其行看起来像:

14:46:16.603 [http-nio-8080-exec-4] INFO  METERING - msg=93e6dd5e-c009-46b3-b9eb-f753ee3b889a CREATE_JOB job=a820018e-7ad7-481a-97b0-bd705c3280ad data=71b1652e-16c8-4b33-9a57-f5fcb3d5de92
14:46:17.378 [http-nio-8080-exec-3] INFO  METERING - msg=c1ddb068-e6a2-450a-9f8b-7cbc1dbc222a SET_STATUS job=a820018e-7ad7-481a-97b0-bd705c3280ad status=ACTIVE final=false
Run Code Online (Sandbox Code Playgroud)

我构建了一个与第一行匹配的模式:

%{TIME:timestamp} %{NOTSPACE:http} %{WORD:loglevel}%{SPACE}%{WORD:logtype} - msg=%{NOTSPACE:msg}%{SPACE}%{WORD:action}%{SPACE}job=%{NOTSPACE:job}%{SPACE}data=%{NOTSPACE:data}
Run Code Online (Sandbox Code Playgroud)

但很明显的是只适用于具有线data=在端部,相对于status=final=在第二行,或其他线路的其他属性-值对结束了吗?如何设置一个模式,表示在某一点之后会有一foo=bar对我想识别并在输出中作为属性/值对输出的任意对?

logstash logstash-grok elastic-stack

4
推荐指数
1
解决办法
4254
查看次数

logstash http_poller第一个URL请求的响应应该输入到第二个URL的请求参数

我有两个URL(由于安全问题,我将使用虚拟解释)

 a> https://xyz.company.com/ui/api/token
 b> https://xyz.company.com/request/transaction?date=2016-01-21&token=<tokeninfo>
Run Code Online (Sandbox Code Playgroud)

当您点击'a'中提到的url时,它将生成一个令牌,让它成为一个包含16个字符的字符串

然后该令牌应该用于在令牌参数中进行点'b'的第二次请求


更新

 The second url response is important to me i.e is a JSON response, I need       
 to filter the json data and extract required data and output it to standard 
 output and elastic search.    
Run Code Online (Sandbox Code Playgroud)

有没有办法在logstash中使用插件"http_poller"或任何其他插件.

注意:这些请求URL应该一个接一个地执行,即点"a"url应该首先执行,并且"b"url应该在接收到新令牌后执行.

请建议.

logstash logstash-grok logstash-configuration

4
推荐指数
1
解决办法
2978
查看次数