30
PromQL for Mere Mortals Ian Billett Software Engineer [email protected] /billett_ Date 07/11/19

PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer [email protected] /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

PromQL for Mere Mortals

Ian BillettSoftware [email protected] /billett_Date 07/11/19

Page 2: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Agenda

IntroPromQL is important

Time SeriesSeries-ly cool

Vector SelectorsRange vs Instant

Operators & FunctionsFunctionally operational

Demo!Pray to the demo gods

Gauges & CountersHow en-gauge-ing

Page 3: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

PromQL is Important

■ Queries

■ Alerts

■ Dashboards

Page 4: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

...but also intimidating

label_replace((sum by(job, env, cluster, instance) (exthttp_requests_total{ code=~"^5..$", err_category!="Transient", handler!="/health", job="prometheus"} ) or on(job, env, cluster, instance) sum by(job, env, cluster, instance) ((up{ job="prometheus"} == 1) * 0)), "code", "5xx", "job", ".*")

Page 5: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Time Seriesidentifier -> (t0, v0), (t1, v1), (t2, v2), (t3, v3), ....

{__name__="http_requests_total", path="/status", method="GET"}

http_requests_total{path=”/status”, method=”GET”}

Page 6: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

PromQLFour data types:

■ Strings ✅

■ Scalars ✅

■ Instant Vectors 🤷

■ Range Vectors 🤷

Page 7: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Some context...

■ SQL ✅

■ JQL ✅ 😳

■ PromQL … ?

Page 8: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Instant Vectors

Page 10: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Instant Vectors

Page 11: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Range Vectors

Page 13: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Range Vectors

Page 14: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Yes

Are they really that different?

Page 18: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Instant VectorOne value per time series guaranteed.

Range VectorAny number of values between two timestamps.

Page 19: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Counters & Gauges

Page 20: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Counters

Page 21: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Gauges

Page 22: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector
Page 23: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Aggregation Operators

■ sum()

■ min()

■ max()

■ stddev()

■ stdvar()

Instant VectorInput:

Instant VectorOutput:

Page 24: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Binary Operators■ Arithmetic Binary Operators: +, -, /, *, ^, %,

■ Comparison Binary Operators: !=, ==, <, <=, >, >=

■ Set Binary Operators: and, or, unless

Scalar Scalar Scalar& =Instant Vector Instant VectorInstant Vector

🌶🌶🌶

Page 25: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Functions

Instant Vector Instant Vector

Range Vector Instant Vector

Page 26: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

rate(v range-vector)

rate(http_requests_total[10m])

[4,6,1,3] [4,6,7,9]

Page 27: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Demo time!

Page 28: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Gotchas■ Tell your aggregation operators about the labels

you care about!

■ Never compare raw counters - use rate()

■ Be careful with label sets when using binary

operators.

Page 29: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector

Resources■ https://www.robustperception.io Blog■ Prometheus Up & Running Book■ https://prometheus.io/docs/prometheus/ documentation

Page 30: PromQL for Mere MortalsMere Mortals Ian Billett Software Engineer ianbillett@improbable.io /billett_ Date 07/11/19 Agenda Intro PromQL is important Time Series Series-ly cool Vector