Любой linux администратор наверняка наблюдал аномальные пики на RRD графиках. Пики появляются вследствие нарушения процесса сбора отслеживаемой величины и портят картину на графике. Это нормальное явление для RRD.
На графике трафика пики могут появится после перезапуска сетевого интерфейса или после перезагрузки сервера, что по сути одно и тоже. В обоих случаях процесс подсчета будет прерван из-за остановки устройства.
При появлении пиков необходимо удалить аномальные значения из базы RRD, чтобы график снова стал информативен. Это можно сделать с помощью утилиты rrdtool:
а) в ручную
rrdtool dump -> xml (находим и удаляем пики) -> rrdtool restore
б) или запустив скрипт removespikes.pl, в нем происходит тоже самое, но без вашего участия.
Я использую removespikes.pl. Процесс срезания пиков занимает не более 1 минуты.
На моих серверах установлен мониторинг Munin, поэтому примеры приведены с использованием этого мониторинга. Метод будет работать с любым мониторингов на основе RRD.
Срезаем пики с графиков eth0 трафика
После запуска скрипта вы должны увидеть что-то вроде
Графики Munin eth0 traffic после removespikes.pl
Камень №1
Внимание: запускайте скрипт removespikes.pl под пользователем вашего мониторинга или проверяйте права на rdd файлы созданные скриптом, иначе сбор данных станет не возможен!
На графике выше отмечен разрыв, который произошел, вследствие того что я запускал removespikes.pl из под root. Исправленные rrd файлы были созданы с владельцем root и munin не мог записывать в них данные.
Камень №2
В архиве removespikes-20080226-mkn.tar.gz две модификации скрипта: оригинальная (removespikes.pl-orig) и с доп. функциями (removespikes.pl).
Корректность работы removespikes.pl-orig неоднократно мною проверена на разных серверах.
А вот запустив removespikes.pl я получил неожиданный результат. График как утюгом разгладило :(.
В скрипте есть параметр removespikes.pl
# Threshhold for cutting. Exponents above it will be chopped – срезаются все точки выше этого значения.
my $THRESH=10000;, что соответствует примерно 140Мбит/с.
Мой трафик был больше 140 и попал под это ограничение.
Если у вас обычные 100Мбит/с то это ограничение не окажет влияния на конечный результат.
Скрипт автоматически создает бекап файлы с именами *.rrd.old, так что всегда можно вернутся к исходному состоянию. Главное правильно создать шаблон поиска файлов для прохода removespikes.pl в цикле for… in.
UPD
Проблема с пиками никогда не возникнет, если вместе с munin установить ethtool. С помощью этой утилиты munin определит максимальную скорость сетевого интерфейса и автоматически установит лимит.
Если на сервере нет ethtool то внизу станицы трафика (if_eth0.html) вы увидите сообщение
Traffic of the eth0 interface. Maximum speed is undeterminable (please install ethtool).
После установки apt-get install ethtool сообщение изменится
Traffic of the eth0 interface. Maximum speed is 1000000000 bits per second.
howto-remove-spikes-from-rrd-graphs
rrdtool doc
На графике трафика пики могут появится после перезапуска сетевого интерфейса или после перезагрузки сервера, что по сути одно и тоже. В обоих случаях процесс подсчета будет прерван из-за остановки устройства.
При появлении пиков необходимо удалить аномальные значения из базы RRD, чтобы график снова стал информативен. Это можно сделать с помощью утилиты rrdtool:
а) в ручную
rrdtool dump -> xml (находим и удаляем пики) -> rrdtool restore
б) или запустив скрипт removespikes.pl, в нем происходит тоже самое, но без вашего участия.
Я использую removespikes.pl. Процесс срезания пиков занимает не более 1 минуты.
На моих серверах установлен мониторинг Munin, поэтому примеры приведены с использованием этого мониторинга. Метод будет работать с любым мониторингов на основе RRD.
Срезаем пики с графиков eth0 трафика
## переключаем пользователя (подробнее см. «Подводные камни»)
su – munin
## утасновка скрипта removespikes.pl на сервере
wget oss.oetiker.ch/rrdtool/pub/contrib/removespikes-20080226-mkn.tar.gz
tar xvzf removespikes-20080226-mkn.tar.gz
rm removespikes-20080226-mkn.tar.gz
## Корректировка rrd файлов
## Указываем маску только тех файлов в которых необходимо срезать пики и не трогаем бекапы *.rrd.old при повторных запусках.
for f in `find ~/localdomain/ -name "localhost.localdomain-if_eth0*.rrd"`
do
## я использую removespikes.pl-orig.
## в removespikes.pl добавлен новый функционал и изменен метод среза пиков так, что можно запороть всю RRD базу. (подробнее см. «Подводные камни»)
~/removespikes/removespikes.pl-orig $f;
done;
После запуска скрипта вы должны увидеть что-то вроде
Chopping peak at <!– 2010-04-25 17:00:00 EEST / 1133247800 –>
Chopping peak at <!– 2010-04-25 19:00:00 EEST / 1130359100 –>
Графики Munin eth0 traffic после removespikes.pl
Подводные камни
Камень №1
Внимание: запускайте скрипт removespikes.pl под пользователем вашего мониторинга или проверяйте права на rdd файлы созданные скриптом, иначе сбор данных станет не возможен!
На графике выше отмечен разрыв, который произошел, вследствие того что я запускал removespikes.pl из под root. Исправленные rrd файлы были созданы с владельцем root и munin не мог записывать в них данные.
Камень №2
В архиве removespikes-20080226-mkn.tar.gz две модификации скрипта: оригинальная (removespikes.pl-orig) и с доп. функциями (removespikes.pl).
Корректность работы removespikes.pl-orig неоднократно мною проверена на разных серверах.
А вот запустив removespikes.pl я получил неожиданный результат. График как утюгом разгладило :(.
В скрипте есть параметр removespikes.pl
# Threshhold for cutting. Exponents above it will be chopped – срезаются все точки выше этого значения.
my $THRESH=10000;, что соответствует примерно 140Мбит/с.
Мой трафик был больше 140 и попал под это ограничение.
Если у вас обычные 100Мбит/с то это ограничение не окажет влияния на конечный результат.
Заключение
Скрипт автоматически создает бекап файлы с именами *.rrd.old, так что всегда можно вернутся к исходному состоянию. Главное правильно создать шаблон поиска файлов для прохода removespikes.pl в цикле for… in.
UPD
Проблема с пиками никогда не возникнет, если вместе с munin установить ethtool. С помощью этой утилиты munin определит максимальную скорость сетевого интерфейса и автоматически установит лимит.
Если на сервере нет ethtool то внизу станицы трафика (if_eth0.html) вы увидите сообщение
Traffic of the eth0 interface. Maximum speed is undeterminable (please install ethtool).
После установки apt-get install ethtool сообщение изменится
Traffic of the eth0 interface. Maximum speed is 1000000000 bits per second.
Источники
howto-remove-spikes-from-rrd-graphs
rrdtool doc