Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Скрипт для МРТЖ!  (Прочитано 6588 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Скрипт для МРТЖ!
« : 12 Сентября 2008, 13:59:15 »
Всем день добрый. Так как ничего не шарю в программировании - образаюсь сюда за помощью.

Суть таклва: есть сервер на котором работает мртж для снятия показаний загрузки канала и прочее...
я задал цель себе организовать еще один график для отображения заполнености Жестких Дисков данного сервера.

Как описываеться в данной статье http://subnets.ru/blog/?p=27 , надо создать SRV-01.log (который, например, может формировать perl скрипт).


то что меня инетерсует в статье :

В /usr/local/etc/mrtg/mrtg.conf дописываем:

Pagetop[srv01_hdd]: HDD Сервер-01<br>
Title[srv01_hdd]: HDD Сервер-01
PNGTitle[srv01_hdd]: HDD use
MaxBytes[srv01_hdd]: 1250000
AbsMax[srv01_hdd]: 1250000
Target[srv01_hdd]: `/bin/cat /usr/monitor/SRV-01.log`
LegendI[srv01_hdd]: /usr
LegendO[srv01_hdd]: /var
YLegend[srv01_hdd]: Used space, Mb
ShortLegend[srv01_hdd]: Mb
Legend1[srv01_hdd]: /usr
Legend2[srv01_hdd]: /var

При этом в файле /usr/monitor/SRV-01.log (который, например, может формировать perl скрипт):

HDD: /usr and /var
1713067
686879
14 days, 06:33:17

Где 1-ая строка - описание, 2-ая - кол-во занято в разделе /usr, 3-я -кол-во занято в разделе /var, 4-ая время uptime данного сервера


Так вот, что должно быть в скрипте, чтоб он как раз и формировал даные значиения:

HDD: /usr and /var
1713067
686879
14 days, 06:33:17


Буду благодарен за помочь!

Оффлайн tempx77

  • Участник
  • *
  • Сообщений: 212
    • Просмотр профиля
Re: Скрипт для МРТЖ!
« Ответ #1 : 12 Сентября 2008, 15:39:57 »
echo "description
$(df /usr|tail -n1|awk '{print $3}')
$(df /var|tail -n1|awk '{print $3}')
$(uptime|awk '{print $1}')
" > /usr/monitor/SRV-01.log

оно? правда не на перле, но я его не знаю :) да и тут перл ни к чему, имхо

UPDATE:
более правильный и полный вариант
#!/bin/bash                                                                   

PARTS="/usr /var"

echo -n "HDD: "
for part in $PARTS;do
    if [ ! -z $NEEDAND ];then
        echo -n " and "
    fi
    echo -n $part
    NEEDAND=true
done
echo

for part in $PARTS;do
    echo "$(df $part|tail -n1|awk '{print $3}')"
done

echo "$(uptime|awk '{print $1}')"


может делать любое число разделов, надо только менять PARTS= в начале скрипта :)
« Последнее редактирование: 12 Сентября 2008, 15:50:19 от tempx77 »

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #2 : 12 Сентября 2008, 15:52:02 »
echo "description
$(df /usr|tail -n1|awk '{print $3}')
$(df /var|tail -n1|awk '{print $3}')
$(uptime|awk '{print $1}')
" > /usr/monitor/SRV-01.log

оно? правда не на перле, но я его не знаю :) да и тут перл ни к чему, имхо

UPDATE:
более правильный и полный вариант
#!/bin/bash                                                                   

PARTS="/usr /var"

echo -n "HDD: "
for part in $PARTS;do
    if [ ! -z $NEEDAND ];then
        echo -n " and "
    fi
    echo -n $part
    NEEDAND=true
done
echo

for part in $PARTS;do
    echo "$(df $part|tail -n1|awk '{print $3}')"
done

echo "$(uptime|awk '{print $1}')"


может делать любое число разделов, надо только менять PARTS= в начале скрипта :)

Благодарю.. щас испробую.
Если будут вопросы можна обратиться? ;)

Оффлайн tempx77

  • Участник
  • *
  • Сообщений: 212
    • Просмотр профиля
