7 Replies Latest reply on Feb 10, 2015 12:09 AM by AlexeyKuplyakow

    сбор статистики по вирт.машинам (IOPS)

    AlexeyKuplyakow Novice

      Доброго дня, коллеги.

      Собственно столкнулся с такой бедой.

      Сейчас в пилотном проекте запушен VDI на 30 машин. Примерно месяц назад на машинах начались серьезные фризы, в результате раследования оказалось что датастор на котором идет тестерование просто просел по iops.Собственно вывод был сделан из системы мониторинга и логов СХД. А можно ли как то отмониторить IOPs со стороны Vcentra, то есть посмотреть сколько iops генерит каждая машина на датасторе.

        • 1. Re: сбор статистики по вирт.машинам (IOPS)
          Akopylov Expert

          Доброго времени суток.

          Если вам нужно мониторить статы каждой машины, может стоит использовать Powercli? Думаю это удобнее, чем истязать счетчики вкладки performance или esxtop. Вот тема, которая может помочь.

          • 2. Re: сбор статистики по вирт.машинам (IOPS)
            AlexeyKuplyakow Novice

            Проблема что как то никто у нас не работал с powercli. Не кинете ссылочку на какую небудь документашку базовую, как там подключаться к хостам - VC и тд.

            Или какую небудь софтину которая нагрузку в иопсах на машинах покажет.

            • 3. Re: сбор статистики по вирт.машинам (IOPS)
              Akopylov Expert

              Никому из вас и не надо иметь опыт в Powercli, это Powershell с другим набором командлетов. Ссылка, которую я дал поставляет по сути готовый скрипт (и даже не один), командлеты, использующиеся там, можно загуглить в справке VMware за 15 минут. Другое дело, если никто не может в powershell, то тогда выбор либо использовать скрипт вслепую, либо не использовать вообще. Если powercli не вариант для вас, то попробуйте Veeam One free edition, тамошнее представление намного удобнее vSphere performance. Там емнип есть ограничения, аля покажет данные только за 3 последних дня или что-то вроде этого, но для решения вашей задачи хватит за глаза. Ставится быстро и без проблем.

              P.S. "quick start" для powercli полно, например http://virtu-al.net/Downloads/PowerCLIQuickReference.pdf, но не вижу смысла курить такие гайды не зная основ posh, и тем более нет смысла изучать эти гайды для использования одного скрипта, достаточно узнать для чего предназначены командлеты, использованные в нем и понять что же он делает.

              1 person found this helpful
              • 4. Re: сбор статистики по вирт.машинам (IOPS)
                ALEX_TSM Enthusiast

                Привет

                Я сам еще не пробовал, но вот может у Вас будет время протестировать:

                https://labs.vmware.com/flings/io-analyzer

                Там есть такой пунктик

                • Integrated performance results at both guest and host levels
                • 5. Re: сбор статистики по вирт.машинам (IOPS)
                  AlexeyKuplyakow Novice

                  Доброго времени суток.

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

                  untitled1.JPG

                  • 6. Re: сбор статистики по вирт.машинам (IOPS)
                    Akopylov Expert

                    Доброго времени суток.

                    Я попробовал вот что:

                     

                    PowerCLI C:\Windows\system32> $date=(get-date).addhours(-3)

                    PowerCLI C:\Windows\system32> $date

                     

                    27 января 2015 г. 15:10:03

                     

                    PowerCLI C:\Windows\system32> $v=get-vm vcli-04

                    PowerCLI C:\Windows\system32> $v

                     

                    Name                 PowerState Num CPUs MemoryGB

                    ----                 ---------- -------- --------

                    vcli-04              PoweredOn  2        2,000

                     

                    PowerCLI C:\Windows\system32> Get-Stat -Entity $v -Stat virtualDisk.totalWriteLa

                    tency.average -Start $date -Finish (get-date).addhours(-1)

                    Get-Stat : 27.01.2015 18:14:13    Get-Stat        The metric counter "virtualdi

                    sk.totalwritelatency.average" doesn't exist for entity "vcli-04".

                    строка:1 знак:9

                    + Get-Stat <<<<  -Entity $v -Stat virtualDisk.totalWriteLatency.average -Start

                    $date -Finish (get-date).addhours(-1)

                        + CategoryInfo          : ResourceUnavailable: (virtualdisk.totalwritelate

                       ncy.average:String) [Get-Stat], VimException

                        + FullyQualifiedErrorId : Client20_RuntimeDataServiceImpl_CheckUserMetrics

                       _MetricDoesntExist,VMware.VimAutomation.ViCore.Cmdlets.Commands.GetViStats

                     

                    И получил такую же ошибку. Похоже эта метрика недоступна для такого инстанса за указанный промежуток времени. Здесь указано что такие метрики работают для realtime.

                    Вот такая схема отработала для меня прилично:

                    Get-Stat -Entity $v -Stat virtualDisk.totalWriteLatency.average -Realtime


                    Следовательно нужно сделать выборку для нескольких realtime, например поставить в планировщик этот скрипт на раз в 10-15 минут (ну или руками тыкать) и собрать за рабочий день, для статистики самое оно.


                    Вашу первую ошибку я встречал в случае если машина была выключена или недоступна. Можно такие машины пропускать, добавив -ErrorAction SilentlyContinue в командлет Get-Stat (в конец, например), это общий параметр для многих командлетов, он тихо пропустит выключенные/недоступные машины.


                    P.S. вы что-то странное пишете в окне powercli, скрипт достаточно просто запустить в этом окне (C:\script.ps1).

                    P.S.2 здесь рассказано как добавить скрипт в планировщик.


                    update: похоже у вас уходит слишком много времени на использование Powershell. Это однозначно полезный и мощный инструмент, но его стоит изучать системно, может действительно стоит попробовать Veeam one, или как указал коллега IO analyzer? Если вы, конечно, не твердо решили добить этот способ .

                    1 person found this helpful
                    • 7. Re: сбор статистики по вирт.машинам (IOPS)
                      AlexeyKuplyakow Novice

                      Собственно задача решилась через поверкли следующим образом:

                      1 скрипт (соедениение)

                      $sVCentre = "IP Vcenter"

                      $sVCUser = "user@domain.local"

                      $sVCPwd = "user password"

                      Connect-VIServer $sVCentre -User $sVCUser -Password $sVCPwd -ea silentlycontinue

                       

                      2 скрипт включение логирования

                      $ErrorActionPreference="SilentlyContinue"

                      Stop-Transcript | out-null

                      $ErrorActionPreference = "Continue"

                      Start-Transcript -path C:\output.txt -append

                       

                      3 скрипт сбор данных из базы vcentra ($daysback указываем за какое количество дней, $_.Timestamp.ToString() -match ' (0[9]|1[0-9]):'} указываем временной интервал в течений дня. В примере за 3 преведущих дня с 9 до 19

                      $daysback = -3

                      $vm = get-vm | where {$_.PowerState -eq "PoweredOn"}

                      $vms = Get-Vm $vm

                      write-host ( "{0,-10}`t{1,8}`t{2,8}`t{3,8}`t{4,8}" -f "VM", "W IOPS avg", "R IOPS avg", "W IOPS max", "R IOPS max" ) `

                      ; $vms | sort | % {

                        $wval = (((Get-Stat $_ -stat "datastore.numberWriteAveraged.average" -Start (Get-Date).adddays($daysback) -Finish (Get-Date) ) | ? {$_.Timestamp.ToString() -match ' (0[9]|1[0-9]):'} | select -expandproperty Value)  | measure -average -max);

                        $rval = (((Get-Stat $_ -stat "datastore.numberReadAveraged.average" -Start (Get-Date).adddays($daysback) -Finish (Get-Date) ) | ? {$_.Timestamp.ToString() -match ' (0[9]|1[0-9]):'} | select -expandproperty Value)  | measure -average -max);

                        write-host ( "{0,-10}`t{1,8:N2}`t{2,8:N2}`t{3,8:N2}`t{4,8:N2}" -f $_.Name, $wval.average, $rval.average, $wval.maximum, $rval.maximum )

                      }

                      4 скрипт/команда

                      Stop-Transcript

                       

                      В результате на получаем файл C:\output.txt в котором собраны логи по IOPсам виртуальных машин

                      Если данные не собираються то можно посмотреть тут, на тему как включить сборку IOP в Vcentra

                      https://communities.vmware.com/thread/441484

                      https://alpacapowered.wordpress.com/2012/12/17/control-vcenter-performance-counter-collection-and-get-back-vm-iops-statistics/

                        http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2009532