URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 23079
[ Назад ]

Исходное сообщение
"MRTG показывает ошибки при получении данных из скрипта"

Отправлено VZ , 17-Ноя-02 18:28 
Здравствуйте!
Поставил из портов mrtg-2.9.22 - FreeBSD 4.6
Получилось есть /usr/local/bin/mrtg и /usr/local/etc/mrtg/mrtg.cfg.sample
Сделал /usr/local/etc/mrtg/mrtg.cfg следующий:
WorkDir: /usr/local/apache/htdocs/stats
Target[df]: '/usr/diskuse'            
PageTop[df]: <H1>df Statistics:</H1>
Options[df]: growright, absolute, gauge      
MaxBytes[df]: 14944862                      
Title[df]: df usage

Скрипт /usr/diskuse
#!/bin/sh
df|tail -2|awk '{print $4}'
echo 0
echo 0
echo

При запуске mrtg выдаёт:
ERROR: Target[df][_IN_] ''/usr/diskuse'' evaluated to '/usr/diskuse' instead of a number
ERROR: Target[df][_OUT_] ''/usr/diskuse'' evaluated to '/usr/diskuse' instead of a number
WARNING: Skipping Update of df, inlast is not defined
WARNING: Skipping Update of df, outlast is not defined

В чём дело?


Содержание

Сообщения в этом обсуждении
"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено LS , 18-Ноя-02 06:49 
>Здравствуйте!
>Поставил из портов mrtg-2.9.22 - FreeBSD 4.6
>Получилось есть /usr/local/bin/mrtg и /usr/local/etc/mrtg/mrtg.cfg.sample
>Сделал /usr/local/etc/mrtg/mrtg.cfg следующий:
>WorkDir: /usr/local/apache/htdocs/stats
>Target[df]: '/usr/diskuse'
>PageTop[df]: <H1>df Statistics:</h1>
>Options[df]: growright, absolute, gauge
>MaxBytes[df]: 14944862
>Title[df]: df usage
>
>Скрипт /usr/diskuse
>#!/bin/sh
>df|tail -2|awk '{print $4}'
>echo 0
>echo 0
>echo
>
>При запуске mrtg выдаёт:
>ERROR: Target[df][_IN_] ''/usr/diskuse'' evaluated to '/usr/diskuse' instead of a number
>ERROR: Target[df][_OUT_] ''/usr/diskuse'' evaluated to '/usr/diskuse' instead of a number
>WARNING: Skipping Update of df, inlast is not defined
>WARNING: Skipping Update of df, outlast is not defined
>
>В чём дело?

с www.mrtg.org:

...
Example:

Target[ezwf]: `/usr/local/bin/df2mrtg /dev/dsk/c0t2d0s0`

Note the use of the backticks (`), not apostrophes (') around the command.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If you want to use a backtick in the command name this can be done but you must escape it with a backslash ...
....


скорее всего дело в этом - он же тебе говорит, что получает "/usr/diskuse" вместо ожидемого числа.

еще с www.mrtg.org:

...
External Monitoring Scripts
    if you want to monitor something which does not provide data via snmp you can use some external program to do the data gathering.

    The external command must return 4 lines of output:

Line 1
current state of the first variable, normally 'incoming bytes count'

Line 2
current state of the second variable, normally 'outgoing bytes count'

Line 3
string (in any human readable format), telling the uptime of the target.

Line 4
string, telling the name of the target.
...

а у тебя скрипт возвращает 5-ть значений. может mrtg на последнюю пустую строку и наплюет, но лучше все-таки ее убрать.


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено LS , 18-Ноя-02 06:59 
и лучше сделать для для нужных дисков

df | grep "/dev/XXXX" | grep -v "grep" | awk '{print $4}'

а то примонтируешь какую-нибудь дискету и покажет твой tail информацию совсем не о том устройстве, которое ты ожидал...


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено VZ , 18-Ноя-02 12:19 
Да, у меня из-за плохой связи моё исправление не прошло в конференцию.
Я как только написал сюда. Нашёл в документации ссылку на backtiks (`)

>и лучше сделать для для нужных дисков
>
>df | grep "/dev/XXXX" | grep -v "grep" | awk '{print $4}'
>
>
>а то примонтируешь какую-нибуд%


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено VZ , 18-Ноя-02 12:21 
Да, у меня из-за плохой связи моё исправление не прошло в конференцию.
Я как только написал сюда. Нашёл в документации ссылку на backtiks (`)

>и лучше сделать для для нужных дисков
>
>df | grep "/dev/XXXX" | grep -v "grep" | awk '{print $4}'
>
>
>а то примонтируешь какую-нибудь дискету и покажет твой tail информацию совсем не
>о том устройстве, которое ты ожидал...

Спасибо, будем разбираться!
MRTG вроде заработал. Но есть одно - но.
MRTG запускается как демон, а через cron не хочет.
В поиске по форуму я нашёл подобную проблему, но решения там не было.
У меня в crontab:
0-59/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
В /var/log/cron
Nov 18 12:10:00 fbsd /usr/sbin/cron[3324]: (root) CMD (/usr/libexec/atrun)
Nov 18 12:10:00 fbsd /usr/sbin/cron[3325]: (root) CMD (/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg)
Т.е. вроде запускается он - но не работает. Статистика пустая - через демон всё считает.
Как проверить работает ли скрипт через crontab?
Может что-то с правами?- у меня 755.
Кто подскажет?


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено VZ , 18-Ноя-02 12:36 
Да, у меня из-за плохой связи моё исправление не прошло в конференцию.
Я как только написал сюда. Нашёл в документации ссылку на backtiks (`)

