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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for yunazuno yunazuno
July 09, 2014

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

Avatar for yunazuno

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を指定