$30 off During Our Annual Pro Sale. View Details »

PromQL_Compatibility_Testing_Recap

 PromQL_Compatibility_Testing_Recap

yosshi_

May 20, 2021
Tweet

More Decks by yosshi_

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 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

    View Slide

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

    View Slide

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

    View Slide

  6. その他のセッション
    • 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 >

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. Github 上の Star の推移

    View Slide

  11. Prometheus を取り巻く状況

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. 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 を実装して欲しくなる
    監視対象

    View Slide

  17. 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の互換性に依存してくる

    View Slide

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

    View Slide

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

    View Slide

  20. PromQL の互換性のテスト方法

    View Slide

  21. PromQL のユースケース

    View Slide

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

    View Slide

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

    View Slide

  24. 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 >

    View Slide

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

    View Slide

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

    View Slide

  27. Thanos の結果

    View Slide

  28. New Relic の結果(1/2)

    View Slide

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

    View Slide

  30. VictoriaMetrics の結果(1/2)

    View Slide

  31. 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 >

    View Slide

  32. ちょっと細かい話
    # 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 >

    View Slide

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

    View Slide

  34. 互換テストの今後

    View Slide

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

    View Slide

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

    View Slide

  37. 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 >

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide