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
ch1aki
March 16, 2023
Technology
0
590
Prometheus Shardingのためにミニマルに始めるThanos
Kubernetes Meetup Tokyo #56 (
https://k8sjp.connpass.com/event/275280/
) LT
ch1aki
March 16, 2023
Tweet
Share
More Decks by ch1aki
See All by ch1aki
マルチアカウント環境への発見的統制の導入
ch1aki
2
1.5k
オンプレk8sとEKSの並行運用の実際
ch1aki
0
1.9k
k8s Operatorで運用負担減&ハイブリッドクラウドのコスト最適化をした話
ch1aki
0
1.8k
SREが取り組むカラーミーショップへのk8s導入
ch1aki
2
950
Other Decks in Technology
See All in Technology
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
120
Storage Browser for Amazon S3
miu_crescent
1
140
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
270
1等無人航空機操縦士一発試験 合格までの道のり ドローンミートアップ@大阪 2024/12/18
excdinc
0
150
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
ガバメントクラウドのセキュリティ対策事例について
fujisawaryohei
0
530
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
260
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
170
kargoの魅力について伝える
magisystem0408
0
200
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
What's in a price? How to price your products and services
michaelherold
243
12k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Scaling GitHub
holman
458
140k
Optimising Largest Contentful Paint
csswizardry
33
3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Thoughts on Productivity
jonyablonski
67
4.4k
Building an army of robots
kneath
302
44k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How to train your dragon (web standard)
notwaldorf
88
5.7k
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