54
ピコもんのログ収集基板について WACODE @airtoxin

ピコもんのログ収集基板について

Embed Size (px)

Citation preview

Page 1: ピコもんのログ収集基板について

ピコもんのログ収集基板について

WACODE @airtoxin

Page 2: ピコもんのログ収集基板について

自己紹介

Page 3: ピコもんのログ収集基板について

Ryoji Ishii@airtoxin

ピコもん株式会社

アプリケーションエンジニア

曲を作っていたりイカになったりしている。

フロントでJavascript、バックエンドでNode.js、レコメンダーの実装にJava、サーバーの構成管理にRuby、死活監視の為にPythonなどなど…

Page 4: ピコもんのログ収集基板について

ピコもん株式会社

Page 5: ピコもんのログ収集基板について

ピコもん株式会社

Webサイトの案内人として、ピコもん導入サイト上でキャラクターを動かし、訪問ユーザーとコミュニケーションを取りながらユーザーが求めている情報へと誘導する。

Page 6: ピコもんのログ収集基板について

ピコもん

Page 7: ピコもんのログ収集基板について

デモ

• https://www.picomon.jp/company/recruit

Page 8: ピコもんのログ収集基板について

ピコもんのログ事情

Page 9: ピコもんのログ収集基板について

全体図

Page 10: ピコもんのログ収集基板について
Page 11: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

Page 12: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 13: ピコもんのログ収集基板について

アクセスログ全てのAPIエンドポイントについて、リクエストとレスポンスを合わせたログデータをテーブルなどに分けて保存

サーバーアプリケーションからのログも必要ならば保存

基本的にフロントからの要求で動作するので、調査が必要になった時にユーザーの行動履歴を復元できる

Page 14: ピコもんのログ収集基板について

アプリケーションログ

現在はエラー情報のみを流している

将来的にはボトルネックを調査できるようにアクセススループットのデータやデータベースのログなども流したい

Page 15: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 16: ピコもんのログ収集基板について

Fluentd

Page 17: ピコもんのログ収集基板について

Fluentdアプリケーションサーバーとログサーバー間、ログサーバーと各種サービス間を繋ぐログデータのパイプ

データは一時的にバッファリングされるためロストが無く安心

各データに対してタグを付け、そのタグのマッチングで送信先を振り分ける事が出来る

プラグインで送受信先やデータの振り分け方などを拡張できる

Page 18: ピコもんのログ収集基板について

fluent-plugin-forest

タグを分解し、変数として送信先の指定などに使用できる

APIエンドポイント毎に送信先を動的に決定するなどの処理をするのに必須

Page 19: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 20: ピコもんのログ収集基板について

Slack

Page 21: ピコもんのログ収集基板について

Slack

最近流行りのチャットツール

色々なツールと連携が取れる

Incoming WebHooksを使うと自由にメッセージが流せる

Page 22: ピコもんのログ収集基板について

Slack

Page 23: ピコもんのログ収集基板について

Slack

Page 24: ピコもんのログ収集基板について

Slack

Page 25: ピコもんのログ収集基板について

Slack活用事例• botで社内の雰囲気を明るく

• アプリケーションのエラーログをリアルタイムでチャンネルに表示し、エンジニアのスムーズなバグ調査を支援

Page 26: ピコもんのログ収集基板について

😊

Page 27: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 28: ピコもんのログ収集基板について

elasticsearch + kibana

Page 29: ピコもんのログ収集基板について

elasticsearch

全文検索エンジン

ログのテキスト入れれば色々検索できてハッピーみたいなやつ

Page 30: ピコもんのログ収集基板について

kibana

elasticsearchをバックエンドとした、可視化用ダッシュボード

リアルタイムに集計とか出来て便利だよね系

Page 31: ピコもんのログ収集基板について

elasticsearch + kibana活用事例

• エラーログの表示

• シナリオ実行数のカウント

Page 32: ピコもんのログ収集基板について

見た目がキレイ

Page 33: ピコもんのログ収集基板について

何か仕事やってる感出る

Page 34: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 35: ピコもんのログ収集基板について

Norikra

Page 36: ピコもんのログ収集基板について

NorikraSQLライクなクエリ(Esper EPL)でjson形式のデータストリームを集計(Continuous Query)

集計したデータは新たなストリームとして再び流れてゆく

機能としては集計のみなので、集計結果をelasticsearch

に流してkibanaで可視化などする必要がある

rubygemで簡単にインストール・アップデートできる

Page 37: ピコもんのログ収集基板について

Norikra活用事例• リアルタイムのユーザー数のカウント

• 気密性の高いサーバーからのエラーをメール通知

• 異常アクセス検知とアラートの送信

Page 38: ピコもんのログ収集基板について

お手軽CQ

Page 39: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 40: ピコもんのログ収集基板について

Google BigQuery

Page 41: ピコもんのログ収集基板について

BigQuery• Googleが提供するフルマネージド

DWH

• 数千台のサーバーでデータを処理

• データ量が増えても極端に遅くなることが無い

Page 42: ピコもんのログ収集基板について

BigQuery活用事例1現在弊社で動いてる最大のクエリ→ユーザーの行動履歴を元に、どの程度想定した行動が取られているか?

3つの行動履歴から時間指定して特殊データを除外してユーザーのIDやセッションでグループ分けして全てを結合(約3000文字)

実行完了まで5秒程度

Page 43: ピコもんのログ収集基板について

BigQuery活用事例2重すぎてアプリケーションのパフォーマンスを落としていた処理→ユーザーのアクション実行履歴をグラフに整形して出力する

アクションやシナリオの実行履歴をセッション毎にグループ分けし、それぞれをtimestampで並び替え、順番で番号付けし、それぞれのグループ毎に1番目と2番目,2番目と3番目…とデータを取り出し、同じデータについてカウントを取る(約1500文字)

こちらも実行完了まで5秒程度

Page 44: ピコもんのログ収集基板について

やんちゃんなクエリも受け入れる包容力

Page 45: ピコもんのログ収集基板について

BigQueryは暴力

Page 46: ピコもんのログ収集基板について

BigQueryは暴力👊

Page 47: ピコもんのログ収集基板について

サイコー!

Page 48: ピコもんのログ収集基板について

アクセスログ

アプリケーションログ

アプリケーション サーバー

ログ サーバー

Page 49: ピコもんのログ収集基板について

データ保持のスパンNorikra - 短期的

Elasticsearch - 中長期的

BigQuery - ∞

即時的な解析・調査からバッチによる集計まで、ミドルウェア毎に得意とするデータ保持期間で同じデータを分散して保持する

Page 50: ピコもんのログ収集基板について

データの保証データ欠損→Fluentdの再送機能によって保証。Fluentdを介さずアプリケーションから直接送っている所も再送機能を実装し対応。

重複送信→DBの制約によって保証。

Page 51: ピコもんのログ収集基板について

ログ基板の構築Chef + Serverspecでテストを行いながら各ミドルウェアを導入。冪等性があるので安心して実行できる。

Fluentd同士の連携テスト中、データが10分ほど届かないことがあった(原因不明)ので気長に待つのが良い。

serverspecのテスト中に破壊的バージョンアップがあってうまく動かなくなったりした。

Page 52: ピコもんのログ収集基板について

まとめ

Page 53: ピコもんのログ収集基板について

まとめ• 解析に合わせてDBを選択

• リアルタイムな集計が必要ないデータはとりあえずBigQueryに入れておけば安心

• Fluentdがだいたい面倒見てくれる

Page 54: ピコもんのログ収集基板について

FIN

素敵なデータ処理ライフを!