проблема такая,
по словам пользователей на одном серваке загрузка время от времени просто зашкаливает, но сколько раз я туда не заходил и проверял загрузку ЦП с помощью top и uptime никакой аномальной загрузки не обнаруживал. Может конечно пользователи ошибаются, может я заходил не в то время, короче решено было написать скрипт следящий за загрузкой ЦП и в случае если например она превышает порог в 70% выводить грузящие ее процессы в лог.
Команда uptime показывает загрузку с помощью значений говорящих о загрузке в течении 1, 5 и 10 минут.
Вопрос такой, как взять например только первое значение вывода команды uptime и сравнить его с пороговым?
И куда лучше повесить такой скрипт? я полагаю в cron?
Скрипт отслеживающий загрузку ЦП (подскажите кто может как проще и вернее сделать.)
Модератор: Модераторы разделов
-
ssh
- Сообщения: 78
- ОС: Debian
Re: Скрипт отслеживающий загрузку ЦП
Код: Выделить всё
while sleep 10;
do
load=`uptime | cut -f5 -d':' | cut -f1 -d',' `;
doneну и сравнение $load с порогом как-нибудь пристроить.
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: Скрипт отслеживающий загрузку ЦП
user@localhost
aptitude show atsar
Package: atsar
New: yes
State: not installed
Version: 1.7-2
Priority: optional
Section: admin
Maintainer: Michael Stone <mstone@debian.org>
Uncompressed Size: 111k
Depends: libc6 (>= 2.3.2.ds1-4)
Recommends: cron
Description: system activity reporter
Monitor system resources such as CPU, network, memory & disk I/O, and record
data for later analysis-
Ufomen
- Сообщения: 81
- ОС: CentOS 5.3
Re: Скрипт отслеживающий загрузку ЦП
Посидел сам сделал это так
Ну естественно вместо echo можно вставить все что нужно сделать при высокой загрузке.
Так же бродя по различным форумам выяснил что загрузка ЦП и то что находится в /proc/loadavg это разные вещи... в /proc/loadavg находится число ожидающих выполнения процессов.
Как же тогда определить на сколько реально прогружен ЦП?
Код: Выделить всё
#!/bin/bash
load=`cat /proc/loadavg |awk '{printf "%3d", $2}'`
level=5
if [ $load -ge $level ]; then
echo overload!!!
else
echo normal!!!
fiНу естественно вместо echo можно вставить все что нужно сделать при высокой загрузке.
Так же бродя по различным форумам выяснил что загрузка ЦП и то что находится в /proc/loadavg это разные вещи... в /proc/loadavg находится число ожидающих выполнения процессов.
взято с Википедия - UptimeУровень загрузки отображается в виде так называемого LA - числа процессов, ожидающих своей очереди на выполнение. Это число позволяет оценить общую нагрузку на систему и не имеет никакого отношения к загрузке процессора.
Как же тогда определить на сколько реально прогружен ЦП?
-
Subj
- Сообщения: 151
- Статус: Useful
- ОС: win
Re: Скрипт отслеживающий загрузку ЦП
можно и на основе команды vmstat 1 сделать скрипт
Building better software with Ada
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Скрипт отслеживающий загрузку ЦП
vmstat | sed -rn "/^[ 0-9]+$/ s/^(\s+[0-9]+){13}\s+([0-9]+)\s.*/\2/p"
выдаёт CPU usage
PS:
во первых
Код: Выделить всё
vmstat | sed -rn "/^[ 0-9]+$/ s/^\s*([0-9]+\s+){12}([0-9]+)\s.*/\2/p"во вторых выдаётся фигня какая-то
самой vmstat