Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

発表者の自己紹介 いななみ のぞみ / @nozomi_1773 さくらインターネット 2018年中途入社 仕事内容 • さくらのCDNサービス「ウェブアクセラレータ」関連 • 開発/運用 • 主に、インフラエンジニア(物理サーバ~インフラ自動化、ミドルウェア等) • ときどき、バックエンド開発(Go、Lua) • 調査/検証 • サービスに取り入れられそうな技術やミドルウェアの調査/検証 趣味 • 読書、登山、ダイビング

Slide 3

Slide 3 text

CDNサービスとは CDNサービスとは?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

CDNサービスとは ウェブアクセラレータ サービスサイト より ( https://www.sakura.ad.jp/services/cdn/ ) CDN(Content Delivery Network) オリジンサーバ(お客様のサーバ)のデータをCDNサーバへキャッシュし、 データの配信を肩代わりするサービス 【CDNが活躍する事例】 突発的なアクセス増が予想される(保険としても) ・ テレビやインターネットニュース、SNSで取り上げられた ・ 通販サイトのタイムセール など 大量の配信がしたい ・ 画像・動画データ ・ ゲームのデータ など

Slide 6

Slide 6 text

ウェブアクセラレータのダッシュボード機能 ウェブアクセラレータのコントロールパネルでは、 リアルタイム更新(丸め単位:1分~1日)のアクセスグラフが確認できます

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ウェブアクセラレータのアクセスデータ収集 アクセスデータの集め方・参照の仕方

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

ウェブアクセラレータのアクセスデータ収集 プロキシ( 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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd ) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ ※ 現時点での内容です! 今後向けに、他の仕組みも検討中!

Slide 18

Slide 18 text

最後に宣伝 さくらのCDNサービス 詳細はサービスサイトをご覧ください 500GiB分の無償枠で試せます! 興味をもたれた方はぜひ触ってみてください! ( https://www.sakura.ad.jp/services/cdn/ )

Slide 19

Slide 19 text

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