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