You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/specs/om/open_metrics_spec_2_0.md
+20-13Lines changed: 20 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,7 +92,7 @@ Strings MUST only consist of valid UTF-8 characters and MAY be zero length. NULL
92
92
93
93
Labels are key-value pairs consisting of strings.
94
94
95
-
Label names beginning with underscores are RESERVED and MUST NOT be used unless specified by this standard. Label names MUST follow the restrictions in the ABNF section.
95
+
Label names beginning with two underscores are RESERVED and MUST NOT be used unless specified by this standard. Label names SHOULD follow the restrictions in the ABNF section under the `label-name` section. Label names MAY be any quoted escaped UTF-8 string as described in the ABNF section. Be aware that exposing UTF-8 metrics is still experimental and may reduce usability.
96
96
97
97
Empty label values SHOULD be treated as if the label was not present.
98
98
@@ -128,7 +128,7 @@ A MetricFamily MAY have zero or more Metrics. A MetricFamily MUST have a name, H
128
128
129
129
##### Name
130
130
131
-
MetricFamily names are a string and MUST be unique within a MetricSet. Names SHOULD be in snake_case. Metric names MUST follow the restrictions in the ABNF section.
131
+
MetricFamily names are a string and MUST be unique within a MetricSet. Names SHOULD be in snake_case. Names SHOULD follow the restrictions in the ABNF section under `metricname`. Metric names MAY be any quoted and escaped UTF-8 string as described in the ABNF section. Be aware that exposing UTF-8 metrics is still experimental and may reduce usability, especially when suffixes are not included.
132
132
133
133
Colons in MetricFamily names are RESERVED to signal that the MetricFamily is the result of a calculation or aggregation of a general purpose monitoring system.
134
134
@@ -329,22 +329,24 @@ metricset = *metricfamily
329
329
330
330
metricfamily = *metric-descriptor *metric
331
331
332
-
metric-descriptor = HASH SP type SP metricname SP metric-type LF
333
-
metric-descriptor =/ HASH SP help SP metricname SP escaped-string LF
334
-
metric-descriptor =/ HASH SP unit SP metricname SP *metricname-char LF
@@ -448,6 +453,8 @@ A double backslash SHOULD be used to represent a backslash character.
448
453
A single backslash SHOULD NOT be used for undefined escape sequences.
449
454
As an example, `\\\\a` is equivalent and preferable to `\\a`.
450
455
456
+
Escaping MUST also be applied to quoted UTF-8 strings.
457
+
451
458
##### Numbers
452
459
453
460
Integer numbers MUST NOT have a decimal point. Examples are `23`, `0042`, and `1341298465647914`.
@@ -751,7 +758,7 @@ Metric labels and MetricPoint value labels MAY be in any order.
751
758
752
759
##### Summary
753
760
754
-
If present, the MetricPoint's Sum Value Sample MetricName MUST have the suffix `_sum`. If present, the MetricPoint's Count Value MetricName MUST have the suffix `_count`. If present, the MetricPoint's Quantile Values MUST specify the quantile measured using a label with a label name of "quantile" and with a label value of the quantile measured.
761
+
If present, the MetricPoint's Sum Value Sample MetricName MUST have the suffix `_sum`. If present, the MetricPoint's Count Value MetricName MUST have the suffix `_count`. If present, the MetricPoint's Quantile Values MUST specify the quantile measured using a label with a label name of "quantile" and with a label value of the quantile measured.
755
762
756
763
If present the MetricPoint's Created Timestamp MUST be inlined with the Metric point with a `ct@` prefix. If the value's timestamp is present, the Created Timestamp MUST be added right after it. If exemplar is present, the Created Timestamp MUST be added before it. Created Timestamp MUST be appended to all Quantile Values, to the MetricPoint's Sum and MetricPoint's Count.
757
764
@@ -775,7 +782,7 @@ Quantiles MAY be in any order.
775
782
776
783
##### Histogram
777
784
778
-
The MetricPoint's Bucket Values Sample MetricNames MUST have the suffix `_bucket`. If present, the MetricPoint's Sum Value Sample MetricName MUST have the suffix `_sum`.
785
+
The MetricPoint's Bucket Values Sample MetricNames MUST have the suffix `_bucket`. If present, the MetricPoint's Sum Value Sample MetricName MUST have the suffix `_sum`.
779
786
780
787
If present the MetricPoint's Created Timestamp MUST be inlined with the Metric point with a `ct@` prefix. If the value's timestamp is present, the Created Timestamp MUST be added right after it. If exemplar is present, the Created Timestamp MUST be added before it. Created Timestamp MUST be appended to all Bucket Values, to the MetricPoint's Sum and MetricPoint's Count.
781
788
@@ -980,7 +987,7 @@ For high availability and ad-hoc access a common approach is to have multiple in
980
987
# EDITOR’S NOTE: This section might be good for a BCP paper.
981
988
-->
982
989
983
-
We aim for a balance between understandability, avoiding clashes, and succinctness in the naming of metrics and label names. Names are separated through underscores, so metric names end up being in “snake_case”.
990
+
We aim for a balance between understandability, avoiding clashes, and succinctness in the naming of metrics and label names. Names are separated through underscores, so metric names end up being in “snake_case”. While we strongly recommend the practices recommended in this document, other metric systems have different philosophies regarding naming conventions. OpenMetrics allows these metrics to be exposed, but without the conventions and suffixes recommended here there is an increased risk of collisions and incompatibilities along the chain of services in a metrics system. Users wishing to use alternative conventions will need to take special care and expend additional effort to ensure that the entire system is consistent.
984
991
985
992
To take an example "http_request_seconds" is succinct but would clash between large numbers of applications, and it's also unclear exactly what this metric is measuring. For example, it might be before or after auth middleware in a complex system.
986
993
@@ -1020,7 +1027,7 @@ While there is metadata about metric names such as HELP, TYPE and UNIT there is
1020
1027
1021
1028
### Metric Names versus Labels
1022
1029
1023
-
There are situations in which both using multiple Metrics within a MetricFamily or multiple MetricFamilies seem to make sense. Summing or averaging aMetricFamily should be meaningful even if it's not always useful. For example, mixing voltage and fan speed is not meaningful.
1030
+
There are situations in which both using multiple Metrics within a MetricFamily or multiple MetricFamilies seem to make sense. Summing or averaging a MetricFamily should be meaningful even if it's not always useful. For example, mixing voltage and fan speed is not meaningful.
1024
1031
1025
1032
As a reminder, OpenMetrics is built with the assumption that ingestors can process and perform aggregations on data.
0 commit comments