Команды для определения уровня использования сервера

Команды для определения уровня использования сервера

Я пишу скрипт новой программы, которая будет подключаться к кластеру машин в парке VM и, надеюсь, проверять уровень их использования. Клиенты VM представляют собой комбинацию RHEL и CentOS и работают на нескольких хостах KVM.

Я надеюсь, что смогу найти виртуальные машины, которые больше не нужны, проверив, для чего они сейчас используются.

Какие показатели будут хорошими для оценки использования системы и какие команды могут помочь мне оценить систему соответствующим образом?

Я думаю, что если я скомбинирую такие команды, как uptime, "chkconfig --list", last и ps, я смогу определить скорость использования, но на очень неточном уровне.

Говоря об использовании системы, я имею в виду, используется ли машина или ее можно выключить, не нанося вреда каким-либо приложениям или пользователям.

С помощью примеров я могу определить, есть ли серверы, которые сильно отличаются от остальных, но я не смогу сказать, используются они или нет.

решение1

Мониторинг

Это довольно открытый вопрос. Существует множество приложений, которые можно использовать для мониторинга загрузки ЦП сервера, сетевого трафика, файлового ввода-вывода и т. д.

На самом базовом уровне я бы начал с мониторинга загрузки ЦП виртуальных машин. Вы можете контролировать это двумя способами: либо внутри самих виртуальных машин, либо извне на хостах виртуальных машин.

Мониторинг через KVM Host

Поскольку виртуальная машина на самом базовом уровне — это всего лишь приложение, вы можете просто контролировать каждую виртуальную машину на сервере KVM, наблюдая за соответствующим ей процессом QEMU.

$ ps -C qemu-kvm -o pid,time,etime,pcpu,args|perl -lane 'printf "%-7s %-12s %-12s %-5s %-5s %-s\n", @F[0..3,9,13]'
PID     TIME         ELAPSED      %CPU        
3860    11:37:32     85-10:32:43  0.5   512   mungr
4005    3-22:34:33   85-10:32:25  4.6   512   cobbler
4447    4-20:11:27   85-10:31:14  5.6   2048  mercury
6788    02:28:58     54-08:59:04  0.1   1024  xwiki
23916   1-03:46:02   80-09:51:47  1.4   512   fan
32539   02:17:48     1-08:50:54   6.9   1024  visualstudio

Что-то вроде вышеприведенного примера, например, отобразит имя KVM (6-й столбец) с используемым %CPU (4-й столбец), а также фактическое время CPU, которое они использовали до сих пор (2-й столбец) и прошедшее время их работы (3-й столбец). 5-й столбец показывает объем оперативной памяти, выделенной для KVM.

Мониторинг через гостевой KVM

Если вам нужен более подробный вид, вам нужно будет фактически залезть в каждую виртуальную машину и собрать данные в них локально. Один из способов получить довольно хорошие данные — использовать инструмент sar. В большинстве ОС RHEL, CentOS и Fedora этот пакет установлен по умолчанию.

ПРИМЕЧАНИЕ: sarявляется частью пакета sysstat!

Без аргументов базовая sarкоманда вернет загрузку ЦП за текущий день, с 12:00 до текущего времени.

Например:

$ date
Tue May  7 21:31:54 EDT 2013

$ sar
Linux 2.6.35.14-106.fc14.x86_64 (grinchy)       05/07/2013      _x86_64_        (4 CPU)

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM     all     24.86      0.00      3.98      6.01      0.00     65.16
12:20:01 AM     all     25.12      0.00      3.98      5.98      0.00     64.93
...
...
09:20:01 PM     all     36.06      0.00      5.00      4.95      0.00     54.00
09:30:01 PM     all     35.40      0.00      4.97      4.66      0.00     54.97
Average:        all     22.29      0.08      4.37      4.80      0.00     68.46

Последняя строка показывает вам общие средние значения для каждой соответствующей меры. Также обратите внимание, что данные выбираются каждые 10 минут. Это, конечно, можно настроить.

Инструмент sarможет делать гораздо больше, чем просто загрузка ЦП. Это полный пакет, который позволяет вам контролировать файловый ввод-вывод, сетевые подключения, подкачку памяти и т. д.

Кроме того, он может генерировать данные в форматах CSV или XML (среди прочих), а также может создавать отчеты!

Установка пакетов

Ваша идея использования chkconfig --list- это то, как я бы начал определять, какие службы настроены на данном ящике. В зависимости от того, как настроен ящик, наши обычно настроены на запуск на уровне выполнения 3, я бы использовал эту команду:

$ chkconfig --list |grep 3:on
abrtd           0:off   1:off   2:off   3:on    4:off   5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
avahi-daemon    0:off   1:off   2:off   3:on    4:on    5:on    6:off
...
...
vboxdrv         0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxweb-service 0:off   1:off   2:on    3:on    4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

Вход пользователя в систему

С помощью этого инструмента можно acопределить, входят ли люди в систему и как долго они это делают.

Например:

$ ac -pd
    sam                                  0.15
Apr 28  total        0.15
    sam                                  0.32
Apr 29  total        0.32
    sam                                  0.00
Apr 30  total        0.00
    sam                                  0.01
    joeuser                              0.00
May  3  total        0.01
    sam                                  1.54
May  5  total        1.54
    sam                                  0.01
Today   total        0.01

Показывает ежедневную разбивку количества часов, проведенных пользователем в системе.

Учет процессов

Если вы действительно серьезно настроены отслеживать, что происходит на Linux-компьютере, вы можете включить учетную запись процесса. Это служба /etc/init.d/psacct. Это даст вам полную информацию о том, когда служба была запущена в последний раз, какие команды последний раз запускал определенный пользователь и т. д. Это, по сути, полный список.

Примеры

команды, последний раз запущенные пользователем vivek

$ lastcomm vivek
userhelper        S   X vivek  pts/0      0.00 secs Mon Nov 13 23:58
userhelper        S     vivek  pts/0      0.00 secs Mon Nov 13 23:45
rpmq                    vivek  pts/0      0.01 secs Mon Nov 13 23:45
rpmq                    vivek  pts/0      0.00 secs Mon Nov 13 23:45
rpmq                    vivek  pts/0      0.01 secs Mon Nov 13 23:45
gcc                     vivek  pts/0      0.00 secs Mon Nov 13 23:45

последний раз rm запускался

$ lastcomm rm
rm                S     root     pts/0      0.00 secs Tue Nov 14 00:39
rm                S     root     pts/0      0.00 secs Tue Nov 14 00:39
rm                S     root     pts/0      0.00 secs Tue Nov 14 00:38

Например, этот последний метод можно использовать для просмотра времени последнего запуска Apache (httpd).

Пакет psacctтакже содержит много других инструментов. Это просто для того, чтобы дать вам некоторые идеи и помочь вам начать.

Рекомендации

решение2

Вы можете запустить

ps -C qemu-kvm -o pid,time,etime,args

на хосте регулярно и проверяйте изменение времени ЦП ( timeполе). Это позволяет вам оценить более длительный период. Вы можете сохранять результаты время от времени, чтобы не потерять их при сбое или выключении виртуальной машины.

Связанный контент