Skip to content

Commit 32aba1e

Browse files
authored
refact(om2.0): reorder ABFN and enhance comments (#2898)
* fix(om2.0): abnf consistent with model Follow up to #2894 Let the metric be name and labels AND sample. Also fix a typo picked up by Claude. Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com> * refact(om2.0): reorder ABFN and enhance comments Improve ABNF readability. Move timestamp and start-timestamp next to sample. Move numbers to one group (integers moved up) and improve comments. Move classic histograms before native histograms. Improve comments on histograms in general. Fix doble negative_spans error. Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com> --------- Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
1 parent c9ed9a0 commit 32aba1e

1 file changed

Lines changed: 26 additions & 22 deletions

File tree

docs/specs/om/open_metrics_spec_2_0.md

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,11 @@ sample = value [SP timestamp] [SP start-timestamp] *exemplar LF
419419
420420
value = number / "{" composite-value "}"
421421
422+
timestamp = realnumber
423+
424+
; Lowercase st @ timestamp
425+
start-timestamp = %d115.116 "@" timestamp
426+
422427
exemplar = SP HASH SP labels-in-braces SP number SP timestamp
423428
424429
metricname-and-labels = metricname [labels-in-braces] / name-and-labels-in-braces
@@ -427,19 +432,25 @@ name-and-labels-in-braces = "{" metricname-utf8 *(COMMA label) "}"
427432
428433
label = label-key EQ DQUOTE escaped-string DQUOTE
429434
435+
; Number value
430436
number = realnumber
431437
; Case insensitive
432438
number =/ [SIGN] ("inf" / "infinity")
433439
number =/ "nan"
434440
435-
timestamp = realnumber
436-
437-
; Not 100% sure this captures all float corner cases.
441+
; Real floats
442+
; Not 100% sure this captures all float corner cases
438443
; Leading 0s explicitly okay
439444
realnumber = [SIGN] 1*DIGIT
440445
realnumber =/ [SIGN] 1*DIGIT ["." *DIGIT] [ "e" [SIGN] 1*DIGIT ]
441446
realnumber =/ [SIGN] *DIGIT "." 1*DIGIT [ "e" [SIGN] 1*DIGIT ]
442447
448+
; Integers
449+
; Leading 0s explicitly okay
450+
integer = [SIGN] 1*"0" / [SIGN] positive-integer
451+
non-negative-integer = ["+"] 1*"0" / ["+"] positive-integer
452+
positive-integer = *"0" positive-digit *DIGIT
453+
positive-digit = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
443454
444455
; RFC 5234 is case insensitive.
445456
; Uppercase
@@ -485,9 +496,6 @@ escaped-char =/ BS normal-char
485496
; Any unicode character, except newline, double quote, and backslash
486497
normal-char = %x00-09 / %x0B-21 / %x23-5B / %x5D-D7FF / %xE000-10FFFF
487498
488-
; Lowercase st @ timestamp
489-
start-timestamp = %d115.116 "@" timestamp
490-
491499
; Composite values
492500
composite-value = histogram-value / summary-value
493501
@@ -500,6 +508,15 @@ h-count = %d99.111.117.110.116 ":" number
500508
h-sum = %d115.117.109 ":" number
501509
502510
histogram-buckets = classic-buckets / native-buckets [ "," classic-buckets ]
511+
512+
; bucket:[...,+Inf:v] The +Inf bucket is required.
513+
classic-buckets = %d98.117.99.107.101.116 ":" "[" [ ch-le-counts "," ] ch-pos-inf-bucket "]"
514+
ch-le-counts = (ch-neg-inf-bucket / ch-le-bucket) *("," ch-le-bucket)
515+
ch-pos-inf-bucket = "+" %d73.110.102 ":" number
516+
ch-neg-inf-bucket = "-" %d73.110.102 ":" number
517+
ch-le-bucket = realnumber ":" number
518+
519+
; schema:3,zero_threshold:1e-128,zero_count:2,negative_spans:[1:1],negative_buckets:[2],positive_spanes:[-3:1,2:2],positive_buckets:[3,1,0]
503520
native-buckets = nh-schema "," nh-zero-threshold "," nh-zero-count [ "," nh-negative-spans "," nh-negative-buckets ] [ "," nh-positive-spans "," nh-positive-buckets ]
504521
505522
; schema:i
@@ -508,11 +525,11 @@ nh-schema = %d115.99.104.101.109.97 ":" integer
508525
nh-zero-threshold = %d122.101.114.111 "_" %d116.104.114.101.115.104.111.108.100 ":" realnumber
509526
; zero_count:x
510527
nh-zero-count = %d122.101.114.111 "_" %d99.111.117.110.116 ":" number
511-
; negative_spans:[1:2,3:4] and negative_spans:[]
528+
; negative_spans:[1:2,3:4] and positive_spans:[-3:1,2:2]
512529
nh-negative-spans = %d110.101.103.97.116.105.118.101 "_" %d115.112.97.110.115 ":" "[" [nh-spans] "]"
513530
nh-positive-spans = %d112.111.115.105.116.105.118.101 "_" %d115.112.97.110.115 ":" "[" [nh-spans] "]"
514-
; Spans can start from any index, even negative, however subsequent spans
515-
; can only advance the index, not decrease it.
531+
; Spans hold offset and length. The offset can start from any index, even
532+
; negative, however subsequent spans can only advance the index, not decrease it.
516533
nh-spans = nh-start-span *("," nh-span)
517534
nh-start-span = integer ":" positive-integer
518535
nh-span = non-negative-integer ":" positive-integer
@@ -523,19 +540,6 @@ nh-positive-buckets = %d112.111.115.105.116.105.118.101 "_" %d98.117.99.107.101.
523540
524541
nh-buckets = number *("," number)
525542
526-
integer = [SIGN] 1*"0" / [SIGN] positive-integer
527-
non-negative-integer = ["+"] 1*"0" / ["+"] positive-integer
528-
; Leading 0s explicitly okay.
529-
positive-integer = *"0" positive-digit *DIGIT
530-
positive-digit = "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
531-
532-
; bucket:[...,+Inf:v] The +Inf bucket is required.
533-
classic-buckets = %d98.117.99.107.101.116 ":" "[" [ ch-le-counts "," ] ch-pos-inf-bucket "]"
534-
ch-le-counts = (ch-neg-inf-bucket / ch-le-bucket) *("," ch-le-bucket)
535-
ch-pos-inf-bucket = "+" %d73.110.102 ":" number
536-
ch-neg-inf-bucket = "-" %d73.110.102 ":" number
537-
ch-le-bucket = realnumber ":" number
538-
539543
; Summary
540544
541545
; count:12.0,sum:100.0,quantile:[0.9:2.0,0.95:3.0,0.99:20.0]

0 commit comments

Comments
 (0)