The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Пишем скрипты для Cacti (monitor script cacti)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: monitor, script, cacti,  (найти похожие документы)
From: Andrey <bff7755a@mail.ru.> Newsgroups: email Date: Mon, 10 May 2007 14:31:37 +0000 (UTC) Subject: Пишем скрипты для Cacti Оригинал: unix-blog.com Пишем скрипты Рассмотрим, как писать собственные скрипты для Cacti. Для примера я решил показать, как строить графики температуры процессора и материнской платы, используя пакет healthd. Установка healthd Сразу скажу, что сначала я хотел нужную информацию получать с помощью mbmon'а. После того, как я поставил его я столкнулся с определенными трудностями, связанными с smbus. Решения проблемы я пока не нашел, но скрипт для mbmon'а был уже написан, поэтому я приведу его здесь - он должен работать. После этого я наткнулся на другую утилиту - healthd и решил попробовать ее. Ставить, естественно, будем из портов. cd /usr/ports/sysutils/healthd make && make install Если все прошло успешно, исполняемые файлы теперь находятся в /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, запускаем его командой [pensnarik][mutex]~> 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 # Hardware mnonitor script for cacti 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]; Думаю, пояснять работу программы не надо, итак все должно быть понятно. Проверяем, как он работает [pensnarik][mutex]~> 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 графика на основе только что описанных шаблонов. Готовые шаблоны На всякий случай выкладываю готовые xml-шаблоны для графиков cacti.
  • Шаблон для кулеров (копия)
  • Шаблон для температур (копия) Ссылки
  • Официальный сайт Cacti
  • Форум пользователей Cacti
  • Коллекция шаблонов для Cacti

  • << Предыдущая ИНДЕКС Правка src / Печать Следующая >>

    Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Sergey A. Bulba (?), 14:56, 10/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отлично разжёвано!
     
  • 1.2, zedis (?), 16:31, 10/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошо бы ещё привести пример как к этому скрипту подцепить SNMP свой OID для того чтоб отсылать данную инфу на удалёную машину мониторинга, тогда бы было вообще супер, подобная системы сделана в TEMPLATE для Bind статистика обращения к зонам.
    А вообще инфа полезная кратко и доходчиво, Cacti хорошая вещь сам её юзаю в доль и поперёк
     
  • 1.3, Dyr (??), 17:26, 10/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Здорово, но скриншотов настроек можно было бы и побольше. Не сразу нашёл для Data Templates, как добавлять данные по каждому из полей
     
  • 1.4, Тимофей (??), 17:59, 10/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    можно было сделать гораздо проще через Data Input Method-> Get SNMP Data. А в примере автора скрипт делает SNMP запросы.!!! А лишние демоны енто не есть гут.
     
     
  • 2.5, Dyr (??), 18:19, 10/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >можно было сделать гораздо проще через Data Input Method-> Get SNMP Data. А в примере автора скрипт делает SNMP запросы.!!! А лишние демоны енто не есть гут.
    Где вы у автора увидели SNMP запросы?
     

  • 1.6, zedis (?), 19:09, 10/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я тоже не видел у автора ни слова про SNMPюююю
     
  • 1.7, Den (??), 22:12, 10/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    имелось ввиду, что если скрипт находится на уделенной машине, а какти стоит отдельным хостом. Для этого в snmpd  на определенный oid биндится вызов скрипта и передачей им нужных параметром. При этом с машины, где установлен cacti делается простой запрос snmpget для чтения этих параметров.
     
  • 1.8, Тимофей (??), 09:26, 11/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не составляет сложносту под виндой поднять стандартную Службу ловушек SNMP. и потом элементарно просто делается простой запрос snmpget. у cacti есть уже Host MIB - Available Disk Space, Host MIB - CPU Utilization, Host MIB - Logged in Users, Host MIB - Processes, Interface - Traffic (bits/sec). это только стандартные и ненужны не какие скрипты левые, демоны. Всё делается стандартными средствами винды и cacti.
     
     
  • 2.9, Shooter (?), 12:34, 11/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Вот только откуда взять винду на бсд-машине?
     

  • 1.10, zedis (?), 15:24, 11/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В кацты как делается SNMP запросы сообственые это и так написано в документации, а вот как с удалённой машине (BSD/Win) на которой настроен и работет net-snmp/Win-snmp сделать свой сообственый OID чтоб с этих машин можно было бы на Кацты забирать значения по SNMP - OID ???
     
     
  • 2.11, Sem (??), 12:08, 12/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    ... написано в документации net-snmp. И все еще не пойму, причем тут виндовс? В виндовс свои средства.
     

  • 1.12, aaa111 (?), 13:49, 14/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё же, лучше было бы сделать это на SNMP + XML.
     
  • 1.13, аноним (?), 14:50, 14/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    поправочка:
    Официальный сайт Cacti
    http://www.cacti.net/
     
  • 1.14, WebCob (?), 16:08, 27/08/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А по этой доке вообще можно что то создать?
    Начал хорошо, а концовку съел!
    И в итоге, все равно вернулся к:
    http://www.cacti.net/downloads/docs/html/data_input_methods.html
     
  • 1.15, CISCO (??), 21:23, 16/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    для каждого виртуального хоста в апаче слабо? как?
     
  • 1.16, BabyKiller (?), 14:35, 06/08/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Установка cacti в Windows для людей: http://files.davehope.co.uk/cacti/
     
  • 1.18, vmart (ok), 10:34, 19/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    RRDTool Says:

    ERROR: the RRD does not contain an RRA matching the chosen CF


    Как пофиксить?

     
  • 1.19, andrew (??), 12:07, 20/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    # healthdc
    localhost       182.0    0.0     0.0    7031    10629   16071   1.34    1.52    3.25    5.03    11.25   -6.66   -1.85

    как пофиксить такие дикие цифры?

     
     
  • 2.27, vlad5503 (?), 12:35, 11/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Такая же ситуёвина
    # healthdc
    localhost       156.0    0.0     0.0    0000    6750   27000   1.57    1.78    3.25    5.08    11.43   -7.05   -2.70

    И как это исправить пока не нашел..
    В таком виде использовать ну просто не могу далее...

     

  • 1.20, vmart (ok), 12:19, 20/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У кого-то есть скрипт для mbmon?
    А то этот healthd не показывает температуру процессора, видимо поддерживает малое число оборудования.
     
  • 1.21, andrew (??), 12:34, 20/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот для mbmon
    http://forums.cacti.net/about20955.html

    а вот, что у меня mbmon показывает, кто сталкивался с таким разбросом?

    # mbmon

    Temp.= 42.0, 40.0, 127.0; Rot.= 5152,    0, 5625
    Vcore = 1.34, 1.52; Volt. = 3.25, 5.03, 11.25,  -6.68, -1.85

    Temp.= 37.0, 13.0, 82.0; Rot.= 5152,    0, 5625
    Vcore = 2.27, 2.58; Volt. = 2.88, 4.54, 10.21,  -6.79, -2.22

     
     
  • 2.22, vmart (ok), 13:20, 20/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    там линк на скрипты битый :(
     
  • 2.23, vmart (ok), 13:37, 20/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >
    ># mbmon
    >
    >Temp.= 42.0, 40.0, 127.0; Rot.= 5152,    0, 5625
    >Vcore = 1.34, 1.52; Volt. = 3.25, 5.03, 11.25,  -6.68, -1.85
    >
    >
    >Temp.= 37.0, 13.0, 82.0; Rot.= 5152,    0, 5625
    >Vcore = 2.27, 2.58; Volt. = 2.88, 4.54, 10.21,  -6.79, -2.22
    >

    Да, кстати. А mbmon лучше запускать с ключем -r, тогда данные имеют более-менее божеский вид. Например:

    $ mbmon -r
    TEMP0 : 35.0
    TEMP1 : 22.0
    TEMP2 : 29.0
    FAN0  :    0
    FAN1  : 10546
    FAN2  :    0
    VC0   :  +1.23
    VC1   :  +3.33
    V33   :  +3.04
    V50P  :  +4.95
    V12P  : +11.13
    V12N  :  -0.00
    V50N  :  -0.00

     

  • 1.24, andrew (??), 23:29, 20/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    меняется вид вывода, но цифры продолжают удивлять, например, как Вам температура 2.0 или 82?

    Temp.= 30.0,  2.0, 82.0; Rot.= 3443,    0, 2812
    Vcore = 2.27, 2.56; Volt. = 2.88, 4.52, 10.21,  -6.79, -2.22

    Temp.= 30.0,  0.0, 82.0; Rot.= 3461,    0, 2800
    Vcore = 2.27, 2.56; Volt. = 2.88, 4.52, 10.21,  -6.79, -2.22

     
  • 1.26, bym (?), 15:14, 09/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Господа, не парсите мозг, ставьте lm-sensors
    Можно по очень простому, без регулярок, всё как в детском саду сделать

    #!/usr/bin/perl
    @sensoroutput='/usr/bin/sensors';
    $outstr = @sensoroutput[19];
    $outstr = substr($outstr, 15, 2);
    print "$outstr\n";

    топорно, но работает (условие, температура должна быть от 10 до 99, т.к. жестко к позиции привязываемся(но можно и использовать функцию index, будет элегантнее))

    [сообщение отредактировано модератором]

     

    лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру