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

ウェブアクセラレータ(さくらのCDNサービス)のアクセスデータ収集の裏側

 ウェブアクセラレータ(さくらのCDNサービス)のアクセスデータ収集の裏側

@ 6社の開発現場ツール大公開Night

843030bd2c799443e5faeb84adb63e09?s=128

Nozomi Inanami

November 08, 2019
Tweet

Transcript

  1. ウェブアクセラレータ(さくらのCDNサービス) のアクセスデータ収集の裏側 @6社の開発現場ツール大公開Night 2019/11/08 ©SAKURA Internet Inc. さくらインターネット コンテンツ配信チーム 稲波

  2. 発表者の自己紹介 いななみ のぞみ / @nozomi_1773 さくらインターネット 2018年中途入社 仕事内容 • さくらのCDNサービス「ウェブアクセラレータ」関連

    • 開発/運用 • 主に、インフラエンジニア(物理サーバ~インフラ自動化、ミドルウェア等) • ときどき、バックエンド開発(Go、Lua) • 調査/検証 • サービスに取り入れられそうな技術やミドルウェアの調査/検証 趣味 • 読書、登山、ダイビング
  3. CDNサービスとは CDNサービスとは?

  4. CDNサービスとは ウェブアクセラレータ サービスサイト より ( https://www.sakura.ad.jp/services/cdn/ ) CDN(Content Delivery Network)

    オリジンサーバ(お客様のサーバ)のデータをCDNサーバへキャッシュし、 データの配信を肩代わりするサービス
  5. CDNサービスとは ウェブアクセラレータ サービスサイト より ( https://www.sakura.ad.jp/services/cdn/ ) CDN(Content Delivery Network)

    オリジンサーバ(お客様のサーバ)のデータをCDNサーバへキャッシュし、 データの配信を肩代わりするサービス 【CDNが活躍する事例】 突発的なアクセス増が予想される(保険としても) ・ テレビやインターネットニュース、SNSで取り上げられた ・ 通販サイトのタイムセール など 大量の配信がしたい ・ 画像・動画データ ・ ゲームのデータ など
  6. ウェブアクセラレータのダッシュボード機能 ウェブアクセラレータのコントロールパネルでは、 リアルタイム更新(丸め単位:1分~1日)のアクセスグラフが確認できます

  7. ウェブアクセラレータのダッシュボード機能 【本日の発表内容】 アクセスグラフの描画に使っている アクセスデータ収集の仕組みを 簡単に紹介します!

  8. ウェブアクセラレータのアクセスデータ収集 アクセスしてから、ダッシュボードに表示されるまで サイト閲覧者達 サイト管理者 グラフが 見たい! オリジン (お客様のサーバ) キャッシュサーバ ログサーバ

    APIサーバ Data 集
  9. ウェブアクセラレータのアクセスデータ収集 収集処理は、OSSツール × 独自デーモン の組み合わせで実装しています ( データ収集 ) ・ go-carbon

    -> 時系列DB, Graphite + Carbon の代替 (Go製) ・ carbonapi -> Graphite用のAPI, graphite-web の代替 (Go製) ・ carbonzipper -> Carbon用の透過プロキシ (Go製) ( 冗長/分散集積 ) ・ keepalived ・ glusterfs など ※ 今回こちらは省略 【この周辺の処理に利用しているOSS 】 【独自デーモン 】 ・ logcollectd -> syslog受信したnginxアクセスログをパースし、graphite形式で送信する (Go製)
  10. ウェブアクセラレータのアクセスデータ収集 アクセスデータの集め方・参照の仕方

  11. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ
  12. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【収集ステップ 1. nginxで処理】 nginx の access_log を syslog転送 独自デーモン( logcollectd )の.sock宛て 例: access_log syslog:server=unix:/~~~.sock
  13. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【収集ステップ 2. 独自デーモン logcollectdで処理】 ① 内包syslogサービスでnginxアクセスログを受信 ② ログをgraphite形式への連携形式にパース ( サイト別に分類、必要な情報の抽出 ) ③ 一定間隔で、ログサーバのgo-carbon宛てに送信
  14. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【収集ステップ 3. go-carbonで処理】 ① logcollectdより送信したデータを受信 ② 各サーバ(Active/Backup)の Data領域にwhisper形式で集積する
  15. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【閲覧はリクエスト連携】 ① carbonapi宛てにリクエスト ② carbonapi → carbonzipper リクエスト(proxy) ③ whisper ファイルの読み出し ④ carbonzipper → carbonapi 応答
  16. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ
  17. ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd

    ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ ※ 現時点での内容です! 今後向けに、他の仕組みも検討中!
  18. 最後に宣伝 さくらのCDNサービス 詳細はサービスサイトをご覧ください 500GiB分の無償枠で試せます! 興味をもたれた方はぜひ触ってみてください! ( https://www.sakura.ad.jp/services/cdn/ )

  19. ありがとうございました ご清聴ありがとうございました