Slide 1

Slide 1 text

ç “PromQL Compatibility Testing Verifying Vendor Claims for End User Benefit” Recap : PromCon Online 2021 Kubernetes Meetup Tokyo #41 - KubeConEU 2021 Recap @yosshi_

Slide 2

Slide 2 text

● 吉村 翔太 ● ゼットラボ株式会社 ソフトウェアエンジニア ● 経歴 SIer 6年、通信事業者のR&D 2年 etc ● Kurbernetes 、Prometheus  etc ● 登壇 CNDT “Kubernetes Logging入門” etc ● コミュニティ活動 “Cloud Native Developers JP” @yosshi_ 自己紹介 “Prometheus Meetup Tokyo”

Slide 3

Slide 3 text

What is Co-Located Events ? 参考 : events.linuxfoundation.org < https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/program/colocated-events/ > • KubeCon + CloudNativeCon に合わせて開催される周辺イベント • 特定の技術やプロダクトに特化したイベントが多数開催される – Cloud Native Rust Day – PromCon Online – Cloud Native Security Day – Cloud Native Wasm Day – K8s AI Day – K8s on Edge Day – ServiceMeshCon – Data on Kubernetes Day etc

Slide 4

Slide 4 text

What is PromCon? 参考 : promcon.io < https://promcon.io/2021-online/ > • Prometheus に関するイベント • 概要 – 日付:2021/5/3 – 時刻:10:00-18:30(CEST) – 場所:Online – 参加費:USD $20

Slide 5

Slide 5 text

今回紹介するセッション 参考 : promcononline2021.sched.com < https://sched.co/ibIO > • PromQL の互換性のテストに関する話

Slide 6

Slide 6 text

その他のセッション • Making Prometheus even more open < https://sched.co/ibIL > • Making Prometheus even more open < https://sched.co/ibIv > • Ups, let's revert! 🔥 Automating Kubernetes Rollouts with Argo and Prometheus for HA < https://sched.co/ibIj > • The Future is Bright, the Future is Prometheus Remote Write < https://sched.co/ibIj >

Slide 7

Slide 7 text

Youtube のリスト • PromCon Online EU 2021 < https://www.youtube.com/playlist?list=PLj6h78yzYM2PZb0QuIkm6ZY-xTuNA5zRO >

Slide 8

Slide 8 text

なぜ PromQL 互換のプロダクトが必要なのか?

Slide 9

Slide 9 text

What is Prometheus? 参考 : prometheus.io < https://prometheus.io/docs/introduction/overview > 2012年でSoundCloud でに作られた Monitoring に関するオープンソースのソフトウェア 発表者の Julius Volz(現在 PromLabs) の方も元 SoundCloud 所属

Slide 10

Slide 10 text

Github 上の Star の推移

Slide 11

Slide 11 text

Prometheus を取り巻く状況

Slide 12

Slide 12 text

Prometheusのアーキテクチャ 参考 : prometheus.io < https://prometheus.io/docs/introduction/overview/ >

Slide 13

Slide 13 text

Prometheus を運用する上での課題 • 以下の機能がプロダクトの開発のスコープ外 – メトリクスの長期保管 • メトリクスの長期保管が必要な場合は以下の対応が必要だった – Third-party Storage の用意 – remote write の対応 参考 : prometheus.io < https://prometheus.io/docs/prometheus/latest/storage/#overview >

Slide 14

Slide 14 text

Prometheus のユースケース(1/4) • Prometheus と Grafana を使ったケース • それぞれの役割 – Prometheus:メトリクスの収集と蓄積、PromQLの実行エンジン – Grafana:可視化 Prometheus Grafana 監視対象 PromQL データ蓄積量に限界が来る

Slide 15

Slide 15 text

Prometheus のユースケース(2/4) • ユーザのニーズ – メトリクスを長期保管した – 既存の Grafana のダッシュボードをそのまま利用したい • 対処方法 – Third-party Storage の利用 ( e.g. InfluxDB ) – remote write/read の利用 Prometheus Grafana 監視対象 PromQL Prometheus (remote read 用) remote write remote read 明言されていないが、実は存在するニーズ

Slide 16

Slide 16 text

Prometheus のユースケース(2/4) • ユーザのニーズ – メトリクスを長期保管した – 既存の Grafana のダッシュボードをそのまま利用したい • 対処方法 – Third-party Storage の利用 ( e.g. InfluxDB ) – remote write/read の利用 Prometheus Grafana PromQL Prometheus (remote read 用) remote write remote read Third-party Storage で PromQL を実装して欲しくなる 監視対象

Slide 17

Slide 17 text

