Monitoring VMWare with Monitis

About VMware
Turn your datacenter into a flexible cloud infrastructure with the performance and reliability needed to run enterprise applications on the platform trusted by the most demanding datacenters around the world. Leverage existing assets and applications while offering self-service deployment and provisioning through virtualization. Create a private cloud and deliver IT infrastructure as an easily accessible service.
Deliver IT as a service, when and where needed, while reducing capital and operating costs. Reduce power needs while freeing your IT staff from mundane administrative tasks so they can focus on innovative solutions to your changing business needs.
Monitoring VMware
When monitoring NetFlow on Vmware, one of the major challenges is to identify which virtual machine or host is using which network resource or bandwidth. Best practices say to use VMware Host to get all the network performance data. Before you launch the PowerShell script you must install Vmware PowerCLI and the startup shortcut on the menu under Vmware, Vmware vSphere PowerCLI. When you start PowerShell from that shortcut, PowerShell automatically runs a configuration script that load the PowerCLI snap-in.
Here is a link to download Vmware vSphere PowerCLI last Version 5.0.
http://communities.vmware.com/community/vmtn/server/vsphere/automationtools/powercli
If you’re not using the shortcut (PowerCLI from vmware), you can load the PowerCLI snap-in directly at a PowerShell prompt, user this name with Powershell add PSSnapin cmdlet, like this:
Add-PSSnapin Vmware.VimAutomation.Core
Once you manage to get a local system command prompt, launch PowerShell and navigate to your script directory. Then run the two scripts, so type in the user name and password you want to use against Host, and you’re ready to start running Vmware scripts securely like this example:
Network.ps1 “Get Host Network info”
NetworkFinish.ps1 “Get Host Net-flow”
Example:


Prerequisites:

The following will need to be installed for you to run the script:

  • PowerShell V2
  • PowerCLU 4.0 U1 or later version
  • vCenter 2.5 or later version

The parameters to be monitored are:
Network.ps1 script “Network info”
1. Show Number of Hosts
This is the number of host in VI
Powershell comand:

$NetworkInfo = @()
Foreach ($VMHost in (Get-View -ViewType HostSystem | Where {$_.Runtime.ConnectionState -ne "disconnected"})){
Write $VMHost.Name

Counter powershell command for results
# $Details.VMHost = $VMHost.Name
$results += "VMHost:" + $VMHost.Name + ";"

2.Show Network Port group per Host
Names of port group
Powershell comand:

$NetworkSystem = Get-View $VMHost.ConfigManager.NetworkSystem Foreach ($PG in $NetworkSystem.NetworkInfo.PortGroup){ $Details = "" | Select VMHost, vSwitch, PortGroup, ActiveNics, StandbyNics # $Details.VMHost = $VMHost.Name $results += "VMHost:" + $VMHost.Name + ";" Powershell comand for results # $Details.Portgroup = $PG.Spec.Name $results += "Portgroup:" + $PG.Spec.Name + ";"

3.Show Active Network cards NICs
Number of NICs per Host
Powershell comand:

$NetworkSystem = Get-View $VMHost.ConfigManager.NetworkSystem Foreach ($PG in $NetworkSystem.NetworkInfo.PortGroup){ $Details = "" | Select VMHost, vSwitch, PortGroup, ActiveNics, StandbyNics # $Details.VMHost = $VMHost.Name $results += "VMHost:" + $VMHost.Name + ";" Powershell comand for results $ActiveNics = ($PG.ComputedPolicy.NicTeaming.NicOrder.ActiveNic | Select -ExpandProperty $ActiveNic) $results += "ActiveNics:" + $ActiveNics + ";"

4.Show Standby Network cards NICs
Number of NICs per Host
Powershell comand:

$NetworkSystem = Get-View $VMHost.ConfigManager.NetworkSystem Foreach ($PG in $NetworkSystem.NetworkInfo.PortGroup){ $Details = "" | Select VMHost, vSwitch, PortGroup, ActiveNics, StandbyNics # $Details.VMHost = $VMHost.Name $results += "VMHost:" + $VMHost.Name + ";" Powershell comand for results if (!$Details.StandbyNics) { $Details.StandbyNics = ""} $results += "StandbyNics:" + $Details.StandbyNics + ";"

5.Show Virtual switch Names
Number of NICs per Host
Powershell comand:

$NetworkSystem = Get-View $VMHost.ConfigManager.NetworkSystem Foreach ($PG in $NetworkSystem.NetworkInfo.PortGroup){ $Details = "" | Select VMHost, vSwitch, PortGroup, ActiveNics, StandbyNics # $Details.VMHost = $VMHost.Name $results += "VMHost:" + $VMHost.Name + ";"

Powershell comand for results:

 Foreach ($VS in $NetworkSystem.NetworkInfo.vSwitch){ If ($VS.Name -eq $PG.Spec.vSwitchName){ $results += "SwitchName:" + $VS.Name #+ ";"

 


NetflowFinish.ps1 script “show Net-flow”
1.Show PortID number
This is the port ID number of host.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes
Powershell comand for results:
$results += "PortID:" + $counter.PortID + ";"

2.Show Number of Receive in bytes
This is the number of receive in bytes.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes
Powershell comand for results:
$results += "NumOfRecvBytes:" + $counter.NumOfRecvBytes + ";"

3.Show Number of Receive packets
This is the number of receive packets.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes

Powershell comand for results:

$results += "NumOfRecvPackets:" + $counter.NumOfRecvPackets + ";"

4.Show Number of Send in bytes
This is the number of send in bytes.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes

Powershell comand for results:

$results += "NumOfSendBytes:" + $counter.NumOfSendBytes + ";"

5.Show Number of Send packets
This is the number of send packets.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes

Powershell comand for results:

$results += "NumOfSendPackets:" + $counter.NumOfSendPackets + ";"

6.Show World Leader, max of active net-flow
This is the max of active net-flow.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes

Powershell comand for results:

$results += "WorldLeader:" + $counter.WorldLeader + ";"

7.Show the client Name of VMs or network cards
This is the name of VMs ans network cards.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes

Powershell comand for results:

$results += "ClientName:" + $counter.ClientName + ";"

8.Show if the uplink port is False or True
This is the uplink port.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes

Powershell comand for results:
9.Show if the virtual port is Valid
This is the valid port.
Powershell comand:

foreach($counter in (Get-EsxTop –Countername netport)){ #if ($counter.Name -eq "NetPort") { foreach($field in $counter.Fields){ $row = "" | Select Portid, IsValid, IsUplink, ClientName, TeamUplink, WorldLeader,NumOfSendPackets, NumOfSendBytes, NumOfRecvPackets, NumOfRecvBytes
Powershell comand for results:
$results += "IsUplink:" + $counter.IsUplink + ";"

 


A monitor appears in Monitis in a new tab called Network flow.
Example1:

 

 

General Details of Network flow appear in two tables
Example2 for the NetflowFinish.ps1 script:
Network flow

Example3 for the Network.ps1 script:
Network info

 

 

 

 

 

We hope that this article helps you understand how Monitis monitors VMware using PowerShell. Stay tuned for more articles about how to monitor services using Monitis!

You might also like