Comments 25
1) У вас скрипт на перле, а в кроне питон
2)
>в bash нету возможности сравнивать десятичные числа
3) Зачем еще раз получать нагрузку для отсылки в письме, ежели она у вас и так уже есть.
2)
>в bash нету возможности сравнивать десятичные числа
$ if [ 30 \> 20 ]; then echo 'ok';fi
ok
$ if [ 10 \> 20 ]; then echo 'ok';fi
$
3) Зачем еще раз получать нагрузку для отсылки в письме, ежели она у вас и так уже есть.
Гм. Десятичные же, да.
$ if [ 19.9 \> 20 ]; then echo 'ok';fi
$
$ if [ 20.1 \> 20 ]; then echo 'ok';fi
ok
1. Заработался, поправил.
2. Эм, хорошо, но переписывать скрипт на данный момент не вижу смысла.
3. Об этом я написал в топике.
2. Эм, хорошо, но переписывать скрипт на данный момент не вижу смысла.
3. Об этом я написал в топике.
Я хотел использовать значение переменной load в переменной exec, вместо того что бы перепечатывать всю команду, но к сожалению у меня так и не получилось это сделать из за недостаточных знаний языка Perl.
Для таких вещей есть monit и god. Зачем делать лисапед?
3)
2) Что там переписывать?
`echo $load | mail -s 'High load [SERVERNAME]' admins\@example.com"`;
2) Что там переписывать?
#!/bin/bash
MAX_LOAD=20.0
LOAD=`uptime | grep -o 'load average.*' | grep -v grep | cut -c 15-18`
if [ $LOAD \> $MAX_LOAD ]; then
echo $LOAD | mail -s 'High load [SERVERNAME]' admins@example.com
Полезно. Только поправьте в статье:
таким образом команда полная команда
пока целиком все не читал, но могу точно вам сказать:
«grep -v grep» нужен только при разборе вывода «ps».
«grep -v grep» нужен только при разборе вывода «ps».
Еще дополнение: необязательно вызывать дополнительную утилиту uptime, чтобы достать load average. Изучайте дерево /proc, узнаете много нового :)
Кроме того, вы дергаете load за 1 минуту, это не совсем верно, такие пики вполне допустимы, лучше берите за 5 минут, это второе значение.
Кроме того, вы дергаете load за 1 минуту, это не совсем верно, такие пики вполне допустимы, лучше берите за 5 минут, это второе значение.
cat /proc/loadavg | cut -c6-9
илиawk '{print $2}' /proc/loadavg
Я пока Nagios не увидел, тоже извращался в свое время…
как интересно вы используете grep + сut из перла
UFO just landed and posted this here
можно для красоты сделать так:
#!/bin/bash
MAX_LOAD=20.0
ADMIN="admins@example.com"
LOAD=`awk '{print $2}' /proc/loadavg`
if [ $LOAD \> $MAX_LOAD ]; then
cat <<EOF >/tmp/hl.html
To: $ADMIN
Subject: High load alert
Content-Type: text/html; charset="koi8-r"
<html>
<body>
<h1>Host:Allert! $(hostname) , date $(date)</h1>
<h2>High load $(hostname)</h2>
<p><font size="2" color="black" face="Arial"> Винмание возрасла нагрузка на $(hostname)</font>
<p><font size="2" color="black" face="Arial"> Загрузка системы составляет $LOAD</font></p>
<p><font size="7" color="red" face="Arial"> Срочно принять меры</font></p>
</body>
</html>
EOF
sendmail $ADMIN < /tmp/hl.html
else
echo "all goooooooooood"
fi
Sign up to leave a comment.
Скрипт мониторинга нагрузки на Perl и Bash