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
940
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
さっちゃん
July 20, 2024
Tweet
Share
More Decks by さっちゃん
See All by さっちゃん
作ってよかったgraceful shutdownライブラリ #kyotogo
ne_sachirou
0
1k
path 依存型って何?
ne_sachirou
0
420
野生の onbording と onbording 設計 #kyototechtalk
ne_sachirou
0
540
メトリックはいかにして見え續ける樣になったか #devio2022
ne_sachirou
0
67
名實一致
ne_sachirou
0
590
まかれるあなとみあ ―Mackerel のしくみを理解する 30 分― @ Hatena Engineer Seminar #16
ne_sachirou
0
3k
tacit programming : Point-free, Concatenatives & J
ne_sachirou
0
770
Monitoring Containerized Elixir
ne_sachirou
1
880
Let's create stateful systems, by Elixir
ne_sachirou
1
850
Other Decks in Programming
See All in Programming
Hono・Prisma・AWSでGeoなAPI開発
nokonoko1203
5
610
数値を文字列に整形する際の落とし穴とその解決策(iOSDC2024 ルーキーズLT) / iOSDC Japan 2024 Formatting Floating-Point Numbers
glassfiber
0
250
プログラマのための音楽入門
cheebow
4
540
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
130
The Future of Frontend i18n : Intl.MessageFormat
sajikix
1
2.4k
ECMAScript、Web標準の型はどう管理されているか / How ECMAScript and Web standards types are maintained
petamoriken
3
370
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
550
Regular Expressions, REXML, Automata Learning
makenowjust
0
180
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
0
220
令和トラベルにおけるLLM活用事例:社内ツール開発から得た学びと実践
ippo012
0
110
dRuby 入門者によるあなたの身近にあるdRuby 入門
makicamel
4
340
Uncharted packages (Laravel Live Denmark)
freekmurze
0
140
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Pencils Down: Stop Designing & Start Developing
hursman
118
11k
Principles of Awesome APIs and How to Build Them.
keavy
125
16k
Imperfection Machines: The Place of Print at Facebook
scottboms
263
13k
For a Future-Friendly Web
brad_frost
173
9.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
88
15k
Six Lessons from altMBA
skipperchong
26
3.3k
Happy Clients
brianwarren
96
6.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Building Your Own Lightsaber
phodgson
101
5.9k
How to Think Like a Performance Engineer
csswizardry
15
910
Done Done
chrislema
180
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