@@ -23,6 +23,10 @@ author:
2323 name : Rob Skillington
2424 organization : Chronosphere
252526+ - ins : O. Williams
27+ name : Owen Williams
28+ organization : Grafana Labs
29+ 2630---
2731
2832- Version: 1.1
@@ -312,22 +316,24 @@ metricset = *metricfamily
312316
313317metricfamily = *metric-descriptor *metric
314318
315- metric-descriptor = HASH SP type SP metricname SP metric-type LF
316- metric-descriptor =/ HASH SP help SP metricname SP escaped-string LF
317- metric-descriptor =/ HASH SP unit SP metricname SP *metricname-char LF
319+ metric-descriptor = HASH SP type SP ( metricname / metricname-utf8) SP metric-type LF
320+ metric-descriptor =/ HASH SP help SP ( metricname / metricname-utf8) SP escaped-string LF
321+ metric-descriptor =/ HASH SP unit SP ( metricname / metricname-utf8) SP *metricname-char LF
318322
319323metric = *sample
320324
321325metric-type = counter / gauge / histogram / gaugehistogram / stateset
322326metric-type =/ info / summary / unknown
323327
324- sample = metricname [ labels] SP number [SP timestamp] [exemplar] LF
328+ sample = metricname-and- labels SP number [SP timestamp] [exemplar] LF
325329
326- exemplar = SP HASH SP labels SP number [SP timestamp]
330+ metricname-and-labels = metricname [labels-in-braces] / name-in-braces
331+ labels-in-braces = "{" [label *(COMMA label)] "}"
332+ name-in-braces = "{" metricname-utf8 *(COMMA label) "}"
327333
328- labels = "{" [ label *(COMMA label)] "}"
334+ label = label-key EQ DQUOTE escaped-string DQUOTE
329335
330- label = label-name EQ DQUOTE escaped-string DQUOTE
336+ exemplar = SP HASH SP labels-in-braces SP number [SP timestamp]
331337
332338number = realnumber
333339; Case insensitive
@@ -366,16 +372,16 @@ HASH = "#"
366372SIGN = "-" / "+"
367373
368374metricname = metricname-initial-char 0*metricname-char
369-
370375metricname-char = metricname-initial-char / DIGIT
371376metricname-initial-char = ALPHA / "_" / ":"
377+ metricname-utf8 = DQUOTE escaped-string DQUOTE
372378
379+ label-key = label-name / DQUOTE escaped-string DQUOTE
373380label-name = label-name-initial-char *label-name-char
374-
375381label-name-char = label-name-initial-char / DIGIT
376382label-name-initial-char = ALPHA / "_"
377383
378- escaped-string = *escaped-char
384+ escaped-string = 1 *escaped-char
379385
380386escaped-char = normal-char
381387escaped-char =/ BS ("n" / DQUOTE / BS)
@@ -430,6 +436,8 @@ A double backslash SHOULD be used to represent a backslash character.
430436A single backslash SHOULD NOT be used for undefined escape sequences.
431437As an example, ` \\\\a ` is equivalent and preferable to ` \\a ` .
432438
439+ Escaping MUST also be applied to quoted UTF-8 strings.
440+
433441##### Numbers
434442
435443Integer numbers MUST NOT have a decimal point. Examples are ` 23 ` , ` 0042 ` , and ` 1341298465647914 ` .
0 commit comments