Graphite — проблема с поиском на уровне нескольких архивов

Я настроил свои файлы со следующими параметрами хранения:

retentions = 10s:7d,1m:30d,5m:1y 

И это действительно работает, однако моя проблема в том, что веб-приложение решает получить данные из нижнего архива, а не из верхнего. Например: поскольку у меня есть разрешение 10 с за 1 неделю, я ожидаю, что если я просматриваю менее 1 недели (в моем случае я просто просматривал данные за 1 день), то данные будут получены с первого уровня (с точностью до 10 секунд), однако веб-приложение извлекает данные со следующего уровня, и поэтому я получаю средние данные.

Я нашел это в документации:

"При извлечении данных (в пределах временного диапазона) используется первый архив, который может удовлетворить весь период времени. Если период времени перекрывает границу архива, будет использоваться архив более низкого разрешения. . Это обеспечивает более простое поведение при извлечении данных, поскольку разрешение данных одинаково во всей возвращаемой серии».

Как я могу заставить графит получить данные из архива с самым высоким разрешением? Я намерен иметь высокое разрешение в течение 1 недели (10 секунд), а следующий уровень — 30 дней для 1-минутного разрешения.

Есть ли способ добиться этого или, может быть, перенастроить мою схему хранения?


person Tomer Peled    schedule 14.03.2013    source источник


Ответы (2)


После дальнейшего изучения я нашел проблему.

Когда я запрашиваю Whisper напрямую с помощью команды «Fetch», он действительно получает значение с более высокого уровня, как и ожидалось. Когда я использовал API рендеринга, он также работал, как и ожидалось, но когда я использовал графики веб-приложений (или API с форматом SVG), он немного сглаживал график, из-за чего он терял пики. Я смог увидеть эти всплески только тогда, когда проделал некоторую детализацию за период (для 2-часового разрешения).

Решение состоит в том, чтобы использовать свойство minXStep для каждого графика и установить его равным 0 (0,1 также будет работать достаточно хорошо). Если вы используете API-интерфейс рендеринга, просто используйте свойство minXStep (по умолчанию 1), а если вы используете область информационных панелей, перейдите в «Параметры рендеринга» -> «Ось X» -> «Порог консолидации ширины точки» и установите его таким образом. меньшее значение, чем 1.

Для получения дополнительной информации см. http://graphite.readthedocs.org/en/latest/render_api.html#minxstep

person Tomer Peled    schedule 15.03.2013
comment
Я не вижу параметра конфигурации для изменения значения по умолчанию. Значение по умолчанию закодировано в /opt/graphite/webapp/graphite/render/glyph.py в строке 942. - person Matthew Lundberg; 23.04.2014

Приятно видеть, что вы решили свою проблему. Я опубликую ответ, который я должен дать, так как он может быть полезен другим (хотя звучит так, как будто в вашем случае это не так).

Обычно происходит следующее: вы ищете, скажем, час сегодня и получаете ожидаемое высокое разрешение, но если вы ищете час две недели назад, вы получаете более грубое разрешение, потому что это все, что доступно Graphite. Вы также можете обнаружить, что он выбирает более грубое разрешение, когда просматриваете диапазоны дат, выходящие за границу политики хранения. В вашем случае, если вы посмотрите на последние 8 дней, вы получите разрешение 1 м, потому что, несмотря на то, что оно имеет разрешение 10 с большую часть времени, оно имеет разрешение 1 м только для 8-го дня, и поэтому он использует разрешение 1 м для всего.

person Ian Malpass    schedule 26.03.2013