AV
Судя по докам на Data Model прометея имена метрик должны матчить регулярке [a-zA-Z_:][a-zA-Z0-9_:]* + использование ':' зарезервировано под user defined recording rules.
Для label регулярка [a-zA-Z_][a-zA-Z0-9_]*
VM, как показал эксперимент, даёт больше свободы. Это может и неплохо, но вот PromQL в
Explore
в графане даже '-' в имени label не переваривает.Пока не до конца понял - это JS в графане проверяет или уже VM отлуп даёт, похоже что и VM не переваривает:
curl --user 'victoria:victoria' -g --url 'http://lmon:8428/api/v1/series?' --data-urlencode 'match[]={interface-name="Bundle-Ether3"}'
{"status":"error","errorType":"422","error":"cannot parse \"{interface-name=\\\"Bundle-Ether3\\\"}\": tagFilterExpr: unexpected token \"-\"; want \"=\", \"!=\", \"=~\", \"!~\", \",\", \"}\"; unparsed data: \"-name=\\\"Bundle-Ether3\\\"}\""}
-
не переваривается, т.к. это оператор. Как отличить метрику foo-bar
от выражения foo - bar
? Для этого метрику нужно прятать в кавычки внутри фигурных скобок: {__name__="foo-bar"}