пишем скрипты для Cacti
Рассмотрим, как писать собственные скрипты для Cacti. Для примера я решил показать, как строить графики температуры процессора и материнской платы, используя пакет healthd (здесь и далее примеры приведены для FreeBSD).
установка healthd
Сразу скажу, что сначала я хотел нужную информацию получать с помощью mbmon'а. После того, как я поставил его, я столкнулся с определенными трудностями, связанными с smbus. Решения проблемы я пока не нашел, но скрипт для mbmon'а был уже написан, поэтому я приведу его здесь – он должен работать. После этого я наткнулся на другую утилиту - healthd и решил попробовать ее.
После установки healthd - если все прошло успешно - исполняемые файлы находятся в /usr/local/bin. В пакете на самом деле две программы (в отличие от mbmon) - клиент и сервер (демон). Они называются healthdc и healthd соответственно. Конфигурируется сервер при помощи файла /usr/local/etc/healthd.conf, но мы его трогать не будем, так как все должно нормально работать в конфигурации по умолчанию.
После того, как мы установили клиент и сервер, сначала необходимо запустить сервер. Для этого воспользуемся скриптом, который уже находится в /usr/local/etc/rc.d/.
/usr/local/etc/rc.d/healthd.sh start
Чтобы сервер загружался вместе с системой, нужно добавить следующую строчку в /etc/rc.conf:
healthd_enable="YES"
Теперь можно считать, что установка закончена, и можно попробовать запустить клиента.
клиент healthdc
Как я уже говорил выше, клиент называется healthdc и находится в /usr/local/bin. Если после установки был сделан rehash, запускаем его командой
healthdc
localhost 27.0 35.0 0.0 2576 2360 5532 1.38 3.20 3.33 5.08 15.50 -4.00 -4.61
Как видно, вывод команды довольно простой, но информативный. Нам нужны будут только 2, 3, 5, 6 и 7 поля. Это есть температура материнской платы, центрального процессора и текущие скорости вращения трех вентиляторов охлаждения.
пишем скрипт
Писать скрипт будем на Perl. Нужно всего лишь вызвать healthdc без параметров и разобрать его вывод. У меня получилось вот что:
#!/usr/bin/perl
my %data;
$in = `/usr/local/bin/healthdc`;
@data = split(/\t/, $in);
printf "TEMP0:%.2f TEMP1:%.2f FAN0:%d FAN1:%d FAN2:%d", $data[1], $data[2], $data[4], $data[5], $data[6];
Думаю, пояснять работу программы не надо, и так все должно быть понятно.
Проверяем, как он работает:
perl ./health_monitor.pl
TEMP0:27.00 TEMP1:35.00 FAN0:2596 FAN1:2343 FAN2:5532
Cacti требует, чтобы значению каждого из полей предшествовало его имя.
Имя и значения каждого поля должны быть отделены друг от друга двоеточием. Я назвал поля TEMP0, TEMP1, FAN0, FAN1 и FAN2 соответственно.
строим графики
Скрипт готов, теперь можно приступить к самой интересной части
задуманного - построению графиков. Если вы хорошо знакомы с Cacti, этот раздел можно пропустить. Для остальных процесс превращения цифр, возвращаемых скриптом, в красивую картинку я постараюсь описать поподробнее.
data input method
Сначала нужно добавить новый метод ввода данных (Data Input Method). Имя методу (Name) можно дать любое, главное потом самому не запутаться. В качестве Input type здесь нужно указать "Script/Command", поскольку данные мы будем брать из скрипта. Input String - команда, которая выполняется с целью добыть драгоценную информацию. Сюда пишем "perl <path_cacti>/scripts/health_monitor.pl".
Поскольку healthdc не принимает никаких параметров (в нашем случае), в "Input Fields" ничего не добавляем. Зато выводимых полей (Output Fields) будет целых 5. Добавим параметры и дадим им соответствующие имена. После этого метод можно сохранять.
data templates
Далее идем в Data Templates и создаем шаблон для данных. Здесь нужно будет указать все параметры и их характеристики параметров, которые будут использоваться в этом шаблоне. Имя снова можно задавать любое, но желательно, чтобы оно совпадало с именем метода ввода данных.
В качестве Data Input Method выбираем метод, который мы только что создали. Остальные параметры можно оставить со значениями, заданными по умолчанию. Теперь добавляем информацию о каждом из полей данных. Прежде всего даем им разумные имена (Temp0, Temp1 и так далее). Минимальное и максимальное значение для температур я задал 0 и 90 C. Для кулеров максимальное значение можно задать в районе 4000-5000. Data Source Type - "Gauge". Шаблон для дынных готов.
graph templates
После этого можно создавать шаблоны для графиков. У нас их будет 2 – для температур и скоростей вращения кулеров соответственно. Тут все просто. Добавляем 2 области типа AREA (цвета по вкусу) для первого, и 3 таких же для второго шаблона.
графики
Вот и все. Можно считать, что вся работа сделана. Теперь осталось только нажать New Graphs и создать 2 графика на основе только что описанных шаблонов.
Андрей Жиденков, впервые опубликовано на opennet.ru
установка healthd
Сразу скажу, что сначала я хотел нужную информацию получать с помощью mbmon'а. После того, как я поставил его, я столкнулся с определенными трудностями, связанными с smbus. Решения проблемы я пока не нашел, но скрипт для mbmon'а был уже написан, поэтому я приведу его здесь – он должен работать. После этого я наткнулся на другую утилиту - healthd и решил попробовать ее.
После установки healthd - если все прошло успешно - исполняемые файлы находятся в /usr/local/bin. В пакете на самом деле две программы (в отличие от mbmon) - клиент и сервер (демон). Они называются healthdc и healthd соответственно. Конфигурируется сервер при помощи файла /usr/local/etc/healthd.conf, но мы его трогать не будем, так как все должно нормально работать в конфигурации по умолчанию.
После того, как мы установили клиент и сервер, сначала необходимо запустить сервер. Для этого воспользуемся скриптом, который уже находится в /usr/local/etc/rc.d/.
/usr/local/etc/rc.d/healthd.sh start
Чтобы сервер загружался вместе с системой, нужно добавить следующую строчку в /etc/rc.conf:
healthd_enable="YES"
Теперь можно считать, что установка закончена, и можно попробовать запустить клиента.
клиент healthdc
Как я уже говорил выше, клиент называется healthdc и находится в /usr/local/bin. Если после установки был сделан rehash, запускаем его командой
healthdc
localhost 27.0 35.0 0.0 2576 2360 5532 1.38 3.20 3.33 5.08 15.50 -4.00 -4.61
Как видно, вывод команды довольно простой, но информативный. Нам нужны будут только 2, 3, 5, 6 и 7 поля. Это есть температура материнской платы, центрального процессора и текущие скорости вращения трех вентиляторов охлаждения.
пишем скрипт
Писать скрипт будем на Perl. Нужно всего лишь вызвать healthdc без параметров и разобрать его вывод. У меня получилось вот что:
#!/usr/bin/perl
my %data;
$in = `/usr/local/bin/healthdc`;
@data = split(/\t/, $in);
printf "TEMP0:%.2f TEMP1:%.2f FAN0:%d FAN1:%d FAN2:%d", $data[1], $data[2], $data[4], $data[5], $data[6];
Думаю, пояснять работу программы не надо, и так все должно быть понятно.
Проверяем, как он работает:
perl ./health_monitor.pl
TEMP0:27.00 TEMP1:35.00 FAN0:2596 FAN1:2343 FAN2:5532
Cacti требует, чтобы значению каждого из полей предшествовало его имя.
Имя и значения каждого поля должны быть отделены друг от друга двоеточием. Я назвал поля TEMP0, TEMP1, FAN0, FAN1 и FAN2 соответственно.
строим графики
Скрипт готов, теперь можно приступить к самой интересной части
задуманного - построению графиков. Если вы хорошо знакомы с Cacti, этот раздел можно пропустить. Для остальных процесс превращения цифр, возвращаемых скриптом, в красивую картинку я постараюсь описать поподробнее.
data input method
Сначала нужно добавить новый метод ввода данных (Data Input Method). Имя методу (Name) можно дать любое, главное потом самому не запутаться. В качестве Input type здесь нужно указать "Script/Command", поскольку данные мы будем брать из скрипта. Input String - команда, которая выполняется с целью добыть драгоценную информацию. Сюда пишем "perl <path_cacti>/scripts/health_monitor.pl".
Поскольку healthdc не принимает никаких параметров (в нашем случае), в "Input Fields" ничего не добавляем. Зато выводимых полей (Output Fields) будет целых 5. Добавим параметры и дадим им соответствующие имена. После этого метод можно сохранять.
data templates
Далее идем в Data Templates и создаем шаблон для данных. Здесь нужно будет указать все параметры и их характеристики параметров, которые будут использоваться в этом шаблоне. Имя снова можно задавать любое, но желательно, чтобы оно совпадало с именем метода ввода данных.
В качестве Data Input Method выбираем метод, который мы только что создали. Остальные параметры можно оставить со значениями, заданными по умолчанию. Теперь добавляем информацию о каждом из полей данных. Прежде всего даем им разумные имена (Temp0, Temp1 и так далее). Минимальное и максимальное значение для температур я задал 0 и 90 C. Для кулеров максимальное значение можно задать в районе 4000-5000. Data Source Type - "Gauge". Шаблон для дынных готов.
graph templates
После этого можно создавать шаблоны для графиков. У нас их будет 2 – для температур и скоростей вращения кулеров соответственно. Тут все просто. Добавляем 2 области типа AREA (цвета по вкусу) для первого, и 3 таких же для второго шаблона.
графики
Вот и все. Можно считать, что вся работа сделана. Теперь осталось только нажать New Graphs и создать 2 графика на основе только что описанных шаблонов.
Андрей Жиденков, впервые опубликовано на opennet.ru
Сетевые решения. Статья была опубликована в номере 07 за 2007 год в рубрике sysadmin