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

8

(Смотрите дно для обновлений ...)

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

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

И вот итоговый график (после того, как он был добавлен в шаблон диаграммы хоста и оставлен для работы достаточно долго, чтобы собрать данные): Cacti Graph 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-wait'
/ script / beanstat: 4: в `require ': такой файл не загружается - rubygems (LoadError)
    из / script / beanstat: 4

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

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

Обновление № 3 : Благодаря предложению @ Heath я поднял уровень ведения журнала опросов и обнаружил следующее:

ВНИМАНИЕ: результат CMD недействителен. Частичный результат: U

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

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

#! / Bin / ш
PATH = / USR / местные / бен: $ PATH
exec ruby ​​-x "/ full / path / to / script / directory" $ 0 "$ @"
#! / usr / bin / env ruby

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

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

Тефлон Тед
источник

Ответы:

4

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

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

вереск
источник
Забыл упомянуть; Вы пытались повысить уровень ведения журнала Poller?
Хит
Да, я также сделал шаблон данных; IIRC было обязательным условием для добавления точек данных в шаблон графика.
Тефлон Тед
Хорошая идея на уровне регистрации опросов; Я просто поднял его на ступеньку выше. Спасибо.
Тефлон Тед