Рекомендации по разметке логов
В этом разделе собраны рекомендации по оптимальному формированию логов из полей и атрибутов, что позволит улучшить визуализацию и скорость работы системы.
Вложенность и неймспейсы
В модели данных Monium не поддерживается вложенность, при этом бывает необходимость группировать связанные друг с другом атрибуты.
Для решения этой задачи выполняйте правила:
- Ключ должен состоять из одной или нескольких компонент, разделяемых точкой.
- Все компоненты должны быть в нижнем регистре.
- Последний компонент — имя, все предшествующие — неймспейсы.
- Неймспейсы могут быть вложенными.
- Неймспейс не может быть ключом (например, если в ваших данных есть ключ
my.namespace.something, не используйте ключmy.namespace).
Примеры имен ключей:
request.auth.login
request.auth.type
request.method
request.path
stacktrace
Дополнительно про имена ключей см. в документации OpenTelemetry
Помимо группировки атрибутов при отображении, такой подход облегчает работу с подсказками. Чтобы не вспоминать ключ нужного атрибута, начните вводить его неймспейсы — система подскажет варианты подходящих ключей. Для примера выше можно ввести request. и система отобразит все возможные ключи: request.auth.login, request.auth.type и так далее.
Метки и метаинформация
В модели данных Monium есть два вида атрибутов: метки (labels) и метаинформация (meta).
При выборе между метками и метаинформацией учитывайте, что к меткам предъявляются более строгие требования, чем к метаинформации.
При несоблюдении ограничений метки переносятся в метаинформацию. Таким образом, при записи меток с неконтролируемыми данными возникнет путаница, поскольку один и тот же атрибут может быть записан и в метку, и в метаинформацию, что усложнит поиск данных.
Метки не предназначены для высококардинальных данных (идентификатор запроса, случайные данные, белый шум). Наличие таких атрибутов в метках замедляет скорость работы запросов. Также возможны ограничения на количество уникальных значений меток в Monium.
Правила выбора между меткой и метаинформацией
Атрибут стоит записывать в метку при одновременном выполнении следующих условий:
- Вы планируете фильтровать по значению атрибута (фильтрация по атрибуту помогает решить конкретную задачу).
- В результате фильтрации будет существенно сужаться множество рассматриваемых строчек логов.
- Атрибут имеет самостоятельное значение или тесно связан с другими атрибутами. То есть атрибуты из одного неймспейса должны находиться в метках.
- Множество возможных значений атрибута удовлетворяет ограничениям на имя и значение метки.
- Существует конечное множество уникальных значений атрибута.
Совет
Если вы сомневаетесь в выборе между меткой и метаинформацией, рекомендуется использовать метаинформацию.