Slide 1

Slide 1 text

Norikraを非リアルタイムな データ集計に使う試み Norikra meetup #1 Yohei KANEMARU @yunazuno

Slide 2

Slide 2 text

誰? • 金丸 洋平 (かねまる ようへい) • @yunazuno • ネットワークまわり担当 at LINE Corp. – BGP, CDN, DNS, ロードバランサ周辺 – たまにツール書いたり • 主にPython 2

Slide 3

Slide 3 text

非リアルタイム ログ集計 + 3

Slide 4

Slide 4 text

ユースケース: トラフィック集計 4 R1 R2 R3 R4 R5 R6 NW A NW B • NW A → Bのトラフィックが, R3-5のどれにどのくらい流れ ているか知りたい • ログはR1,R2で個別にCSVで エクスポート可能

Slide 5

Slide 5 text

「CSVでエクスポート」 • 割とスキーマレス • 外部サービスやアプライアンスが絡むと, 唯一のログ取得手段な場合も – API欲しいけども... • サービスや機器を跨いだ集計は自分で 頑張る 5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

他の手段を考えてみた 1. スクリプトで全部頑張る? – CSVパース + ひたすら足し算 – 書く手間はそんなに無さそう 2. DBに入れてから集計? – CSVパース + insert + select – クエリ書くのつらい 7

Slide 8

Slide 8 text

他の手段を考えてみた 1. スクリプトで全部頑張る? – CSVパース + ひたすら足し算 – 書く手間はそんなに無さそう 2. DBに入れてから集計? – CSVパース + insert + select – クエリ書くのつらい 3. Norikraで集計! 8

Slide 9

Slide 9 text

9 From http://norikra.github.io/query.html

Slide 10

Slide 10 text

win:time_batch 10 “Publisher” Norikra Internal time Wall-clock time Norikraがeventを受け取った時刻を基準に処理 send send send send send [{name: …, value: …, …}]

Slide 11

Slide 11 text

win:ext_time_batch 11 “Publisher” Norikra Internal time Wall-clock time eventに含まれるタイムスタンプを基準に処理 send send send send send Buffer (Delay) [{timestamp: 1396278060000, name: …, value: …, …}]

Slide 12

Slide 12 text

全体像 12 csv2json.py … traffic_stats.py norikra- client-python 1. CSVをタイムスタンプ順に JSONに詰める CSVファイルはタイムスタンプで ソートされている ASSUMPTION 2. クエリ登録 3. send 4. fetch 5. クエリとtargetを削除 6. CSVに出力 Query 1: aggregate Query 2: max/avg

Slide 13

Slide 13 text

Query 1: 複数ファイルの集約 13 input = [{timestamp:1400511600, src_nw: “NW_A”, dst_nw: “NW_B”, traffic_out: 10.0}] timestamp (in msec) time window time reference 後段のクエリの targetを指定

Slide 14

Slide 14 text

Query 2: MAX/AVG集計 14 output = [{timestamp:1400511000, traffic_out_daily_avg: 42.34, traffic_out_daily_max: 130.25}]

Slide 15

Slide 15 text

Q. 「それNorikraじゃなくても いいよね?」 15

Slide 16

Slide 16 text

A. Yes. 16

Slide 17

Slide 17 text

あえてNorikraな理由 • 意外と気軽に使える – 入力フォーマットや対象メトリックが変わる たびにスクリプトやDBに手を加えるのは割と 辛い – クエリ編集だけで大抵事足りる > Norikra – hoge2json部分だけ用意すればよい • xml2json, rrd2json, … 17

Slide 18

Slide 18 text

まとめ • Excelで開けない辛いデータも割と気軽に 扱えるようになる – 気軽さ大事 • 最近fluent-plugin-netflowとかいう素敵 なものが登場した – ネットワーク+リアルタイムな話は#2で? 18