Clojureによるログ収集と解析

18
Clojure Clojureによる による ログ収集と解析 ログ収集と解析 kawasima

description

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

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

Page 1: Clojureによるログ収集と解析

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

kawasima

Page 2: Clojureによるログ収集と解析

2

Collecting Logs

Page 3: Clojureによるログ収集と解析

3

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

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

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

Page 4: Clojureによるログ収集と解析

4

ログの収集

Apache Flume(Java)

Fluentd(ruby)

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

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

Page 5: Clojureによるログ収集と解析

5

Flumeの仕組み

Page 6: Clojureによるログ収集と解析

6

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

Page 7: Clojureによるログ収集と解析

7

そこはS式でしょ

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

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

Page 8: Clojureによるログ収集と解析

8

カスタムのSourceやSinkもClojureで

Page 9: Clojureによるログ収集と解析

9

ログのリアルタイム解析

Page 10: Clojureによるログ収集と解析

10

Storm

Clojure キラーアプリの1つ

Page 11: Clojureによるログ収集と解析

11

Mine Canary (開発途上)

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

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

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

がある

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

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

Page 12: Clojureによるログ収集と解析

12

Flume->Storm

Page 13: Clojureによるログ収集と解析

13

Push-Pull-Conflict

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

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

Page 14: Clojureによるログ収集と解析

14

But...

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

Page 15: Clojureによるログ収集と解析

15

ulon-colon

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

Producer ConsumerWebSocket

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

Fressian

Page 16: Clojureによるログ収集と解析

16

Ulon-colon producer

Page 17: Clojureによるログ収集と解析

17

Ulon-colon consumer

Page 18: Clojureによるログ収集と解析

18

Flume + ulon-colon のサンプル

http://bit.ly/1jMEdVA