-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Сейчас для отделения частей имен ключей с точками в metrics-catalog.yml используются двойные кавычки Attributes."url.path": "/brand/abc-123/sub-1234/".
В коде генерации сделана подмена " на " для совместимости с кодом тестов vector.
Однако сейчас в файле metrics-catalog.yml можно встретить 2 стиля
в ulp_access_log_field_mapping это Attributes."url.path", а в filter: и testdata это Attributes."url.path".
Хочется привести это к одному формату, чтобы не нужно было думать как тут правильно, чтобы подходило и для toml в конфиге vector и тут в yml.
Предложение
Воспользоваться форматом категория:ключ. Так как мы в Ви.Tech используем модель OpenTelemetry Logs Data Model, то в итоге внутри события vector данные хранятся в map (string, string). У нас 2 основных map: Attributes и Resources, остальные простые типы.
Так как имя в map это строка, то нас устроит, например, Attributes:http.response.status_code. В Yaml можно писать это в ключах и значениях. Причем для однообразия можно всегда писать в кавычках "Attributes:http.response.status_code" "http_code" или status: "Attributes:http.response.status_code".
Разбор и преобразование в форму нужную для vector в коде toml тестов просто - сделаем из частей "Attributes"."http.response.status_code". Это решается или в коде по месту {{ "Attributes:http.request.method" | replace(":", "\".\"") | prepend('\"') | append('\"') }} или написанием кастомного модуля к Ansible (filter_plugins/custom_filters.py):
def colon_to_dotted_quotes(value):
return '"{}"'.format('"."'.join(value.split(':')))
class FilterModule(object):
def filters(self):
return {
'colon_to_dotted_quotes': colon_to_dotted_quotes
}
Применять: {{ "Attributes:http.request.method" | colon_to_dotted_quotes }}