Назад | Перейти на главную страницу

Как можно отладить сценарий метода ввода данных в Cacti?

(См. Обновления внизу ...)

Я написал сценарий метода ввода данных для Cacti (на Ruby для сбора статистики из beanstalkd), и он работает из командной строки (возвращает одно простое целое число, как описано здесь) при запуске от имени учетной записи пользователя cacti но сам инструмент Cacti не собирает никаких данных, и в журналах ничего нет.

Вот настройка методов ввода данных: Метод ввода данных кактусов http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg

И вот полученный график (после того, как он был добавлен в шаблон диаграммы хоста и оставлен работать достаточно долго для сбора данных): График кактусов http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg

Обновление # 1: Похоже, Cacti лишают окружающую среду:

sudo su - cacti -c 'env -i /script/beanstat --host 10.11.12.13 --port 11300 --stat current-waiting'
/script/beanstat:4:in `require': no such file to load -- rubygems (LoadError)
    from /script/beanstat:4

Если это так, как я могу это обойти?

Обновление # 2: Этот ответ на stackoverflow.com, похоже, проблема с окружающей средой решена, но данные на диаграмме все еще отсутствуют.

Обновление # 3: Благодаря предложению @ Heath я увеличил уровень ведения журнала опроса и поймал это:

WARNING: Result from CMD not valid.  Partial Result: U

Не повезло погуглить, что означает "Частичный результат: U". Сценарий просто выводит одно целое значение.

Обновление # 4: Я наконец-то заставил это работать. Основная проблема заключалась в отсутствии среды при запуске сценария оболочки. Мне пришлось решить это, добавив к моему Ruby-скрипту следующие строки:

#!/bin/sh
PATH=/usr/local/bin:$PATH
exec ruby -x"/full/path/to/script/directory" $0 "$@"
#!/usr/bin/env ruby

И второстепенной проблемой была правильная конфигурация методов ввода данных (по одному для каждой отдельной метрики, которую я хотел собрать, хотя все они использовали один и тот же скрипт), которые питают источники данных, которые питают шаблоны данных (или наоборот, я '' m до сих пор неясно), который питает шаблоны графиков, которые необходимо назначить устройствам, а затем добавить в деревья графиков. В общем, это серьезный провал с хренью для документации, и я надеюсь, что больше никогда не придется это делать.

Обновление # 5: Я поделился своим скриптом на GitHub http://github.com/trak3r/cacti-beanstalkd-script

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

Я вижу, вы создали метод ввода данных и шаблон графика; вы также сделали шаблон данных?