>и лучше сделать для для нужных дисков
>
>df | grep "/dev/XXXX" | grep -v "grep" | awk '{print $4}'
>
>
>а то примонтируешь какую-нибудь дискету и покажет твой tail информацию совсем не
>о том устройстве, которое ты ожидал...

Спасибо, будем разбираться!
MRTG вроде заработал. Но есть одно - но.
MRTG запускается как демон, а через cron не хочет.
В поиске по форуму я нашёл подобную проблему, но решения там не было.
У меня в crontab:
0-59/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
В /var/log/cron
Nov 18 12:10:00 fbsd /usr/sbin/cron[3324]: (root) CMD (/usr/libexec/atrun)
Nov 18 12:10:00 fbsd /usr/sbin/cron[3325]: (root) CMD (/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg)
Т.е. вроде запускается он - но не работает. Статистика пустая - через демон всё считает.
Как проверить работает ли скрипт через crontab?
Может что-то с правами?- у меня 755.
Кто подскажет?


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено LS , 18-Ноя-02 14:56 
>Да, у меня из-за плохой связи моё исправление не прошло в конференцию.
>
>Я как только написал сюда. Нашёл в документации ссылку на backtiks (`)
>
>
>>и лучше сделать для для нужных дисков
>>
>>df | grep "/dev/XXXX" | grep -v "grep" | awk '{print $4}'
>>
>>
>>а то примонтируешь какую-нибудь дискету и покажет твой tail информацию совсем не
>>о том устройстве, которое ты ожидал...
>
>Спасибо, будем разбираться!
>MRTG вроде заработал. Но есть одно - но.
>MRTG запускается как демон, а через cron не хочет.
>В поиске по форуму я нашёл подобную проблему, но решения там не
>было.
>У меня в crontab:
>0-59/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

enter после этой строки нажми...

PS в моей рекомендации по скрипту grep -v "grep" было лишним


>В /var/log/cron
>Nov 18 12:10:00 fbsd /usr/sbin/cron[3324]: (root) CMD (/usr/libexec/atrun)
>Nov 18 12:10:00 fbsd /usr/sbin/cron[3325]: (root) CMD (/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg)
>Т.е. вроде запускается он - но не работает. Статистика пустая - через
>демон всё считает.
>Как проверить работает ли скрипт через crontab?
>Может что-то с правами?- у меня 755.
>Кто подскажет?



"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено VZ , 19-Ноя-02 13:48 
>>MRTG вроде заработал. Но есть одно - но.
>>MRTG запускается как демон, а через cron не хочет.
>>В поиске по форуму я нашёл подобную проблему, но решения там не
>>было.
>>У меня в crontab:
>>0-59/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
>
>enter после этой строки нажми...
>
Нет, не работает. И enter нажимал и буковку o нажимал (vi)
И следом за одной строчкой другое задание вставлял - и между ними enter нажимал. Не работает:(
Где посмотреть про cron и crontab и где ошибки его собираются.
Т.к. в /var/log/cron он пишет только то что пишет (см. ниже)

Написал скрипт /usr/local/etc/mrtg/stat
#!/bin/sh
echo 123 >> /usr/local/etc/mrtg/stat.log

При запуске: /usr/local/etc/mrtg/stat
Получаю в каталоге файл stat.log с содержимым 123
Запущу ещё раз - ещё добавится 123.

Выставляю задание на выполнение через crontab
В логах пишет что-то:
Nov 19 13:41:00 fbsd /usr/sbin/cron[740]: (root) CMD (/usr/local/etc/mrtg/stat)

Содержимое файла не изменилось. Т.е. скрипт не сработал.
Что я не так делаю? Вставка enter не помогает - или с руками что?


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено Nikolaev D. , 19-Ноя-02 16:02 
Куда пишешь-то ? в (censored) :) ?
Если в /etc/crontab , тогда надо ТАК:

1 * * * * root /usr/sbin/бла-бла-бла | mail admin

mail для дебага, запуск раз в минуту, но рекомендую раз в 5 мин.

И "killall -1 cron"  выполнить опосля.


"RE: MRTG показывает ошибки при получении данных из скрипта"
Отправлено AlexDavAron , 19-Ноя-02 18:20 
>Куда пишешь-то ? в (censored) :) ?
>Если в /etc/crontab , тогда надо ТАК:
>
>1 * * * * root /usr/sbin/бла-бла-бла | mail admin
>
> mail для дебага, запуск раз в минуту, но рекомендую раз в
>5 мин.
>
>И "killall -1 cron"  выполнить опосля.

либо  1 * * * * root /usr/sbin/ХХХ --loggin /var/log/mrtg.log