Im Rahmen meiner Tests mit Cacti und dem Auslesen von Performance Daten von Windows7 Clients, habe ich dieses Powershell Script zur remote Abfragen des Zustandes des Arbeitsspeichers und der Auslagerungsdatei / SWAP erstellt. Es fragt die gesamte Größe des RAM und SWAP sowie der noch freie Teil ab und zeigt es in Cacti grafisch dar.
#Version 1.0 vom 20.03.2015 by Taste-Of-IT.de #get Total Memory, Free Memory, Total Swap, Free Swap from Remotehost return Value in Kilobyte #call script-name.ps1 <hostname> Try{ $hostname = $args[0] Get-WmiObject win32_OperatingSystem -Computername $hostname | %{"TotalMemorySize:{0} FreeMemorySize:{1} TotalVirtualMemory:{2} FreeVirtualMemory:{3}" -f $_.totalvisiblememorysize, $_.freephysicalmemory, $_.totalvirtualmemorysize, $_.freevirtualmemory} } Catch{ "TotalMemorySize:0 FreeMemorySize:0 TotalVirtualMemory:0 FreeVirtualMemory:0" }
Das Powershell Script versucht die Daten zum Total und Free des Arbeitsspeichers und die Auslagerungsdatei mittels WMI-Objekt abzufragen. Gelingt dies nicht wird statt eines Fehlers, der dann in Cacti (Logs) aufschlagen würde, jeweils der Wert 0 zurückgegeben (Try / Catch).
Kurzanleitung für den Graphen zur Anzeigen des freien Speicherplatzes in Cacti
- Login -> console
- Data Input Methods -> Add ->
- Name = Win – PS RAM SWAP Status
- Input Type = Script/Command
- Input String = powershell c:\ps-scripte\ps-remote-ram-swap-total-free.ps1 <hostname>
- Create
- Input Fields -> Add
- Field[Input] = hostname
- Friendly Name = Hostname
- Special Type Code = hostname
- Output Fields -> Add
- Field = TotalMemory
- Friendly Name = TotalMemory
- Create
- Output Fields -> Add
- Field = FreeMemory
- Friendly Name = FreeMemory
- Create
- Output Fields -> Add
- Field = TotalVirtualMemory
- Friendly Name = TotalVirtualMemory
- Create
- Output Fields -> Add
- Field = FreeVirtualMemory
- Friendly Name =FreeVirtualMemory
- Create
- Save
- Data Templates -> Add
- Data Templates
- Name = Win – PS RAM SWAP Status
- Data Source
- Name = |host_description| Win – PS RAM SWAP Status
- Data Input Method = Win – PS RAM SWAP Status
- Step = 60
- Data Source Item
- Internal Data Source Name = TotalMemory
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Create
- Output Field = TotalMemory – TotalMemory
- Save
- Data Source Item -> New
- Internal Data Source Name = FreeMemory
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Output Field = FreeMemory – FreeMemory
- Save
- Data Source Item -> New
- Internal Data Source Name = TotalVirtualMemory
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Output Field = TotalVirtualMemory – TotalVirtualMemory
- Save
- Data Source Item -> New
- Internal Data Source Name = FreeVirtualMemory
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Output Field = FreeVirtualMemory – FreeVirtualMemory
- Save
- Custom Data
- Hostname = frei lassen
- Data Templates
- Save
- Graph Templates -> Add
- Name = Win – PS RAM SWAP Status
- Title = |host_description| – PS RAM SWAP Status
- Upper Limit = U
- Lower Limit = 0
- Base Value = 1024
- Vertical Label = Gigabyte
- Create
- Graph Template Items -> Add (FreeMemory – AREA)
- Data Source = Win – PS RAM SWAP Status – (FreeMemory)
- Color = Grün
- Graph Item Type = AREA
- Consolidate Function = Average
- CDEF Function = Multiply by 1024
- Text Format = Free Memory
- Create
- Graph Template Items -> Add (FreeMemory – Legend) <-Current, Average und Max werden automatisch erstellt
- Data Source = Win – PS RAM SWAP Status – (FreeMemory)
- CDEF Function = Multiply by 1024
- Text Format = Free Memory
- Create
- Graph Template Items -> Add (FreeVirtualMemory – AREA)
- Data Source = Win – PS RAM SWAP Status – (FreeVirtualMemory)
- Color = Gelb
- Graph Item Type = AREA
- Consolidate Function = Average
- CDEF Function = Multiply by 1024
- Text Format = Free Virtual Memory
- Create
- Graph Template Items -> Add (FreeVirtualMemory – Legend) <-Current, Average und Max werden automatisch erstellt
- Data Source = Win – PS RAM SWAP Status – (FreeVirtualMemory)
- CDEF Function = Multiply by 1024
- Text Format = Free Virtual Memory
- Create
- Graph Template Items -> Add (TotalMemory – Gprint)
- Data Source = Win – PS RAM SWAP Status – (TotalMemory)
- Color = Grün
- Graph Item Type = Gprint
- Consolidate Function = Last
- CDEF Function = Multiply by 1024
- Text Format = Total Memory
- Create
- Graph Template Items -> Add (TotalVirtualMemory – Gprint)
- Data Source = Win – PS RAM SWAP Status – (TotalVirtualMemory )
- Color = Gelb
- Graph Item Type = Gprint
- Consolidate Function = Last
- CDEF Function = Multiply by 1024
- Text Format = Total Virtual Memory
- Create
- Save
- Devices -> Add (nur wenn noch kein Host vorhanden ist, ansonsten zum nächsten Punkt)
- Description = winclient01
- Hostname = winclient01
- Host Template = none
- Downed Device Detection = Ping
- Ping Method = ICMP Ping
- Create (ICMP Ping Success (0 ms)
- Devices -> winclient01 -> Associated Graph Templates
- Add Graph Templates = Win – PS RAM SWAP Status
- Add
- Devices -> winclient01 -> Create Graphs for this Host
- Graph Template Name – Haken bei Create: Win – PS RAM SWAP Status
- Create
- Management -> Graph Management -> obigen Graph vom Host winclient01 dem Default Tree hinzufügen
- Haken hinter winclient01 – Win – PS RAM SWAP Status
- Place on a Tree (Default Tree)
- Go
- Destination Branch: [root]
- Continue
Done – nun sollte der Graph in den nächsten 2xPoller Time erstellt werden und z.B. so aussehen:

– kleine Anmerkung – auf Grund von zu großen Abweichungen zwischen den Werten von RAM und SWAP, kann es sein, dass wie hier nur ein Graph dargestellt wird.