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.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.