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