Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがや...
Search
さっちゃん
July 20, 2024
Programming
0
1.4k
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
さっちゃん
July 20, 2024
Tweet
Share
More Decks by さっちゃん
See All by さっちゃん
作ってよかったgraceful shutdownライブラリ #kyotogo
ne_sachirou
0
1.2k
path 依存型って何?
ne_sachirou
0
620
野生の onbording と onbording 設計 #kyototechtalk
ne_sachirou
0
620
メトリックはいかにして見え續ける樣になったか #devio2022
ne_sachirou
0
85
名實一致
ne_sachirou
0
650
まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16
ne_sachirou
0
3.1k
tacit programming : Point-free, Concatenatives & J
ne_sachirou
0
960
Monitoring Containerized Elixir
ne_sachirou
1
960
Let's create stateful systems, by Elixir
ne_sachirou
1
930
Other Decks in Programming
See All in Programming
Duke on CRaC with Jakarta EE
ivargrimstad
1
380
UMAPをざっくりと理解 / Overview of UMAP
kaityo256
PRO
3
1.6k
プロダクトエンジニアのしごと 〜 受託 × 高難度を乗り越えるOptium開発 〜
algoartis
0
250
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.5k
リアーキテクチャの現場で向き合う 既存サービスの読み解きと設計判断
ymiyamu
1
150
Road to Ruby for A Linguistics Nerd
hayat01sh1da
PRO
0
390
“技術カンファレンスで何か変わる?” ──RubyKaigi後の自分とチームを振り返る
ssagara00
0
170
Global Azure 2025 @ Kansai / Hyperlight
kosmosebi
0
170
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
2
620
私のRubyKaigi 2025 Kaigi Effect / My RubyKaigi 2025 Kaigi Effect
chobishiba
1
180
Носок на сок
bo0om
0
1.5k
データと事例で振り返るDevin導入の"リアル" / The Realities of Devin Reflected in Data and Case Studies
rkaga
3
2.9k
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
810
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Building Applications with DynamoDB
mza
94
6.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.5k
The Cult of Friendly URLs
andyhume
78
6.4k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Transcript
みんなのオブザーバビリティ プラットフォームを作ってるんだが パフォーマンスがやばい .。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)
None
.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆) はてなでMackerelを作っています オブザーバビリティプラットフォームを作ってゐる人閒です
※開發中の機能についての話です
Mackerelは今、オブザーバビリティプラットフォームへ向けて進化してゐます
None
None
OTelメトリックを受けるアーキテクチャ code nameは“michizane” ラベルを保存する 時系列DB メトリックを保存する
OTelメトリックを受けるアーキテクチャ Mackerel の PromQL 處理の內部 (2023/12 時點) #mackerelio - c4se記:さっちゃん
ですよ☆ https://c4se.hatenablog.com/entry/2023/12/08/011251 今日はここの話 時系列DB
最初に作ったstorage Prometheusのv1似 テナントID メトリックID テナントID メトリックID ラベルのkey ラベルの値 時系列DB テナントID
メトリックID 時系列data michizane
最初に作ったstorage Prometheusのv1似 テナントID メトリックID テナントID メトリックID ラベルのkey ラベルの値 時系列DB テナントID
メトリックID 時系列data michizane 書き込みも 讀み出しも 激重
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 ラベル(key=value)每に1行作られる
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 時系列に對應する。container×メトリック每に異なる ラベル(key=value)每に1行作られる
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 時系列に對應する。container×メトリック每に異なる ラベル(key=value)每に1行作られる 10 container ×100メトリック
×40ラベル ×deploy 10囘/日 ×365日 =
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 時系列に對應する。container×メトリック每に異なる ラベル(key=value)每に1行作られる 10 container ×100メトリック
×40ラベル ×deploy 10囘/日 ×365日 =1億4,600万行 ×microservice數 ×テナント數
今作ってゐるstorage 要求 • 投稿から1分以內にPromQLでクエリーできるやうにしたい • PromQLに充分高速にresponseしたい ◦ もし遲いなら、特に最近のメトリックに關しては高速に responseしたい •
メトリック一覽の檢索は高速にresponseしたい ◦ メトリック檢索のUIや、PromQL editorの補完に用ゐる • storage料金は安く抑へたい • 勿論、ラベルが增え過ぎて檢索できなくなる問題は解決したい
今作ってゐるstorage partitioningして 保存する ラベル 一覽用 時系列DB メトリックは變 はらず
今作ってゐるstorage Prometheusのv2似 テナント1で今日 投稿されたラベル テナント1で昨日 投稿されたラベル テナント2で今日 投稿されたラベル テナント2で昨日 投稿されたラベル
・・・ ・・・ ・ ・ ・ ・ ・ ・ 10 container 10 microservice ×100メトリック ×40ラベル ×deploy 10囘/日 ×1日 =4百万行 ※この例だと1万メトリックを投稿してゐるので結構 な金額になります。御利用は計畫的に。あと、いい 感じに上限を設定すると思ひます
がんばるぞヾ(〃l _ l)ノ゙ https://ja.mackerel.io