Скрипт отслеживающий загрузку ЦП (подскажите кто может как проще и вернее сделать.)

Модератор: Модераторы разделов

Аватара пользователя
Ufomen
Сообщения: 81
ОС: CentOS 5.3

Скрипт отслеживающий загрузку ЦП

Сообщение Ufomen »

проблема такая,
по словам пользователей на одном серваке загрузка время от времени просто зашкаливает, но сколько раз я туда не заходил и проверял загрузку ЦП с помощью top и uptime никакой аномальной загрузки не обнаруживал. Может конечно пользователи ошибаются, может я заходил не в то время, короче решено было написать скрипт следящий за загрузкой ЦП и в случае если например она превышает порог в 70% выводить грузящие ее процессы в лог.
Команда uptime показывает загрузку с помощью значений говорящих о загрузке в течении 1, 5 и 10 минут.
Вопрос такой, как взять например только первое значение вывода команды uptime и сравнить его с пороговым?

И куда лучше повесить такой скрипт? я полагаю в cron?
Спасибо сказали:
ssh
Сообщения: 78
ОС: Debian

Re: Скрипт отслеживающий загрузку ЦП

Сообщение ssh »

Код: Выделить всё

while sleep 10;
  do
     load=`uptime | cut -f5 -d':' | cut -f1 -d',' `;
  done


ну и сравнение $load с порогом как-нибудь пристроить.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Скрипт отслеживающий загрузку ЦП

Сообщение IMB »

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: Скрипт отслеживающий загрузку ЦП

Сообщение Ufomen »

Посидел сам сделал это так

Код: Выделить всё

#!/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 находится число ожидающих выполнения процессов.
Уровень загрузки отображается в виде так называемого LA - числа процессов, ожидающих своей очереди на выполнение. Это число позволяет оценить общую нагрузку на систему и не имеет никакого отношения к загрузке процессора.
взято с Википедия - Uptime

Как же тогда определить на сколько реально прогружен ЦП?
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: Скрипт отслеживающий загрузку ЦП

Сообщение Subj »

можно и на основе команды vmstat 1 сделать скрипт
Building better software with Ada
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт отслеживающий загрузку ЦП

Сообщение drBatty »

Subj писал(а):
05.05.2009 12:46
можно и на основе команды vmstat

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
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: