Category Archives: мониторинг

Восстановление попрежденных файлов wsp (Whisper)

Graphite использует в качестве базы данных noSQL базу whisper, которая представляет собой просто структуру каталогов соответствующую ключу статистики в которых лежат файлы *.wsp где хранятся значения разбитые на временные участки.

Whisper это база данных со статичным размером, то есть при создании в конфиге вы определяете сколько и за какой период данных вы будете хранить, и как только появляется статистика с первым ключем, под него создается новый файл с указанным размером.

Данный конфиг задается в файле storage-schemas.conf

Пример такого конфига:

pattern = ^test\.
retentions = 10m:30d,30m:1y,1h:10y

Здесь все ключи, которые начинаются на test.* будут храниться 30 дней с периодичностью одно значение в 10 минут, один год с одним значением за 30 минут и 10 лет с одним значением в час. Все что старше 10 лет будет стираться.

Теперь вернемся к теме поста — если по какой либо причине файл повредился (например проблемы с винтами), графит не будет отображать данные по нему, а функция сумирования значений по маске, когда выводится общее значение по всем заданным метрикам тоже будет выдавать ошибку потому как один или несколько файлов повреждены.

Что бы починить это просто делаем изменения размеры базы на то же самое которое задано в конфиге. Для этого сначала переходим в папку где лежат эти wsp файлы в нужный каталог и выполняем команду

find ./ -type f -name '*.wsp' -exec whisper-resize.py --nobackup {} 10m:30d 30m:1y 1h:10y \;

Обратите внимание, временные промежутки разделены пробелом а не запятой как в конфиг файле.

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