Re: Скрипт для МРТЖ!
« Ответ #3 : 12 Сентября 2008, 16:04:40 »
обращайся :)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #4 : 12 Сентября 2008, 17:27:22 »
В общем, создал даный скрипт /usr/SRV-01.log с правами -rwxr-xr-x . При запуске самого скрипта, на консоль выводяться желаемые значение все ок..

Имееться конфиг /etc/mrtg/hdd.cfg :

Pagetop[srv01_hdd]: HDD server-01
Title[srv01_hdd]: HDD server-01
PNGTitle[srv01_hdd]: HDD use
MaxBytes[srv01_hdd]: 1250000
AbsMax[srv01_hdd]: 1250000
Target[srv01_hdd]: `/bin/cat /usr/SRV-01.log`
LegendI[srv01_hdd]: /films/8
LegendO[srv01_hdd]: /films/4
YLegend[srv01_hdd]: Used space, Mb
ShortLegend[srv01_hdd]: Mb
Legend1[srv01_hdd]: /films/8
Legend2[srv01_hdd]: /films/4



Пробую запускать конфиг и ..:

dionis:/etc/mrtg # env LANG=C /usr/bin/mrtg modems.cfg
WARNING: Problem with External get '/bin/cat /usr/SRV-01.log':
   Expected a Number for 'in' but got '#!/bin/bash                                                                    '

WARNING: Problem with Externale get '/bin/cat /usr/SRV-01.log':
   Expected a Number for 'out' but got ''

ERROR: Target[srv01_hdd][_IN_] ' $target->[4]{$mode} ' did not eval into defined data
ERROR: Target[srv01_hdd][_OUT_] ' $target->[4]{$mode} ' did not eval into defined data

_____________________

Возможно вкурсе этой ошибки?
Что ему не нравиться в параметрах [_IN_] и [_OUT_] ?
И что за ВОРНИНГи, на сколько я понимаю, мртж говорит, что не хватает чего-то в скрипте? :idiot2:

Оффлайн tempx77

  • Участник
  • *
  • Сообщений: 212
    • Просмотр профиля
Re: Скрипт для МРТЖ!
« Ответ #5 : 12 Сентября 2008, 21:26:23 »
ну по идее в /usr/SRV-01.log надо засовывать результат выполнения скрипта, а не его самого :) как это сделать я хз в принципе, но можешь попробовать
Target[srv01_hdd]: `/usr/SRV-01.log`

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #6 : 12 Сентября 2008, 21:51:07 »
ну по идее в /usr/SRV-01.log надо засовывать результат выполнения скрипта, а не его самого :) как это сделать я хз в принципе, но можешь попробовать
Target[srv01_hdd]: `/usr/SRV-01.log`

да... действительно так. что-то  я протупил.
Щас попробую так как посоветовал. :idiot2:

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #7 : 12 Сентября 2008, 22:59:02 »
ну по идее в /usr/SRV-01.log надо засовывать результат выполнения скрипта, а не его самого :) как это сделать я хз в принципе, но можешь попробовать
Target[srv01_hdd]: `/usr/SRV-01.log`

