Интегральный индикатор загрузки

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

NikSaver
Сообщения: 13
Зарегистрирован: Пн май 26, 2014 10:14 am
Откуда: Бобруйск
Благодарил (а): 0
Поблагодарили: 0

Re: Интегральный индикатор загрузки

Сообщение NikSaver » Вс июн 15, 2014 12:25 pm

низкий поклон за информацию
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Интегральный индикатор загрузки

Сообщение Ko/|xo3HUk » Пт ноя 06, 2015 6:28 am

arturmon писал(а):как в лине load average: 0.00, 0.00, 0.00
средняя нагрузка на систему в последние 1, 5 и 15 минут.
Решил у себя организовать именно на этом способе получения информации о загрузке CPU.
Создал класс "SystemVariables", объект CPU_load со свойством server_CPU_load. В phpMyAdmin посмотрел ID и PROPERTY_ID этого свойства.
Создал скрипт /var/www/scripts/SystemVariables_update.sh:

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

#!/bin/bash
echo "UPDATE pvalues SET VALUE=`uptime | grep -o 'load average.*' | cut -c 15-18` WHERE ID=391 AND PROPERTY_ID=233" | mysql -uroot -prootpsw db_terminal
Вызываю данный скрипт через cron раз в минуту и отображаю на индикаторе Alex: http://majordomo.smartliving.ru/forum/v ... =10#p10072
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Интегральный индикатор загрузки

Сообщение Ko/|xo3HUk » Пт ноя 06, 2015 9:24 pm

Данный интегральный индикатор выводит округлённые значения. Если нужно выводить неокруглённые (или округлённые до какого-то знака) - то ищем и правим в файле jsgraphics.js следующий код:

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

    this.lastvalue = this.value;
    this.value = Number(d[0]).toFixed(0);
    this.valupdated = d[1];  
 
Здесь в скобках после команды toFixed(0) меняем ноль на нужное нам число знаков после запятой.
индикатор загрузки.png
индикатор загрузки.png (868 байт) 5554 просмотра
Долго искал сам, может кому время сэкономлю :D
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Интегральный индикатор загрузки

Сообщение Ko/|xo3HUk » Сб ноя 07, 2015 2:47 pm

Ko/|xo3HUk писал(а): Вызываю данный скрипт через cron раз в минуту...
Нашёл ещё костыли - как запускать скрипты через cron чаще чем 1 раз в минуту :)

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

sudo nano  /etc/crontab
*  *    * * *   root    /var/www/scripts/SystemVariables_update.sh; /bin/sleep 10; /var/www/scripts/SystemVariables_update.sh; /bin/sleep 10; /var/www/scripts/SystemVariables_update.sh; /bin/sleep 10; /var/www/scripts/SystemVariables_update.sh; /bin/sleep 10; /var/www/scripts/SystemVariables_update.sh; /bin/sleep 10; /var/www/scripts/SystemVariables_update.sh
В данном случае скрипт запускается 1 раз в 10 секунд.
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ko/|xo3HUk
Сообщения: 160
Зарегистрирован: Ср окт 07, 2015 9:36 am
Благодарил (а): 51 раз
Поблагодарили: 27 раз

Re: Интегральный индикатор загрузки

Сообщение Ko/|xo3HUk » Вс ноя 22, 2015 10:20 am

Ko/|xo3HUk писал(а):Создал скрипт /var/www/scripts/SystemVariables_update.sh:

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

#!/bin/bash
echo "UPDATE pvalues SET VALUE=`uptime | grep -o 'load average.*' | cut -c 15-18` WHERE ID=391 AND PROPERTY_ID=233" | mysql -uroot -prootpsw db_terminal
Попользовался немного данным методом, но понял что он не совсем удобен - да, текущие данные я получаю, но вот история не пишется при таком способе, т.к. система не знает когда записывать значения - просто не понимает когда эти значения изменились. Сделал по подобию сценария для ESP8266: переписал скрипт /var/www/scripts/SystemVariables_update.sh:

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

#!/bin/bash
curl "http://192.168.1.69/objects/?script=SysVar_update&id=CPU_load&1_min=`uptime | grep -o 'load average.*' | sed 's/,//g' | cut -d' ' -f3`&5_min=`uptime | grep -o 'load average.*' | sed 's/,//g' | cut -d' ' -f4`&15_min=`uptime | grep -o 'load average.*' | sed 's/,//g' | cut -d' ' -f5`" 
Затем создал сценарий SysVar_update:
СпойлерПоказать
SysVar_update.png
SysVar_update.png (78.57 КБ) 5358 просмотров
и сам код сценария непосредственно:

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

if ($params['id']=="") { return; } //Если id-шник отсутствует, то перестаем отрабатывать сценарий
addClass('SystemVariables'); //Создаем класс SystemVariables, если он ещё не создан
addClassObject('SystemVariables',$params['id']); //Создаем в классе SystemVariables объект с именем CPU_load
addClassProperty('SystemVariables', 'updated', 0); //Создаёт свойство класса и указывает, что не нужно хранить историю значений
addClassProperty('SystemVariables', '1_min', 730); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 730 дней
addClassProperty('SystemVariables', '5_min', 730); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 730 дней
addClassProperty('SystemVariables', '15_min', 730); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 730 дней
 
//Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем
if ($params['updated']!="") { sg(($params['id'].".updated"),$params['updated']); } //Время обновления
if ($params['1_min']!="") { sg(($params['id'].".1_min"),$params['1_min']); } //Данные о ззагрузке ЦПУ за 1 минуту
if ($params['5_min']!="") { sg(($params['id'].".5_min"),$params['5_min']); } //Данные о ззагрузке ЦПУ за 5 минут
if ($params['15_min']!="") { sg(($params['id'].".15_min"),$params['15_min']); } //Данные о ззагрузке ЦПУ за 15 минут

DebMes("SysVar_update request: ".$_SERVER['REQUEST_URI']); // После этого в XRay во вкладке debug можно смотреть результат.
 
Стала писаться история - смог вывести график :D
СпойлерПоказать
result.png
result.png (30.22 КБ) 5358 просмотров
Текущий сервер: Ноутбук: HP Probook 4515s (без монитора). ОС: Debian GNU/Linux 8.6 (jessie)
Предыдущий сервер: Raspberry Pi 2B. ОС: Raspbian (jessie)
Ответить