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
Prometheus Shardingのためにミニマルに始めるThanos
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ch1aki
March 16, 2023
Technology
840
0
Share
Prometheus Shardingのためにミニマルに始めるThanos
Kubernetes Meetup Tokyo #56 (
https://k8sjp.connpass.com/event/275280/
) LT
ch1aki
March 16, 2023
More Decks by ch1aki
See All by ch1aki
マルチアカウント環境への発見的統制の導入
ch1aki
2
1.8k
オンプレk8sとEKSの並行運用の実際
ch1aki
0
2.4k
k8s Operatorで運用負担減&ハイブリッドクラウドのコスト最適化をした話
ch1aki
0
2.3k
SREが取り組むカラーミーショップへのk8s導入
ch1aki
2
1k
Other Decks in Technology
See All in Technology
データを"持てない"環境でのアノテーション基盤設計
sansantech
PRO
1
150
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
270
基盤を育てる 外部SaaS連携の運用
gamonges_dresscode
1
120
ServiceNow Knowledge 26 の歩き方
manarobot
0
200
260422_Sansan_Tech_Talk__関西_vol.3_データ活用のリアル__矢田__.pdf
sansantech
PRO
0
120
「責任あるAIエージェント」こそ自社で開発しよう!
minorun365
10
2.3k
AI: Making Admin and Users, Lives Better
kbmsg
0
120
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
38k
MLOps導入のための組織作りの第一歩
akasan
0
390
生成AI時代のドキュメントに対する期待の整理と実践から得た学び / Rethinking Documentation for LLM: Lessons from Practice
bitkey
PRO
1
100
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
360
Chasing Real-Time Observability for CRuby
whitegreen
0
270
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
What's in a price? How to price your products and services
michaelherold
247
13k
Color Theory Basics | Prateek | Gurzu
gurzu
0
300
Crafting Experiences
bethany
1
120
Abbi's Birthday
coloredviolet
2
7.2k
From π to Pie charts
rasagy
0
170
Practical Orchestrator
shlominoach
191
11k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How GitHub (no longer) Works
holman
316
150k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
220
Are puppies a ranking factor?
jonoalderson
1
3.3k
Transcript
1 Prometheus Shardingのために ミニマルに始めるThanos akichan 2023.03.16 Kubernetes Meetup Tokyo #56
2 Prometheus Shardingのためにミニマルに始めるThanos 自己紹介 akichan やってること • k8sクラスタ運用(オンプレ&EKS) • 運用課題解決のためのk8sカスタム
コントローラーの開発 • 開発環境やデプロイ周りをよくする活動 @ch11aki @ch1aki GMOペパボ株式会社 技術部プラットフォームグループ SRE
3 • プライベートクラウド上の k8sクラスタでローカル時系列データベース のPrometheusを運用 ◦ 内製のクラスタ管理ツール( NKE)によってk8sクラスタを管理 ◦ NKEではPrometheusと基本的なスクレイピング設定・アラートルールが提供される
• クラスタ規模の成長(1000 Pod以上、100 node以上)に合わせ、Prometheusの負荷も増加 ◦ メモリ使用率が特に増加 → 頻繁にOOMで停止 ◦ Prometheusサーバー専用nodeの垂直スケールも限界 が見えてきた • Progressive DeliveryでPrometheusを参照しているため、Prometheusが落ちるとリリースに も影響がでて困る GMOペパボのとあるサービス Prometheus Shardingのためにミニマルに始めるThanos
4 • 取得するメトリクスの種類や頻度を減らす ◦ 現状とっているのは厳選されたメトリクスで大きくは減らせなかった ◦ 取得間隔を減らすのもあまり効果は無かった(圧縮が効いているので種類を減らすより効果が薄い らしい?) • 水平スケール
◦ 垂直シャーディング ▪ 用途ごと(ex. ネットワーク/アプリケーション)にPrometheusサーバーを分割する方法 ▪ 複数台の用途の異なるPrometheusを意識した管理が手間 ◦ 水平シャーディング(採用) ▪ 複数のスクレイプ用Prometheusを設ける ▪ Prometheus Opetatorでは設定一つでシャーディング可能! • shard podが増える • Scrapeルールもいい感じに分けてくれる Prometheusのメモリ使用率を下げるためにできること Prometheus Shardingのためにミニマルに始めるThanos apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: shards: 2 # ←これだけ! ...
5 ローカルストレージの場合、それぞれの shardにメトリクスが分散して保存 • クエリが実行されるshardによって異 なる結果が返ってくる(見るたびにグ ラフが変わる) • 個々のshardに保存されるメトリクス だけではアラートルールが正しく評価
されない可能性(複数種のメトリクスの 合計の評価など) シャーディング時の注意事項 Prometheus Shardingのためにミニマルに始めるThanos Thanos等を使ってグローバルにクエリすること が推奨されている https://github.com/prometheus-operator/prometheus-operator/blob/main/D ocumentation/user-guides/shards-and-replicas.md Prometheus Server shard-1 TSDB App -1 App -2 App -3 Grafana svc shard-1のTSDBに含まれる メトリクス shard-2のTSDBに含まれる メトリクス クエリが実行される Prometheus Serverによっ て異なる結果 Query Scrape Alert Manager Prometheus Server shard-2 TSDB 個々のshardが保持する メトリクスは全体の一部。 ルールが正しく評価され ない可能性 Push Alert
6 Prometheus Shardingのためにミニマルに始めるThanos • Prometheusをスケーリングするた めの複数のコンポーネントから成る ◦ Query: 複数のPrometheus サーバーにクエリ投げて結果を
集約 ◦ Ruler: Queryにクエリ投げて、ア ラートルールを評価 ◦ Sidecar: StoreAPIを喋り PrometheusのデータをQuerier に提供するプロキシ ◦ etc… • 一部機能だけを利用可能(外部オブ ジェクトストレージ等は必須ではない) Thanos(https://thanos.io/) 引用: https://thanos.io/tip/thanos/quick-tutorial.md/
7 Prometheus Shardingのためにミニマルに始めるThanos 直面しているローカルストレージ&Sharding時の課 題の解決にはQuery&Rulerがあれば十分と判断 • 社内では保存期間がローカルストレージで十分 なケースが多い • オブジェクトストレージ利用の追加コストが不要
だと導入しやすい sharding時の課題のミニマルな解決 Prometheus Server shard-1 TSDB App -1 App -2 App -3 Grafana headless svc Query Scrape Alert Manager Prometheus Server shard-2 TSDB Push Alert Thanos Query Thanos Sidecar Thanos Sidecar Query Query Query Query Prometheus servers を見つける Thanos Ruler アラート 評価クエリ
8 • Thanos Sidecar/Rulerは Prometheus Operatorで導入可 ◦ Sidecarは数行追加だけ ◦ RulerはPrometheusRuleリソースを
流用できる • QueryはThanos Operator使うほどで 無かったので素朴にDeploymentで追加 • Grafana等はPrometheusの代わりに Thanos Queryを参照するよう変更 Thanos Sidecar/Query/Rulerの導入 Prometheus Shardingのためにミニマルに始めるThanos apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus spec: ... thanos: image: quay.io/thanos/thanos:v0.28.1 apiVersion: monitoring.coreos.com/v1 kind: ThanosRuler metadata: name: thanos-ruler spec: image: quay.io/thanos/thanos:v0.28.1 ruleSelector: matchLabels: role: alert-rules queryEndpoints: - dnssrv+_http._tcp.thanos-querier alertmanagersUrl: - http://alertmanager-example:9093
9 Prometheus Shardingのためにミニマルに始めるThanos • 負荷が分散され、OOMで落ちることが なくなった🎉 • クエリも整合性のある結果を返せてい て、使い勝手も大きくは変わらなかった Sharding&Thanos導入の結果
10 Prometheus Shardingのためにミニマルに始めるThanos • Promehteusの負荷をshardingで分散してOOMで落ちる問題を解消できた • Prometheus OperatorでShardingもThanos(Sidecar/Ruler)導入もすぐできた • リモートストレージを利用しない必要最小限の構成でもThanosを活用できた
まとめ Prometheusのドキュメントにある通り、ローカルストレージはそもそも耐久性のある長期ストレージを意図し て設計されたものではない。 ちゃんと保存するならリモートストレージを検討したほうがいい。 注意⚠
Thank You!! 11