LoginSignup
2
3

More than 5 years have passed since last update.

kibana 5.5.0 リリース記念 Grok Debuggerを試す

Posted at

概要

kibana 5.5.0がリリースされました。

logstashの項目には、こう書いてあります。

正規表現を書くのが大変ですか? Grokをあちこちで活用していますか?Grok DebuggerがKibanaに登場しました!

こちらによると、x-packを入れていると、使えるようになるということのようです。

The Grok Debugger is automatically enabled when you install X-Pack into Kibana. It is located under the DevTools tab in Kibana

で、こちらを試してみた、という内容です。

環境

例によってDockerで立てましょう。

version: '2'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.5.0
    container_name: elasticsearch
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: docker.elastic.co/kibana/kibana:5.5.0
    container_name: kibana
    links:
      - elasticsearch:elasticsearch
    ports:
      - 5601:5601

IDとパスワードはデフォルト値、elastic/changemeのままです。

Grok Debuggerの画面

ConsoleやSearch Profilerがある「Dev Tools」のアイコンをクリックし、「Grok Debugger」を押すと、このような画面になります。

1.png

使い方

「Input」に解析したい対象となる文字列を、「Pattern」にはGrok Patternを入れます。
「Simulate」ボタンを押下することで、マッチ結果が「Output」に出力されるというものです。

2.png

当たり前の注意点

たとえば、ログの書式がこんなのってよく見かけます。logbackとかlog4j界隈で。

192.168.144.42 - - [03/Apr/2017:11:36:18 +0900] "GET /imart/ HTTP/1.1" 302 70 "-" "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/534.34 (KHTML, like Gecko) wkhtmltopdf Safari/534.3224"

"["や"]"に囲まれた文字列を抽出するには、Patternを書くときに、"["や"]"をエスケープしなければいけません。
正規表現で注意が必要なものに気をつける、ということですね。

実際にやってみた例はこちら。

3.png

項目 内容
Input 192.168.144.42 - - [03/Apr/2017:11:36:18 +0900] "GET /imart/ HTTP/1.1" 302 70 "-" "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/534.34 (KHTML, like Gecko) wkhtmltopdf Safari/534.3224"
Pattern %{IPORHOST:resin.access.remote_ip} - %{DATA:resin.access.user_name} [%{HTTPDATE:resin.access.time}] \"%{WORD:resin.access.method} %{DATA:resin.access.url} HTTP/%{NUMBER:resin.access.http_version}\" %{NUMBER:resin.access.response_code} %{NUMBER:resin.access.body_sent.bytes} (\"%{DATA:resin.access.referrer}\")?( \"%{DATA:resin.access.agent}\")

当たり前の注意点2

LogstashやBeatsの設定ファイルからGorkPatternをコピペで持ってくるときの注意点です。
上にも書いていますが、エスケープする「\」をエスケープする書き方になっていることがあると思います。

\\[%{IPORHOST:imart.access.remote_ip}\\] - %{DATA:imart.access.user_name} \\[%{HTTPDATE:imart.access.time}\\] \"%{WORD:imart.access.method} %{DATA:imart.access.url} HTTP/%{NUMBER:imart.access.http_version}\" %{NUMBER:imart.access.response_code} %{DATA:imart.access.body_sent.bytes} (\"%{DATA:imart.access.referrer}\")?( \"%{DATA:imart.access.agent}\")

このような文字列をそのままGrokDebuggerに貼り付けてもエラーになるので、元の書き方に戻しましょう。

おわりに変えての雑感

Grok Debuggerといえば、大半の方が http://grokdebug.herokuapp.com/ をご利用だと思います。
こちらのサイトではPatternってどんなのがあったっけ? と調べることができたり、
文字列をいれてDiscoverとすると、それらしいPatternを生成してくれるDiscoverがあります。(もちろん完璧ではないけれども)
kibanaのGrok Debuggerには、これからの機能強化に期待したいところです。

Discoverしてみた

先の例で使ったログ文字列を入れてやってみた結果。
やっぱり、Debuggerでちょっとずつこまめに作っていくのが吉です。

%{COMBINEDAPACHELOG}

Grok Debugger.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3