Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Norikraを非リアルタイムなデータ集計に使う試み

yunazuno
July 09, 2014

 Norikraを非リアルタイムなデータ集計に使う試み

yunazuno

July 09, 2014
Tweet

More Decks by yunazuno

Other Decks in Technology

Transcript

  1. 誰? • 金丸 洋平 (かねまる ようへい) • @yunazuno • ネットワークまわり担当

    at LINE Corp. – BGP, CDN, DNS, ロードバランサ周辺 – たまにツール書いたり • 主にPython 2
  2. ユースケース: トラフィック集計 4 R1 R2 R3 R4 R5 R6 NW

    A NW B • NW A → Bのトラフィックが, R3-5のどれにどのくらい流れ ているか知りたい • ログはR1,R2で個別にCSVで エクスポート可能
  3. 6

  4. 他の手段を考えてみた 1. スクリプトで全部頑張る? – CSVパース + ひたすら足し算 – 書く手間はそんなに無さそう 2.

    DBに入れてから集計? – CSVパース + insert + select – クエリ書くのつらい 3. Norikraで集計! 8
  5. win:ext_time_batch 11 “Publisher” Norikra Internal time Wall-clock time eventに含まれるタイムスタンプを基準に処理 send

    send send send send Buffer (Delay) [{timestamp: 1396278060000, name: …, value: …, …}]
  6. 全体像 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
  7. 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を指定