The State of the Art of OpenMetrics and some fundamentals novelties about it. What it is? Why do we need it? In case we really need it.
Cloud_Native Rejekts EU 2019 - Barcelona, Spain - May 19th 2019.
Customer Service Analytics - Make Sense of All Your Data.pptx
Open metrics: Prometheus Unbound?
1. OpenMetrics.
Prometheus Unbound?
Leonardo Di Donato.
Open Source Engineer @ Sysdig.
Maintainer of Falco.
Co-creator of kubectl-trace.
Creator of go-syslog.
@leodido
2019.05.19 - Cloud_Native Rejekts EU - Barcelona, Spain
2. What OpenMetrics is?
@leodido
📎 gh:openmetrics/openmetrics
Just a wire protocol.
A lingua franca in the whole observability story
being built using the Prometheus exposition format as
the starting point.
It’s (still) a draft 🖇
In the CNCF sandbox
3. Prometheus won the battle!
Against no one ➡ there was hardly anyone in
the landscape …
Everyone knows it nowadays.
It displays metrics line-by-line in a
text-based format.
Histograms, counters, gauges, summaries.
N-dimensional space with labels.
It is really good at doing metrics
And what else?! 🤷♂
So why do we really need OpenMetrics?
Mess
👇
Prometheus
👇
OpenMetrics
@leodido
4. Standardization
Traditional vendors want to avoid lock-in.
Goal ➡ IETF RFC
Secret goal ➡ kill the concept of hierarchical data models
Open Standard:
• no brand.
• vendor neutral.
• available to all to read and implement ➡ foster cooperation.
OpenMetrics @leodido
5. Novelties
Mostly the same of Prometheus except ...
UNIX timestamps in seconds
What are you counting?
# UNIT foo_seconds seconds ⬅
not applicable to state sets and info metrics
UNIT descriptor directive
# HELP test_m Bla bla bla description no one really reads
# TYPE test_m counter
# UNIT potatoes 🥔
test_m{...} x
test_m{...} x
# EOF ⬅
Metric sets followed by an end marker
attach an ID off a trace to directly link to that trace
foo_bucket{le="0.1"} 8 # {} 0.054
foo_bucket{le="1"} 10 # {id="9856e"} 0.67
foo_bucket{le="10"} 17 # {id="12fa8"} 9.8 1520879607.789
⬆
Exemplars
Registered content-type/mime-type
Normalization
• same escape rules for HELP directive and labels
• better handling of white spaces between tokens
Maybe application/openmetrics-text?
@leodido
6. New metric
types
Mostly the same of Prometheus except ...
# TYPE x info
x_info{entity="ctrl",name="pretty",version="8.1"} 1
x_info{entity="repl",name="prettier",version="8.2"} 1
Info metrics
Just histograms for gauges.
What else am I supposed to say?
Gauge histograms
# TYPE foo stateset
foo{entity="controller",foo="a"} 0
foo{entity="controller",foo="b"} 1
foo{entity="replica",foo="a"} 0
foo{entity="replica",foo="b"} 1
# EOF
State sets
What Prometheus calls untyped metrics.
Unknown
@leodido
7. State of the Art.
Prometheus Python Client >= 2.5.0 📎
Do you want to verify your output is valid OpenMetrics?
Google, Uber, OpenCensus ...
~2 years in the making, nothing more than this out there yet …
Suggestions 🥺
● Better outward communication
● Test suite to let other developers build against it
Give birth to it! 🙏
@leodido
8. Thanks.
Reach me out @leodido on twitter & github!
SEE Y’ALL AROUND IN KUBECON
http://bit.ly/openmetrics_bcn