prometheus
TRANSCRIPT
![Page 1: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/1.jpg)
Prometheus
![Page 2: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/2.jpg)
What is Prometheus?時系列データを扱う監視システム
サービスの死活監視 パフォーマンスのモニタリング
競合監視システム Ganglia Graphite Zabbix
![Page 3: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/3.jpg)
What am I talking about?Prometheus のコンポーネント PromSQL + AlertManager 周りの話Prometheus の Scalability
![Page 4: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/4.jpg)
Componens
![Page 5: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/5.jpg)
Components (of Ganesha)
Time series database Dashboard
scrape
Alert Manager
scrape & evaluate metrics
alerting
PushGateway scrape
BurrowExporter
GraphiteExporter
CloudWatchExporterr
Service Discovery
scrape
Monitoring targets
register
NodeExporterscrape
planting rules
![Page 6: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/6.jpg)
planting rules
Components (of Ganesha)
Dashboardscrape
Alert Manager
scrape & evaluate metrics
alerting
PushGateway
BurrowExporter
GraphiteExporter
CloudWatchExporterr
Service Discovery
scrape
register
NodeExporterscrape
Time series database
Monitoring targets
scrape
Push 型ではなく Pull 型
各種 Exporter があるので 簡単な設定で様々な メトリクスが監視できる.
PushGateway で metrics の Push も受けられる
![Page 7: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/7.jpg)
planting rules
scrape
Monitoring targets
Components (of Ganesha)
Dashboardscrape
Alert Manager
scrape & evaluate metrics
alerting
PushGateway
BurrowExporter
GraphiteExporter
CloudWatchExporterr
Service Discoveryregister
NodeExporterscrape
scrape
Time series database
Consul 経由で Container Serviceの 監視も楽
Registrator で簡単に Consul 登録
![Page 8: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/8.jpg)
scrape
Monitoring targets
Components (of Ganesha)
Dashboardscrape
Alert Manager
scrape & evaluate metrics
alerting
PushGateway
BurrowExporter
GraphiteExporter
CloudWatchExporterr
register
NodeExporterscrape
scrape
Time series database
Service Discoveryplanting
rulesconsul-planter で
consul KV に ルールを格納
consul-template で Alert Manager に 埋め込み
発火すると Slack にアラートが飛ぶ
![Page 9: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/9.jpg)
scrape
Service Discoveryplanting
rules
scrape
Monitoring targets
Components (of Ganesha)
Dashboard
Alert Manager
scrape & evaluate metrics
alerting
PushGateway
BurrowExporter
GraphiteExporter
CloudWatchExporterr
register
NodeExporterscrape
Time series database
scrape
Grafana でカッコよくビジュアライズ !!
![Page 10: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/10.jpg)
Summary of This Section各種 Exporter でいろんなソースから簡単に
Metrics を取れるConsul や Kubernetes との連携でコンテナ監視も
楽Alert Manager で Slack 通知
consul-planter と consul-template でいい感じにconsul KV連携してアラートルール管理してます.
Grafana かっこいい
![Page 11: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/11.jpg)
PromSQL &Alert Manager
![Page 12: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/12.jpg)
Metrics in Prometheusラベルを使った多次元時系列データ
topic=kafka-topic-v1
topic=kafka-topic-v2
Input records
0m 1m 2m 3m 4m
ラベル
![Page 13: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/13.jpg)
Metrics in PrometheusMetrics の種類 ( 厳密には 4 種類あるらしいけ
ど ..) Counter
• 数の累積を取る. (Kafka の Offset とか )• リセットされない限単調増加
Guage• 毎時変動する値 ( メモリの使用量とか )
カスタムメトリクスを自前で Export するときは,この違いを意識しないとおかしなことになる.
![Page 14: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/14.jpg)
What is PromSQL多次元時系列 Metrics を操作するための
Prometheus の独自クエリ言語Alert Rule の設定や, Dashboard での可視化に
使う.
![Page 15: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/15.jpg)
Instant Vector & Range VectorInstant Vector
ある時刻の各ラベルのデータプロットの VectorRange Vector
ある時点からの特定の時間区間のデータプロットのVector
topic=kafka-topic-v1
topic=kafka-topic-v2
0m 1m 2m 3m 4m
Instant Vector
Range Vector
![Page 16: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/16.jpg)
Query Example (Instant Vector)全ラベル
ラベルの値で絞り込み
特定のラベルについて合計
burrow_consumed_offset
burrow_consumed_offset { topic=“kafka-topic-v1” }
sum(burrow_consumed_offset) by (topic)
![Page 17: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/17.jpg)
Query Example (RangeVector)5 分前から今まで
7 分前から 2 分前まで
5 分前から今までの平均
burrow_consumed_offset{ topic=”kafka-topic-v1” }[5m]
burrow_consumed_offset{ topic=”kafka-topic-v1" }[5m] offset 2m
avg_over_time( burrow_consumed_offset{ topic=”kafka-topic-v1” }[5m])
![Page 18: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/18.jpg)
Reference四則演算や論理演算,その他の関数を駆使して
クエリを書く https://prometheus.io/docs/querying/functions/
![Page 19: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/19.jpg)
Alert RulePromSQL で発火条件を記述
Instant Vector は基本的に集合演算 (true/false ではない )
クエリで抽出されたラベルセット全てについてアラートが発火する.
![Page 20: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/20.jpg)
Alert Rule
topic=kafka-topic-v1
topic=kafka-topic-v1
0m 1m 2m 3m 4m
Instant Vector
Input_records
IF input_records < 4 FOR 1m ANNOTATIONS { summary = ”few input records” }
3
8
[ topic=“kafka-topic-v1” 3 ]
Result
Bool 値になるわけではない
![Page 21: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/21.jpg)
Alert Rule Example
IF ( sum(burrow_head_offset{topic=~"^kafka-*"}) BY (topic) - sum(burrow_head_offset{topic=~”^kafka-.*} offset 6m) BY (topic)) != 0unless ( sum(burrow_consumed_offset{consumer="collector"}) BY (topic) - sum(burrow_consumed_offset{consumer="collector"} offset 6m) BY (topic)) > 0FOR 5mANNOTATIONS { topic="{{$labels.topic}}",}
① topic ラベルが kafka- から始まる各トピックで burrow_head_offset の 合計値の 6 分前の値との差が 0 でないもの
② consumer ラベルが collecto で burrow_consumed_offset の合計値の 6 分前との差が 0 より大きいもの
① のラベルセットにあって②のラベルセットにないものこの条件が 5 分以上継続している場合発火
ANNOTATION にはラベルの値をつかえる
![Page 22: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/22.jpg)
Summary of This SectionPromSQL で instant vector や range vector を
こねくり回して Visualize したり Alert を設定する.
ラベルによって多次元構造になっていることで Query での表現自由度が高くなっていて良い.
![Page 23: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/23.jpg)
Scalability
![Page 24: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/24.jpg)
Performance特にチューニングしなくても 100,000 個の
Time series を扱えるらしい
![Page 25: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/25.jpg)
Federation性能が足りない場合は Federation が必要
とはいえ, Multi DC や,かなり大きい DC で大量のノードを監視したいみたいな状況じゃないと早々必要にはならないっぽい.
あとはクエリの評価を高速化したい場合ぐらい
![Page 26: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/26.jpg)
FederationPrometheus が他の Promethues を Scrape する
構成 設定に応じて /federate に渡す metrics が Export され
る.- job_name: 'federate' scrape_interval: 15s
honor_labels: true metrics_path: '/federate'
params: 'match[]': - '{job="prometheus"}' - '{__name__=~"job:.*"}'
static_configs: - targets: - 'source-prometheus-1:9090’ - 'source-prometheus-2:9090’
source-prometheus-1:9090/federate
source-prometheus-2:9090/federate
scrape
scrape
![Page 27: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/27.jpg)
Hieralchical federation階層構造を組んで徐々に metrics の集約度を
上げていく構成 多分 DWH と考え方は似ている
scrape scrape
store lower level data
store higher level data = aggregated data
![Page 28: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/28.jpg)
Summary of this section実はバックエンドも長年の研究成果の結晶
1 台でも 100,000 個もの Time series を捌ける
それでも足りない場合 ( すごい大規模な DC を監視する場合など ) は Federation 構成を組みましょう.
![Page 29: Prometheus](https://reader033.vdocuments.net/reader033/viewer/2022042723/58f13f011a28abf07b8b45ed/html5/thumbnails/29.jpg)
ConclusionExporter と簡単な設定を追加するだけでいろんな
Metrics が取れる. Service Discovery 周りのサポートが優秀 Exporter は一部デキの悪いものも…
ラベル付きの多次元データモデルと PromSQL で 複雑な状況も柔軟に監視,アラートができる.
処理性能もかなりのもので Federation 構成もとれて 安定している. 大規模 DC にも対応できる.