Im Rahmen meiner Tests mit Cacti und dem Auslesen und darstellen von Performancedaten von Windows7 Clients, habe ich nachfolgend ein Powershell script und eine Kurzanleitung zur Einrichtung und Darstellung der Werte in Cacti geschrieben. Das Script liest die Cores der CPU aus und zeichnet deren aktuelle Auslastung für Cacti auf.
# Version 1.0 vom 20.03.2015 by Taste-Of-It.de # get from Remote Host CPU Count of Cores and for each the Load in % # last Value of Cores is always Total for all Cores # call script-name.ps1 <hostname> Try{ $i = 0 $hostname = $args[0] $cores = Get-WmiObject -class win32_processor -computername $hostname -property "numberOfCores" | Select-Object -ExpandProperty NumberOfCores #$cores $coreLoad = Get-WmiObject Win32_PerfFormattedData_PerfOS_Processor | Select-Object -ExpandProperty PercentProcessorTime foreach($objItem IN $coreLoad){ if($i -lt $cores){ $coresText = $coresText+"Core"+$i+":"+$objItem+" " }else{ $totalText = "CPUTotal:"+$objItem } $i++ } write-host $totalText" "$coresText } Catch{ "CPUTotal:0 Core0:0 Core1:0 Core2:0 Core3:0 Core4:0 Core5:0 Core6:0 Core7:0" }
Das Powershell Script versucht die Daten der Cores der CPU sowie der gesamten Leistung mittels WMI-Objekt abzufragen. Gelingt dies nicht wird statt eines Fehlers, der dann in Cacti aufschlagen würde, jeweils der Wert 0 zurückgegeben (Try / Catch). Der nachfolgende Cacti Graph zeigt diese bis zu 8 Cores an (0-7).
Kurzanleitung für den Graphen zur Anzeigen des freien Speicherplatzes in Cacti
- Login -> console
- Data Input Methods -> Add ->
- Name = Win – PS CPU Total Core
- Input Type = Script/Command
- Input String = powershell c:\ps-scripte\ps-remote-cpu-core.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 = CPUTotal
- Friendly Name = CPUTotal
- Create
- Output Fields -> Add
- Field = Core0
- Friendly Name = Core0
- Create
- Output Fields -> Add
- Field = Core1
- Friendly Name =Core1
- Create
- Output Fields -> Add
- Field = Core2
- Friendly Name =Core2
- Create
- Output Fields -> Add
- Field = Core3
- Friendly Name =Core3
- Create
- Output Fields -> Add
- Field = Core4
- Friendly Name =Core4
- Create
- Output Fields -> Add
- Field = Core5
- Friendly Name =Core5
- Create
- Output Fields -> Add
- Field = Core6
- Friendly Name =Core6
- Create
- Output Fields -> Add
- Field = Core7
- Friendly Name =Core7
- Create
- Save
- Data Templates -> Add
- Data Templates
- Name = Win – PS CPU Total Core
- Data Source
- Name = |host_description| Win – PS CPU Total Core
- Data Input Method = Win – PS CPU Total Core
- Step = 60
- Data Source Item
- Internal Data Source Name = CPUTotal
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Create
- Output Field = CPUTotal – CPUTotal
- Save
- Data Source Item -> New
- Internal Data Source Name = Core0
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Output Field = Core0 – Core0
- Save
- Data Source Item -> New
- Internal Data Source Name = Core1
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Output Field = Core1 – Core1
- Save
- Data Source Item -> New
- Internal Data Source Name = Core2
- Minimum Value = 0
- Maximum Value = U
- Heartbeat = 120
- Output Field = Core2 – Core2
- Save
- …. bis Core7 nach selben Muster wiederholen
- Custom Data
- Hostname = frei lassen
- Data Templates
- Save
- Graph Templates -> Add
- Name = Win – PS CPU Total Core
- Title = |host_description| – PS CPU Total Core
- Upper Limit = U
- Lower Limit = 0
- Base Value = 1000
- Vertical Label = Prozent
- Create
- Graph Template Items -> Add (CPUTotal – AREA)
- Data Source = Win – PS CPU Total Core – (CPUTotal)
- Color = Grün
- Graph Item Type = AREA
- Consolidate Function = Average
- CDEF Function = Multiply by 1024
- Text Format = CPU Total
- Create
- Graph Template Items -> Add (CPUTotal – Legend) <-Current, Average und Max werden automatisch erstellt
- Data Source = Win – PS CPU Total Core – (CPUTotal)
- CDEF Function = Multiply by 1024
- Text Format = CPU Total
- Create
- Graph Template Items -> Add (Core0 – Line2)
- Data Source = Win – PS CPU Total Core – (Core0)
- Color = Gelb
- Graph Item Type = Line2
- Consolidate Function = Average
- CDEF Function = Multiply by 1024
- Text Format = Core0
- Create
- Graph Template Items -> Add (Core0 – Legend) <-Current, Average und Max werden automatisch erstellt
- Data Source = Win – PS CPU Total Core – (Core0)
- CDEF Function = Multiply by 1024
- Text Format = Core0
- Create
- selbes bis Core7 wie oben als Line2 wiederholen
- 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 CPU Total Core
- Add
- Devices -> winclient01 -> Create Graphs for this Host
- Graph Template Name – Haken bei Create: Win – PS CPU Total Core
- Create
- Management -> Graph Management -> obigen Graph vom Host winclient01 dem Default Tree hinzufügen
- Haken hinter winclient01 – Win – PS CPU Total Core
- 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 ggf. wie folgt aussehen.
So ist das doch klasse und zeigt schön die Arbeit der CPU auf 😉
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.