Embulkを活用したログ管理システム

102
-1

Published on

Embulk Meetup Tokyo #2 LT
自社プロダクトのログを分析するためにEmbulkを活用したログ管理システムを開発しているので、その事例と開発したプラグインの紹介をしたいと思います。

Published in: Engineering
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
102
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Embulkを活用したログ管理システム

  1. 1. Embulkを活用した ログ管理システム 2015-12-15 Embulk Meetup Tokyo #2
  2. 2. 自己紹介 • 池添 明宏 / @zoetro • グループウェアの開発 • フロントエンドチーム
 兼 パフォーマンス障害対策チーム • 最近の興味: Embulk, Elasticsearch, Kibana, Vert.x, Rx
  3. 3. fluentdが使えない! • セキュリティ上、顧客環境のログデータを外 部に送信することはできない。 • ログデータは手動で取得するしかない。
  4. 4. ログ管理システムをつくろう • 持ち帰ってきた大量のログファイルを高速に処理 したい。 • 専門的な知識を持たなくても、OS・ミドルウェ アや製品のバージョンの違いを気にせずに気軽に ログを分析できるようにしたい。 • 顧客ごとに取得したログファイルの管理をしたい。
  5. 5. 開発中のある日…
  6. 6. 作ろうとしているものが
 そこにはあった プラグインシステム、並列・分散処理、guess機構、
 リトライ・リジューム などなど
  7. 7. Embulkを使って作り直し • Embulkを利用するメリットが大きいと判断。 • プラグインにより対応ログを簡単に増やせるようになる。 • 並列処理やリトライ処理を自前で作らなくていい。 • UIやログ管理機能はそのままに、ログの登録箇所をEmbulk に置き換え。Javaのライブラリとして呼び出すようにした。 • 既存のログ登録処理はプラグイン化。
  8. 8. ログ管理システムアーキテクチャ
  9. 9. ログ管理システムの機能 • ログファイルをアップロードするためのUI • ログタイプを推測してElasticsearchに登録 • 登録したログファイルの管理機能 • Kibanaのインデックスパターンを自動登録 し、グラフのリンクを自動生成
  10. 10. 利用プラグイン • output: elasticsearch • input: sar (自作), filesplit • parser: grok (自作), csv, ltsv • filter: column
  11. 11. 自作プラグインの紹介
  12. 12. embulk-parser-grok • grokという正規表現ライクな記法でファイル をパースできる汎用パーサプラグイン。 • https://github.com/arielnetworks/embulk- parser-grok
  13. 13. embulk-parser-grok • 複数行のログにも対応。 • パースエラー発生時に無視して処理を続けるかどうかを選択可能。 • Java製guessプラグイン。 • タイムスタンプのパーサとしてSimpleDateFormatか標準のJRubyの パーサを切り替えられる。 • 標準のタイムスタンプパーサが遅い。 • https://github.com/embulk/embulk/issues/145
  14. 14. grokとは • 正規表現を拡張して使いやすくしたライブラリ。 • パターンに名前をつけて再利用することができる • C言語実装、Java実装、Ruby実装などがある。 • Grok Constructor • http://grokconstructor.appspot.com/
  15. 15. grokの利用例 URIPATH (?:/[A-Za-z0-9$.+!*’(){},~:;=@#%_-]*)+ WORD bw+b NUMBER (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:.[0-9]+)?)|(?:.[0-9]+))) ACCESS_LOG %{URIPATH:request} %{WORD:method} %{NUMBER:duration} /index.html GET 1234 { request: /index.html, method: GET, duration: 1234 } パターンファイル パース対象 パース結果
  16. 16. 既存のパターンが利用できる
  17. 17. embulk-input-sar • sar(sysstat)というLinuxのシステム情報(CPU, メモリ, IO, ネットワーク)を収集するツールの 出力を取り込むためのプラグイン。 • sysstat ver.7 ~ 11に対応。
  18. 18. Kibanaプラグイン • JavaのスレッドダンプをEmbulkでElasticsearchに投 入。 • Kibanaのプラグインで
 スレッドダンプを可視化。 • 長時間ブロックしている
 処理や呼び出し回数の多い
 処理がわかる。
  19. 19. 開発で困っていること • Java APIでEmbulkを実行したときに、戻り値としてい ろいろな情報を返したい。パースに成功 or 失敗した数 とか、エラーの理由とか。進 状況も取れるとなお嬉し い。 • Java APIとして実行したときに、Rubyのプラグインを利 用したい。 • Javaでguessプラグインが作りにくい。
  20. 20. まとめ • EmbulkにWebのUIを用意してあげることで、ログ 分析のハードルがとても低くなった。(エンジニア じゃなくてもログに触れるようになった) • Embulkのおかげで、いろいろなパターンのログに 簡単に対応できるようになった。 • grokプラグイン便利なので使ってみてください。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×