не рисует так графики все ровно! :((
хотя комфин мртж запускаеться без ошибок...


Пробовал в SRV-01.log вставить просто статистику, которая показуеться с твоим скриптом... так выдает кучу ошибок.

В общем... на даном этапе не могу сообразить.. как сделать.. чтоб ту информацию, которую генерит твой скрипт, читало и выводило на экран МРТЖ. Проклятье какое-то. :(

Оффлайн tempx77

  • Участник
  • *
  • Сообщений: 212
    • Просмотр профиля
Re: Скрипт для МРТЖ!
« Ответ #8 : 13 Сентября 2008, 14:29:45 »
хм.
А может поэкспериментируешь и выяснишь, в каком же формате должны быть данные, чтобы мртж их съел и показал правильно? может тупо не надо пустой пятой строки (хотя обычно это необходимо или по крайней мере желательно)?

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #9 : 14 Сентября 2008, 01:01:11 »
хм.
А может поэкспериментируешь и выяснишь, в каком же формате должны быть данные, чтобы мртж их съел и показал правильно? может тупо не надо пустой пятой строки (хотя обычно это необходимо или по крайней мере желательно)?

ой.. эксперементирую уже до посинения! жесть сплошная...
а что ты имеешь ввиду под пятой строкой?

Оффлайн tempx77

  • Участник
  • *
  • Сообщений: 212
    • Просмотр профиля
Re: Скрипт для МРТЖ!
« Ответ #10 : 14 Сентября 2008, 11:05:59 »
после четвертой строки мой скрипт делает еще одну, пустую пятую. Может это из-за неё?
чтобы убрать, замени echo  в echo "$(uptime|awk '{print $1}')"на echo -n.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #11 : 14 Сентября 2008, 14:59:22 »
после четвертой строки мой скрипт делает еще одну, пустую пятую. Может это из-за неё?
чтобы убрать, замени echo  в echo "$(uptime|awk '{print $1}')"на echo -n.

тоесть строка должна иметь вид : echo -n "$(uptime|awk '{print $1}')" ?

______
не помогает :(
« Последнее редактирование: 14 Сентября 2008, 15:25:53 от TrEK »

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #12 : 15 Сентября 2008, 12:52:05 »
вот мне подсказали еще один вариант реализации.. но он к сожалению тоже не дает положительного результата.

WorkDir: /home/www/mrtg/rrd
Language: russian1251
Options[_]: growright, bits
EnableIPv6: No
LogFormat: rrdtool
PathAdd: /usr/local/bin/
LibAdd: /usr/local/lib/perl5/
ImageDir: /home/www/mrtg/images
RunAsDaemon: No
Interval: 5
NoDetach: No

Target[root_localhost]:
1.3.6.1.4.1.2021.9.1.9.1&1.3.6.1.4.1.2021.9.1.9.1:public@127.0.0.1
Title[root_localhost]: ROOT mount point on localhost
MaxBytes[root_localhost]: 100
Unscaled[root_localhost]: ymwd
Options[root_localhost]: growright,gauge,nopercent,noinfo
YLegend[root_localhost]: Used space on /
ShortLegend[root_localhost]: %
Legend1[root_localhost]: ROOT disk
Legend2[root_localhost]: ROOT disk
PageTop[root_localhost]: <H1>ROOT mount point on localhost</H1>


при запуске конфига выдает ошибку:

dionis:/etc/mrtg # env LANG=C /usr/bin/mrtg hdd.cfg
SNMP Error:
Received SNMP response with error code
  error status: noSuchName
  index 2 (OID: 1.3.6.1.4.1.2021.9.1.9.1)
SNMPv1_Session (remote host: "127.0.0.1" [127.0.0.1].161)
                  community: "public"
                 request ID: 198380499
                PDU bufsize: 8000 bytes
                    timeout: 2s
                    retries: 5
                    backoff: 1)
 at /usr/bin/../lib/mrtg2/SNMP_util.pm line 490
SNMPGET Problem for .1.3.6.1.4.1.2021.9.1.9.1 .1.3.6.1.4.1.2021.9.1.9.1 sysUptime sysName on public@127.0.0.1::::::v4only
 at /usr/bin/mrtg line 1922
ERROR: Target[root_localhost][_IN_] ' $target->
  • {$mode} ' did not eval into defined data

ERROR: Target[root_localhost][_OUT_] ' $target->
  • {$mode} ' did not eval into defined data



запрос по БИМу дает положительный ответ:
dionis:/etc/mrtg # snmpwalk -v2c -c public 127.0.0.1 | grep 1.3.6.1.4.1.2021.9.1.9.1
HOST-RESOURCES-MIB::hrSWRunParameters.23068 = STRING: "1.3.6.1.4.1.2021.9.1.9.1"


тоесть тот МИБ, что я использую должен давать информацию про свободное место на вичестерах.

Оффлайн picnik

  • Активист
  • *
  • Сообщений: 310
    • Просмотр профиля
Re: Скрипт для МРТЖ!
« Ответ #13 : 15 Сентября 2008, 12:57:20 »
А может загруженность винчестеров проще через /proc снимать? Я правда не знаю как, но в этом направлении можно чего-нибудь накопать.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт для МРТЖ!
« Ответ #14 : 15 Сентября 2008, 13:00:32 »
А может загруженность винчестеров проще через /proc снимать? Я правда не знаю как, но в этом направлении можно чего-нибудь накопать.

да я в направлении мртж накопал уже тут кучу ошибок... а что я смогу накопать , если даже понятия не имею как через /проц снимать? :coolsmiley:

 

Страница сгенерирована за 0.02 секунд. Запросов: 21.