[PSH] state memory counter : créez une vraie alarme d’overcommit pour ESX
Posted by NiTRo | Filed under Tips & Tricks, VMware
L’un des compteurs les plus connus en matière d’overcommit sur ESX est le memory state. Pour ceux qui ne le connaissent pas, sachez qu’il permet de savoir rapidement dans quel état d’overcommitment (de 0 à 4, high>soft>hard>low) se trouve votre ESX. A 0 tout va bien, au dessus ca commence à devenir short donc le vmkernel va chercher à récupérer de la ram avec les différents moyens qu’il à dispo (un petit tour sur le diagramme Memory Management and Monitoring diagram d’Hany Michael tout juste mis à jour pour se rafraichir la mémoire -haha).
Sachez aussi qu’historiquement statiques, les pourcentages équivalent aux différents states sont “dynamique” depuis ESX 5 et VMware recommande de tuner le paramètre minFreePct sur ESX 4.1 au dessus de 64Go de ram (nous, on vous recommande 3% à partir de 32Go).
Le compteur n’est pas accessible pour faire une alarme dans le vcenter donc nous avons fait chauffer le PowerCLI pour vous en faire une belle qui brille dans la nuit et qui vous alerte dès que le compteur passe à 1 (=1 : warning, >1 : alert) :
(Get-View AlarmManager).CreateAlarm((Get-Folder -NoRecursion |Get-View).MoRef,(New-Object VMware.Vim.AlarmSpec -Property @{Name = "Host memory state";Description = "Custom alarm to monitor Host memory state high-soft-hard-low";Enabled = $true;expression = (New-Object VMware.Vim.OrAlarmExpression -Property @{expression = @((New-Object VMware.Vim.MetricAlarmExpression -Property @{Metric = (New-Object VMware.Vim.PerfMetricId -Property @{CounterId = ((Get-View (Get-View ServiceINstance).Content.PerfManager).PerfCounter|?{$_.groupinfo.key -match "mem"}|?{$_.nameinfo.key -match "state"}|?{$_.RollupType -match "latest"}).key;Instance = ""});Operator = "isAbove";Yellow = "1";YellowInterval = "20";Red = "2";RedInterval = "20";Type = "HostSystem"}))});Action=(New-Object VMware.Vim.GroupAlarmAction -Property @{Action= (New-Object VMware.Vim.AlarmTriggeringAction -Property @{Action = (New-Object VMware.Vim.SendEmailAction -Property @{ToList = "admin@vmware.local";Subject = "[vAlarm] {targetName} memory state is {newStatus}";CcList = "";Body = ""});TransitionSpecs = @((New-Object VMware.Vim.AlarmTriggeringActionTransitionSpec -Property @{StartState = "green";FinalState = "yellow";Repeats = $false});(New-Object VMware.Vim.AlarmTriggeringActionTransitionSpec -Property @{StartState = "yellow";FinalState = "red";Repeats = $true}))})});ActionFrequency = "1800"}))
Tags: alarm, memory overcommit, memory state, PowerCLI, scripting
February 19th, 2015 at 11:43
Bonjour,
Merci beaucoup pour ce post.
Quel référentiel des compteurs VMware utilisez-vous pour savoir comment écrire les filtres qui permettent de sélectionner le compteur adéquat ?
merci
February 19th, 2015 at 11:49
Bonjour, généralement je cherche dans la doc du Performance Manager : http://pubs.vmware.com/vsphere-55/topic/com.vmware.wssdk.apiref.doc/vim.PerformanceManager.html
February 19th, 2015 at 19:32
Merci encore !