0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Logstash】UiPathログ用grokパターンを勝手に解説

Posted at

以前投稿した【UiPath】ロボット稼働率を見える化する(Orchestrator無し)の続編です。

ExcelじゃなくElastic Search + Kibanaでカッコ良くログ可視化しようと思い、宮一 良彦さんというスゴい方のMedium記事を参考にさせていただいたのですが、ES初心者の自分にはLogstashのfilter周りの設定(特にgrok filter)を理解するのに時間がかかりました。

色々調べてようやく理解できたので、同じように悩まれてるES初心者の方の参考になると思い、失礼と知りながら補足解説させていただきます。

解説対象、設定引用元>
ロボットのログをLogstashで集める > 設定 > logstash.conf のfilterパート

filterでやっている事のざっくり解説

まずUiPathの実行ログ1行は
①15:19:44.0976 ②Info ③{"message":"XXXX の実行が開始しました","level":"Information",...}

  • ①タイムスタンプ(ただし時分秒のみ)
  • ②ログレベル(Info/Error/...)
  • ③ログメッセージやタイムスタンプ、マシン名などの詳細情報の詰まったJson

のように大きく3ブロックで構成されているので、それぞれをfield1, field2, field3という変数に分解しています。
ここのmatchパターン
match => { "message" => "(?<field1>(\S+)) (?<field2>(\S+)) (?<field3>(.+))" }
は次の章で解説します。

そして分解した③のfield3をJsonパースしてESに渡し、後はJson中のタイムスタンプのフォーマット指定やタイムゾーン指定をしたり、ESに送り込む必要が無いField(message, field1, field2, field3, path)を除去しています。

grokのmatchパターン解説

match => { "message" => "(?<field1>(\S+)) (?<field2>(\S+)) (?<field3>(.+))" }
を解説します。

ES公式 : Grok filter plugin > Custom Patterns によると
(?<field_name>pattern)
と定義すれば元のmessageのうちpatternに合致した部分をfield_nameに格納してくれる、と。
じゃあpatternである\S+とか.+って何なの?となる。

Regular Expressions (Regex) を参照

  1. まず\sは半角スペース、改行、タブ、改ページ( \n\r\t\f)いずれか1文字を指す
  2. \S 大文字反転で逆の意味→半角スペース、改行、タブ、改ページでない1文字
  3. \S+ +は1文字以上の繰り返し→半角スペース、改行、タブ、改ページを含まない文字列

となる。
.は"改行でない1文字"を指すので、同様に.+は"改行を含まない文字列"になる。

field1, field2が\S+で、field3だけ.+なのは、field3の対象となるJsonの中に半角スペース等が入ってくる事を想定されているのだと思います。(ユーザーがLog Messageアクティビティで出力したメッセージも入ってくるので)

こうしてログ①②③それぞれのブロックを都合よく取り出せるという事です。う~ん、なるほど。

ちなみにApacheのログなど、よく世の中で使われるpattenはデフォルトで定義されているし、自前で新規patternを定義して名前を付ける事もできます。
参考 > Grok patterns

Logstash結果

設定の意味が理解できたので、上記Medium記事に従ってLogstash経由でESにフォルダに溜まったログををまとめて送り込んでみました。

Indexが作成され、Json内の各Fieldが反映されています。
Index.png

Discovery画面でレコード(Document)の存在も確認できたので、ようやく可視化の準備が整いました。
graph.png


今回はここまで。
思い通りにESにデータを入れてくには正規表現の理解が大事って事がわかりました。

ちなみに可視化・効果測定という意味ではForward IIIで見たUiPath Insightsを非常に期待しており、サービスとしてReadyになったら会社でぜひ検証したいと思います。

0
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?