По уполчанию в базе whisper хранятся данные в течении 24-х часов после чего удаляются. Изменить это можно в конфигурационном файле storage-schemas.conf. Для Graphite на Centos он находится в /opt/graphite/conf/storage-schemas.conf. Этот файл перечитывается один раз в 60 секунд, так что если там нет ошибок его изменение будет применено максимально через 1 минуту. Как проверить отсутствие ошибок в файле конфигурации описано несколько ниже. Однако изменение внесённое в файл storage-schemas.conf будет применено только к новым базам. Уже созданные файлы останутся со старыми значениями.
С помощью утилиты whisper-info.py можно посмотреть параметры одной базы whisper.
whisper-info.py /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp maxRetention: 86400 xFilesFactor: 0.5 aggregationMethod: average fileSize: 17308 Archive 0 retention: 86400 secondsPerPoint: 60 points: 1440 size: 17280 offset: 28
А при помощи утилиты whisper-resize.py можно изменить параметры выбранной базы.
Например на используемую в этом примере базу emailsend.wsp мы хотим установить время хранения и прорежения данных по следующей шкале:
1m:2d 2m:4d 4m:6d 8m:12d 16m:24d 32m:48d 1h:1y
Обратите внимание что в отличии от конфиругационного файла периоды перечислены с пробелами вместо запятых.
Для этого запустим утилиту whisper-resize.py
whisper-resize.py --nobackup /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp 1m:2d 2m:4d 4m:6d 8m:12d 16m:24d 32m:48d 1h:1y ... whisper.InvalidConfiguration: Higher precision archives' precision must evenly divide all lower precision archives' precision (archive5: 1920, archive6: 3600)
Ошибка в том что количество сохранённых замеров большего периода должно быть кратно меньшего количества.
По умолчанию утилита whisper-resize.py создаёт резервную копию файла базы. А флаг –nobackup позволяет удалить бэкап базы после преобразования.
whisper-resize.py --nobackup /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp 1m:2d 2m:4d 4m:6d 8m:12d 16m:24d 32m:48d Retrieving all data from the archives Creating new whisper database: /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp.tmp Created: /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp.tmp (172888 bytes) Migrating data without aggregation... Renaming old database to: /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp.bak Renaming new database to: /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp Unlinking backup: /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp.bak
Теперь как видим всё в порядке.
Проверим:
whisper-info.py /opt/graphite/storage/whisper/stats/gauges/projects/emailer/admin_new/schedule_queue_length/emailsend.wsp maxRetention: 4147200 xFilesFactor: 0.5 aggregationMethod: average fileSize: 172888 Archive 0 retention: 172800 secondsPerPoint: 60 points: 2880 size: 34560 offset: 88 Archive 1 retention: 345600 secondsPerPoint: 120 points: 2880 size: 34560 offset: 34648 Archive 2 retention: 518400 secondsPerPoint: 240 points: 2160 size: 25920 offset: 69208 Archive 3 retention: 1036800 secondsPerPoint: 480 points: 2160 size: 25920 offset: 95128 Archive 4 retention: 2073600 secondsPerPoint: 960 points: 2160 size: 25920 offset: 121048 Archive 5 retention: 4147200 secondsPerPoint: 1920 points: 2160 size: 25920 offset: 146968
После изменения конфигурационного файла /opt/graphite/conf/storage-schemas.conf стоит использовать команду для проверки синтаксиса и используемых значений.
/opt/graphite/bin/validate-storage-schemas.py validate-storage-schemas.py Loading storage-schemas configuration from default location at: '/opt/graphite/conf/storage-schemas.conf' Section 'carbon': OK Section 'default_1min_for_7day': OK Section 'default': OK Storage-schemas configuration '/opt/graphite/conf/storage-schemas.conf' is valid
Напоследок приведу несколько команд которые помогут упростить работу с базами whisper.
Получить список файлов которые не обновлялись более 90 дней:
find /opt/graphite/storage/whisper/ -type f -name '*.wsp' -mtime +90 -printf "%TY-%Tm-%TD %TT %p\n"
Удалить файлы которые не обновлялись более 90 дней:
find /opt/graphite/storage/whisper/ -type f -name '*.wsp' -mtime +90 -exec rm '{}' \;
Изменить время и точность хранения данных в базах переданных через консоль (вставка из клипборда). Одна строка – одна база.
while read WHISPER ; do echo "Work with ${WHISPER}" ; whisper-resize.py "${WHISPER}" 1m:2d 4m:7d 8m:14d 16m:30d 32m:90d 64m:1y ; done < <(cat)
Ссылки
http://graphite.readthedocs.io/en/latest/config-carbon.html#storage-schemas-conf