Grok помощь для пользовательской метрики - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть такая строка журнала:

09 Nov 2018 15:51:35 DEBUG  api.MapAnythingProvider - Calling API For Client: XXX Number of ELEMENTS Requested YYY

Я хочу игнорировать все остальные строки журнала и хочу, чтобы в них были только те строки, в которых есть слова " Calling API For Client ". Далее меня интересуют только строка XXX и номер YYY. Спасибо за помощь.

1 Ответ

0 голосов
/ 13 ноября 2018
input {
 file {
   path => ["C:/apache-tomcat-9.0.7/logs/service/service.log"]
   sincedb_path => "nul"
   start_position => "beginning"
  }
}
filter {
    grok {
    match => {
      "message" => "%{MONTHDAY:monthDay} %{MONTH:mon} %{YEAR:year} %{TIME:ts} %{WORD:severity}  %{JAVACLASS:claz} - %{GREEDYDATA:logmessage}"
      }
    }   

    grok {
    match => {
      "logmessage" => "%{WORD:keyword} %{WORD:customer} %{WORD:key2} %{NUMBER:mapAnythingCreditsConsumed:float} %{WORD:key3} %{NUMBER:elementsFromCache:int}"
      }
    }   

    if "_grokparsefailure" in [tags] {
    drop {}
    }

    mutate {
    remove_field => [ "monthDay", "mon", "ts", "severity", "claz", "keyword", "key2", "path", "message", "year", "key3" ]
    }
}
output {
        if [logmessage] =~ /ExecutingJobFor/  { 
        elasticsearch {
            hosts => ["localhost:9200"]
            index => "test"
            manage_template => false
        }
        stdout {
            codec => rubydebug
        }
        }
}
...