×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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