Clojureによるログ収集と解析

Post on 26-May-2015

5.709 views 4 download

description

Tokyo.clj #18の発表用です。多分あとで上げ直します。

Transcript of Clojureによるログ収集と解析

ClojureClojureによるによるログ収集と解析ログ収集と解析

kawasima

2

Collecting Logs

3

昨今の不正アクセスの増加

パスワードが漏れてしまった状態なので、システム的に防ぐのは難しい。

不正アクセスをいかに速く検知するかが勝負

4

ログの収集

Apache Flume(Java)

Fluentd(ruby)

よく使われているのはこの2種類

Clojureから使うとしたら、こっち

5

Flumeの仕組み

6

Flumeの欠点● 設定がいまどきJavaのプロパティファイル形

7

そこはS式でしょ

構造化もされてて分かりやすい

Clj-flume-node (https://github.com/kawasima/clj-flume-node)

8

カスタムのSourceやSinkもClojureで

9

ログのリアルタイム解析

10

Storm

Clojure キラーアプリの1つ

11

Mine Canary (開発途上)

不正アクセス検知のためのBoltを提供する。

● 一定時間内に複数のIPからログインの試行がある● 一定時間内に同一IPから複数のアカウントのログイン

試行がある● 一定時間内に地理的に離れた場所からのログイン試行

がある

など… 不正ログインっぽいのを検出する

https://github.com/kawasima/mine-canary

12

Flume->Storm

13

Push-Pull-Conflict

FlumeのSinkはプッシュ型StormのSpoutはプル型

間にメッセージ貯めておく必要が出てくる。Apache KafkaとかRabbit MQを使うのが定石らしい

14

But...

Flumeの中にもChannelというQueueingの仕組みはあるので、間に同じようなプロダクトを挟むのは冗長だし、障害ポイントを増やすだけでは?

15

ulon-colon

データを溜めるキューは持たずに直接ピア同士でデータ送受信する仕組み。

Producer ConsumerWebSocket

https://github.com/kawasima/ulon-colon

Fressian

16

Ulon-colon producer

17

Ulon-colon consumer

18

Flume + ulon-colon のサンプル

http://bit.ly/1jMEdVA