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

Исходное сообщение
"График загрузки CPU на mrtg"

Отправлено Bopros , 17-Янв-04 22:46 
Если я буду для этого брать инфу из top то в этот момент ведь будет выполнятся мой скрипт и он как раз нагрузит процессор, а мне раз я беру статистику через каждую минуту как то бы взять надо среднюю нагрузку процессора за последнюю минуту. Это реально??? Кто вообще как строит графики загруженности процессора?

P.S. никто не поделится как выдрать из top  из
CPU states: 58,9% user, 40,0% system,  0,0% nice,  1,0% idle
число 1,0??? А то ведь можно это знаю стандартные програмки Linux, а то я на перле столько коду замучу, когда можно одной строчкой ...


Содержание

Сообщения в этом обсуждении
"График загрузки CPU на mrtg"
Отправлено temny , 18-Янв-04 00:06 
>Если я буду для этого брать инфу из top то в этот
>момент ведь будет выполнятся мой скрипт и он как раз нагрузит
>процессор, а мне раз я беру статистику через каждую минуту как
>то бы взять надо среднюю нагрузку процессора за последнюю минуту. Это

1. Я думаю, что top не слишком предназначен для снятия этой статистики в скрипте, хотя я могу и ошибаться.
2. Нагрузкой на процессор я бы принебрёг.

>реально??? Кто вообще как строит графики загруженности процессора?
>P.S. никто не поделится как выдрать из top  из
>CPU states: 58,9% user, 40,0% system,  0,0% nice,  1,0% idle
man grep
man awk
>
>число 1,0??? А то ведь можно это знаю стандартные програмки Linux, а
>то я на перле столько коду замучу, когда можно одной строчкой
>...
Вот как это делаю я (для freebsd - возможно для linux придётся подправить):
1. Для снятия средних значений с момента включения компьютера
#!/bin/sh
echo `/usr/sbin/iostat|/usr/bin/tail +3`|/usr/bin/awk '{printf("%d\n%d\n\nidle/user cpu \%\n",$16,$12+$13)}'

#!/bin/sh
echo `/usr/sbin/iostat|/usr/bin/tail +3`|/usr/bin/awk '{printf("%d\n%d\n\nsystem/interrupt cpu \%\n",$14,$15)}'

2. Для снятия текущих значений (сорри, не очень красиво):
В этом случае /usr/sbin/iostat -c 11 выводит 11 строк (за 11 секунд). Первая - среднее значение с момента включения (его пропускаем), из оставшихся десяти находим среднее арифметическое (т.е. средние значения за 10 секунд).
#!/bin/sh
echo `/usr/sbin/iostat -c 11|/usr/bin/tail +4|/usr/bin/awk '{print $16,$12,$13}'`|awk '{printf("%d\n%d\n\nidle/user cpu \%\n",($1+$4+$7+$10+$13+$16+$19+$22+$25+$28)/10,($2+$3+$5+$6+$8+$9+$11+$12+$14+$15+$17+$18+$20+$21+$23+$24+$26+$27+$29+$30)/10)}'

#!/bin/sh
echo `/usr/sbin/iostat -c 11|/usr/bin/tail +4|/usr/bin/awk '{print $14,$15}'`|awk '{printf("%d\n%d\n\nsystem/interrupt cpu \%\n",($1+$3+$5+$7+$9+$11+$13+$15+$17+$19)/10,($2+$4+$6+$8+$10+$12+$14+$16+$18+$20)/10)}'


"График загрузки CPU на mrtg"
Отправлено temny , 18-Янв-04 00:14 
>>P.S. никто не поделится как выдрать из top  из
>>CPU states: 58,9% user, 40,0% system,  0,0% nice,  1,0% idle
>>число 1,0??? А то ведь можно это знаю стандартные програмки Linux, а
сорри.
echo "CPU states: 58,9% user, 40,0% system,  0,0% nice,  1,0% idle"|awk '{printf("%d\n",$9)}'


"График загрузки CPU на mrtg"
Отправлено Bopros , 18-Янв-04 12:42 
спасибо большое, iostat кажется самый лучший выход, для линухи чуть чуть изменённый твой скрипт выглядит так:
/bin/echo `/usr/bin/iostat -c 1 5|/usr/bin/tail +5`|/bin/awk '{printf("0\n%d\n0\n0\n",(400-$9-$18-$27-$36)/4)}'

"График загрузки CPU на mrtg"
Отправлено dawnshade , 18-Янв-04 16:00 
>спасибо большое, iostat кажется самый лучший выход, для линухи чуть чуть изменённый
>твой скрипт выглядит так:
>/bin/echo `/usr/bin/iostat -c 1 5|/usr/bin/tail +5`|/bin/awk '{printf("0\n%d\n0\n0\n",(400-$9-$18-$27-$36)/4)}'


А не проще настроить nagios?