#!/usr/bin/perl -W
# This script was pulled together using ideas from various places
use strict;
use warnings;
use diagnostics;
use Term::ReadKey;
use VMware::VIRuntime;
use VMware::VICommon;
#debugging - autoflush stdout
$| = 1;
if ($#ARGV != 0) {
print "Wrong Arguments Passed\n\n";
my $progname = qx(basename $0);
chop $progname;
printf("Usage: %s <<esxi hostname>>\n\n", $progname);
exit 1;
}
my $username = "root";
my $password = "xxxxxxxxx";
my $service_url = "https://".$ARGV[0]."/sdk";
# Login to Virtual Center service:
Vim::login(service_url => $service_url, user_name => $username, password => $password);
my $host = Vim::find_entity_view(
view_type => 'HostSystem',
properties => [ 'summary' ],
);
my ($cpuMhz, $numCores, $cpuTotal, $cpuUsed, $cpuPercent);
my $summary = $host->get_property("summary");
$cpuMhz = $summary->hardware->cpuMhz;
$numCores = $summary->hardware->numCpuCores;
$cpuTotal = $cpuMhz * $numCores;
$cpuUsed = $summary->quickStats->overallCpuUsage;
$cpuPercent = $cpuUsed / $cpuTotal * 100;
printf("%0.2f\n", $cpuPercent);
perl high cpu usage
VmWare ESXi. Мониторинг загрузки процов, памяти и пр. было решено снимать при помощи Cacti. Для решения этой задачи мною были написаны несколько скриптов, снимающих показатели с серверов. В самих скриптах для осуществления доступа к серверам используется VmWare Perl SDK. Вот, для примера один из скриптов - получает текущую загрузку CPU в процентах с ESXi сервера:
Остальные скрипты построены аналогично.
Проблема в том, что когда поллер Cacti запускается, а он запускает по 3-4 таких скрипта для каждого хоста - напомню, хостов всего 10-15, резко возрастает нагрузка на проц, которая длится около нескольких минут. В связи с этим возникает пара вопросов.
1. Возможно ли как-то сократить утилизацию проца, используя такие скрипты? С чем связано столь неумеренное потребление ресурсов ?
2. Если не использовать perl - сократиться ли нарузка ? Я смотрел - есть что-то типа C++ SDK для таких задач ? Стоит ли заморачиваться с этим ?
Заранее спасибо.
Есть с десяток серверов
Код:
Остальные скрипты построены аналогично.
Проблема в том, что когда поллер Cacti запускается, а он запускает по 3-4 таких скрипта для каждого хоста - напомню, хостов всего 10-15, резко возрастает нагрузка на проц, которая длится около нескольких минут. В связи с этим возникает пара вопросов.
1. Возможно ли как-то сократить утилизацию проца, используя такие скрипты? С чем связано столь неумеренное потребление ресурсов ?
2. Если не использовать perl - сократиться ли нарузка ? Я смотрел - есть что-то типа C++ SDK для таких задач ? Стоит ли заморачиваться с этим ?
Заранее спасибо.