Carbon Graphite изменение времени хранения данных

По уполчанию в базе 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