Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ウェブアクセラレータ(さくらのCDNサービス)のアクセスデータ収集の裏側
稲波 志 (Inanami Nozomi)
November 08, 2019
Technology
4
1.1k
ウェブアクセラレータ(さくらのCDNサービス)のアクセスデータ収集の裏側
@ 6社の開発現場ツール大公開Night
稲波 志 (Inanami Nozomi)
November 08, 2019
Tweet
Share
More Decks by 稲波 志 (Inanami Nozomi)
See All by 稲波 志 (Inanami Nozomi)
ウェブアクセラレータ(CDNサービス) の使用量などをSlackに通知する
nozomi1773
0
140
Other Decks in Technology
See All in Technology
History of the ML system in KARTE
kargo113
1
660
PUTとPOSTどっち使う?
hankehly
0
270
インフラのCI/CDはGitHub Actionsに任せた
mihyon
0
110
Scrum Fest Osaka 2022 フルリモート下でのチームビルディング
moritamasami
2
1.2k
2024卒_freee_エンジニア職(ポテンシャル採用)_説明資料
freee
0
260
Citizen 개발기
outsider
0
280
Power AutomateでのAdaptive Cards
miyakemito
1
530
MRTK3 - DataBinding and Theming 入門
futo23
0
190
【toranoana.deno#7】Denoからwasmを呼び出す基礎
toranoana
0
130
機械学習システムアーキテクチャ入門 #1
asei
3
1.2k
データ分析基盤のはじめかた
chanyou0311
0
120
現状のFedCMの動作解説と OIDCとの親和性について- OpenID TechNight vol.19
ritou
2
450
Featured
See All Featured
A Philosophy of Restraint
colly
192
15k
Why Our Code Smells
bkeepers
PRO
324
55k
A Tale of Four Properties
chriscoyier
149
21k
A Modern Web Designer's Workflow
chriscoyier
689
180k
The Mythical Team-Month
searls
209
39k
Happy Clients
brianwarren
89
5.6k
KATA
mclloyd
7
8.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
15
36k
How STYLIGHT went responsive
nonsquared
85
3.9k
Producing Creativity
orderedlist
PRO
334
37k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Designing for humans not robots
tammielis
241
23k
Transcript
ウェブアクセラレータ(さくらのCDNサービス) のアクセスデータ収集の裏側 @6社の開発現場ツール大公開Night 2019/11/08 ©SAKURA Internet Inc. さくらインターネット コンテンツ配信チーム 稲波
志
発表者の自己紹介 いななみ のぞみ / @nozomi_1773 さくらインターネット 2018年中途入社 仕事内容 • さくらのCDNサービス「ウェブアクセラレータ」関連
• 開発/運用 • 主に、インフラエンジニア(物理サーバ~インフラ自動化、ミドルウェア等) • ときどき、バックエンド開発(Go、Lua) • 調査/検証 • サービスに取り入れられそうな技術やミドルウェアの調査/検証 趣味 • 読書、登山、ダイビング
CDNサービスとは CDNサービスとは?
CDNサービスとは ウェブアクセラレータ サービスサイト より ( https://www.sakura.ad.jp/services/cdn/ ) CDN(Content Delivery Network)
オリジンサーバ(お客様のサーバ)のデータをCDNサーバへキャッシュし、 データの配信を肩代わりするサービス
CDNサービスとは ウェブアクセラレータ サービスサイト より ( https://www.sakura.ad.jp/services/cdn/ ) CDN(Content Delivery Network)
オリジンサーバ(お客様のサーバ)のデータをCDNサーバへキャッシュし、 データの配信を肩代わりするサービス 【CDNが活躍する事例】 突発的なアクセス増が予想される(保険としても) ・ テレビやインターネットニュース、SNSで取り上げられた ・ 通販サイトのタイムセール など 大量の配信がしたい ・ 画像・動画データ ・ ゲームのデータ など
ウェブアクセラレータのダッシュボード機能 ウェブアクセラレータのコントロールパネルでは、 リアルタイム更新(丸め単位:1分~1日)のアクセスグラフが確認できます
ウェブアクセラレータのダッシュボード機能 【本日の発表内容】 アクセスグラフの描画に使っている アクセスデータ収集の仕組みを 簡単に紹介します!
ウェブアクセラレータのアクセスデータ収集 アクセスしてから、ダッシュボードに表示されるまで サイト閲覧者達 サイト管理者 グラフが 見たい! オリジン (お客様のサーバ) キャッシュサーバ ログサーバ
APIサーバ Data 集
ウェブアクセラレータのアクセスデータ収集 収集処理は、OSSツール × 独自デーモン の組み合わせで実装しています ( データ収集 ) ・ go-carbon
-> 時系列DB, Graphite + Carbon の代替 (Go製) ・ carbonapi -> Graphite用のAPI, graphite-web の代替 (Go製) ・ carbonzipper -> Carbon用の透過プロキシ (Go製) ( 冗長/分散集積 ) ・ keepalived ・ glusterfs など ※ 今回こちらは省略 【この周辺の処理に利用しているOSS 】 【独自デーモン 】 ・ logcollectd -> syslog受信したnginxアクセスログをパースし、graphite形式で送信する (Go製)
ウェブアクセラレータのアクセスデータ収集 アクセスデータの集め方・参照の仕方
ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd
) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ
ウェブアクセラレータのアクセスデータ収集 プロキシ( 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
ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd
) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【収集ステップ 2. 独自デーモン logcollectdで処理】 ① 内包syslogサービスでnginxアクセスログを受信 ② ログをgraphite形式への連携形式にパース ( サイト別に分類、必要な情報の抽出 ) ③ 一定間隔で、ログサーバのgo-carbon宛てに送信
ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd
) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【収集ステップ 3. go-carbonで処理】 ① logcollectdより送信したデータを受信 ② 各サーバ(Active/Backup)の Data領域にwhisper形式で集積する
ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd
) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ 【閲覧はリクエスト連携】 ① carbonapi宛てにリクエスト ② carbonapi → carbonzipper リクエスト(proxy) ③ whisper ファイルの読み出し ④ carbonzipper → carbonapi 応答
ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd
) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ
ウェブアクセラレータのアクセスデータ収集 プロキシ( nginx ) 多段キャッシュ キャッシュサーバ 独自 デーモン ( logcollectd
) ログサーバ(Backup) ログサーバ(Active) 同様 TCPクライアント UNIXドメインソケット go-carbon Data ( whisper形式) carbonzipper carbonapi APIサーバ データ参照 TCPレシーバ ※ 現時点での内容です! 今後向けに、他の仕組みも検討中!
最後に宣伝 さくらのCDNサービス 詳細はサービスサイトをご覧ください 500GiB分の無償枠で試せます! 興味をもたれた方はぜひ触ってみてください! ( https://www.sakura.ad.jp/services/cdn/ )
ありがとうございました ご清聴ありがとうございました