みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
by
さっちゃん
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
みんなのオブザーバビリティ プラットフォームを作ってるんだが パフォーマンスがやばい .。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆) はてなでMackerelを作っています オブザーバビリティプラットフォームを作ってゐる人閒です
Slide 4
Slide 4 text
※開發中の機能についての話です
Slide 5
Slide 5 text
Mackerelは今、オブザーバビリティプラットフォームへ向けて進化してゐます
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
OTelメトリックを受けるアーキテクチャ code nameは“michizane” ラベルを保存する 時系列DB メトリックを保存する
Slide 9
Slide 9 text
OTelメトリックを受けるアーキテクチャ Mackerel の PromQL 處理の內部 (2023/12 時點) #mackerelio - c4se記:さっちゃん ですよ☆ https://c4se.hatenablog.com/entry/2023/12/08/011251 今日はここの話 時系列DB
Slide 10
Slide 10 text
最初に作ったstorage Prometheusのv1似 テナントID メトリックID テナントID メトリックID ラベルのkey ラベルの値 時系列DB テナントID メトリックID 時系列data michizane
Slide 11
Slide 11 text
最初に作ったstorage Prometheusのv1似 テナントID メトリックID テナントID メトリックID ラベルのkey ラベルの値 時系列DB テナントID メトリックID 時系列data michizane 書き込みも 讀み出しも 激重
Slide 12
Slide 12 text
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 ラベル(key=value)每に1行作られる
Slide 13
Slide 13 text
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 時系列に對應する。container×メトリック每に異なる ラベル(key=value)每に1行作られる
Slide 14
Slide 14 text
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 時系列に對應する。container×メトリック每に異なる ラベル(key=value)每に1行作られる 10 container ×100メトリック ×40ラベル ×deploy 10囘/日 ×365日 =
Slide 15
Slide 15 text
最初に作ったstorage テナントID メトリックID ラベルのkey ラベルの値 時系列に對應する。container×メトリック每に異なる ラベル(key=value)每に1行作られる 10 container ×100メトリック ×40ラベル ×deploy 10囘/日 ×365日 =1億4,600万行 ×microservice數 ×テナント數
Slide 16
Slide 16 text
今作ってゐるstorage 要求 ● 投稿から1分以內にPromQLでクエリーできるやうにしたい ● PromQLに充分高速にresponseしたい ○ もし遲いなら、特に最近のメトリックに關しては高速に responseしたい ● メトリック一覽の檢索は高速にresponseしたい ○ メトリック檢索のUIや、PromQL editorの補完に用ゐる ● storage料金は安く抑へたい ● 勿論、ラベルが增え過ぎて檢索できなくなる問題は解決したい
Slide 17
Slide 17 text
今作ってゐるstorage partitioningして 保存する ラベル 一覽用 時系列DB メトリックは變 はらず
Slide 18
Slide 18 text
今作ってゐるstorage Prometheusのv2似 テナント1で今日 投稿されたラベル テナント1で昨日 投稿されたラベル テナント2で今日 投稿されたラベル テナント2で昨日 投稿されたラベル ・・・ ・・・ ・ ・ ・ ・ ・ ・ 10 container 10 microservice ×100メトリック ×40ラベル ×deploy 10囘/日 ×1日 =4百万行 ※この例だと1万メトリックを投稿してゐるので結構 な金額になります。御利用は計畫的に。あと、いい 感じに上限を設定すると思ひます
Slide 19
Slide 19 text
がんばるぞヾ(〃l _ l)ノ゙ https://ja.mackerel.io