Prometheus のユースケース(3/4) • PromQL もしくは PromQL 互換のクエリ言語を話せるプロダクトの登場 – Native PromQL : Cortex, Thanos, M3, TimescaleDB etc – PromQL 互換の独自言語: VictoriaMetrics(MetricsQL), New Relic(NRQL) • 対処方法 – Third-party Storage の利用 ( e.g. Cortex ) – remote write の利用 Prometheus Grafana 監視対象 PromQL remote write 既存のダッシュボードを使用できるかどうかは PromQLの互換性に依存してくる

Slide 18

Slide 18 text

Prometheus のユースケース(4/4) • Prometheus を使用しない構成も可能 • それぞれの役割 – Grafana Agent:メトリクスの収集 – Cortex:メトリクスの蓄積、PromQLの実行エンジン – Grafana:可視化 Grafana Agent Grafana 監視対象 PromQL remote write

Slide 19

Slide 19 text

PromQL の互換性が維持されることによるメリット • ユーザが混乱せずにどのプロダクトも使用できる – Grafana のダッシュボードがどのプロダクトでも同じように使用できる – Alert が実は検知できていないなどの重大なケースを避けることができる • ベンダーロックインの回避 • エコシステムの断片化の回避 – SQL のように各プロダクト毎に方言が存在する状態を避けれる

Slide 20

Slide 20 text

PromQL の互換性のテスト方法

Slide 21

Slide 21 text

PromQL のユースケース

Slide 22

Slide 22 text

多くのプロダクトやベンダーが PromQL をサポート

Slide 23

Slide 23 text

PromQL Compliance Tester 参考 : PromQL Compliance Tester < https://github.com/prometheus/compliance/tree/main/promql >

Slide 24

Slide 24 text

PromQL 互換のテストによるメリット- ユーザ - • ベンダーのドキュメントを読んだだけでは分かりにくい実装の差異を確認できる 参考 : docs.newrelic.com < https://docs.newrelic.com/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features/ > 参考 : docs.victoriametrics.com < https://docs.victoriametrics.com/MetricsQL.html >

Slide 25

Slide 25 text

PromQL 互換のテストによるメリット- ベンダー - • ソースを読まないと仕様が分からない PromQL のテストが容易にできる

Slide 26

Slide 26 text

PromQL Compliance Test Results 参考 : PromQL Compliance Test Results < https://promlabs.com/promql-compliance-tests/ >

Slide 27

Slide 27 text

Thanos の結果

Slide 28

Slide 28 text

New Relic の結果(1/2)

Slide 29

Slide 29 text

New Relic の結果(2/2) 参考 :PromLabs Blog < https://promlabs.com/blog/2020/11/26/an-update-on-promql-compatibility-across-vendors#new-relic >

Slide 30

Slide 30 text

VictoriaMetrics の結果(1/2)

Slide 31

Slide 31 text

VictoriaMetrics の結果(2/2) 参考 : PromLabs Blog < https://promlabs.com/blog/2020/08/06/comparing-promql-correctness-across-vendors#victoriametrics > < https://promlabs.com/blog/2020/11/26/an-update-on-promql-compatibility-across-vendors#victoriametrics >

Slide 32

Slide 32 text

ちょっと細かい話 # HELP http_requests_total The total number of HTTP requests. # TYPE http_requests_total counter http_requests_total{method="post",code="200"} 1027 1395066363000 http_requests_total{method="post",code="400"} 3 1395066363000 metrics name sample label 参考 :prometheus.io < https://prometheus.io/docs/concepts/data_model/#samples > • メトリクス 参考 :Prometheus Remote-Write Specification < https://docs.google.com/document/d/1LPhVRSFkGNSuU1fBd81ulhsCPR4hkSZyyBj1SZ8fWOM >

Slide 33

Slide 33 text

PromQLについて詳しく知りたい場合は • prometheus.io < https://prometheus.io/docs/prometheus/latest/querying/basics/ > • 入門 Prometheus < https://www.oreilly.co.jp/books/9784873118772/ >

Slide 34

Slide 34 text

互換テストの今後

Slide 35

Slide 35 text

Prometheus のその他の使用と互換性のテスト

Slide 36

Slide 36 text

Prometheus に関する主なインタフェース

Slide 37

Slide 37 text

Prometheus に関する仕様 参考 : OpenMetrics specification < https://github.com/OpenObservability/OpenMetrics/tree/main/specification > • OpenMetrics 初回は2020/11/25 IETF に提出 • Prometheus Remote-Write 参考 : Prometheus Remote-Write specification < https://github.com/OpenObservability/OpenMetrics/tree/main/specification >

Slide 38

Slide 38 text

OpenMetrics Prometheus Remote-Write specification Prometheus に関する主な仕様

Slide 39

Slide 39 text

Prometheus の互換テスト 参考 : Prometheus Compliance Tests < https://github.com/prometheus/compliance >

Slide 40

Slide 40 text

OpenMetrics compliance tester Prometheus Remote-Write Compliance Test PromQL Compliance Tester Prometheus に関する主な互換テスト