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

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

7389db41aa4054d74d533abefd698a94?s=47 yunazuno
July 09, 2014

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

7389db41aa4054d74d533abefd698a94?s=128

yunazuno

July 09, 2014
Tweet

Transcript

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

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

    at LINE Corp. – BGP, CDN, DNS, ロードバランサ周辺 – たまにツール書いたり • 主にPython 2
  3. 非リアルタイム ログ集計 + 3

  4. ユースケース: トラフィック集計 4 R1 R2 R3 R4 R5 R6 NW

    A NW B • NW A → Bのトラフィックが, R3-5のどれにどのくらい流れ ているか知りたい • ログはR1,R2で個別にCSVで エクスポート可能
  5. 「CSVでエクスポート」 • 割とスキーマレス • 外部サービスやアプライアンスが絡むと, 唯一のログ取得手段な場合も – API欲しいけども... • サービスや機器を跨いだ集計は自分で

    頑張る 5
  6. 6

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

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

    DBに入れてから集計? – CSVパース + insert + select – クエリ書くのつらい 3. Norikraで集計! 8
  9. 9 From http://norikra.github.io/query.html

  10. win:time_batch 10 “Publisher” Norikra Internal time Wall-clock time Norikraがeventを受け取った時刻を基準に処理 send

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

    send send send send Buffer (Delay) [{timestamp: 1396278060000, name: …, value: …, …}]
  12. 全体像 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
  13. 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を指定
  14. Query 2: MAX/AVG集計 14 output = [{timestamp:1400511000, traffic_out_daily_avg: 42.34, traffic_out_daily_max:

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

  16. A. Yes. 16

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

    Norikra – hoge2json部分だけ用意すればよい • xml2json, rrd2json, … 17
  18. まとめ • Excelで開けない辛いデータも割と気軽に 扱えるようになる – 気軽さ大事 • 最近fluent-plugin-netflowとかいう素敵 なものが登場した –

    ネットワーク+リアルタイムな話は#2で? 18