Sowohl das zu überwachende System (SensorPC) als auch der Reporting Server sind ein Linux Debian Wheezy. Auf dem Reporting Server läuft Cacti, dass die Messwerte per Script abruft und grafisch auswertet. Ziel soll es sein die Temperatur der CPU auszulesen und in Cacti darzustellen.
Hardware des SensorPCs, das ein Notebook ist, ist ein Intel i5-2520M mit 2.50GHz (cat /proc/cpuinfo)
Als Software zum auslesen der Temperaturfühler auf dem Mainboard wird lm-sensors aus dem Repository verwendet. (aptitude install lm-sensors)
Ausgabe der Rohwerte von:
#sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +85.0°C (crit = +128.0°C)
temp2: +0.0°C (crit = +128.0°C)
temp3: +50.0°C (crit = +128.0°C)
temp4: +49.0°C (crit = +128.0°C)
temp5: +28.0°C (crit = +128.0°C)
temp6: +0.0°C (crit = +128.0°C)
temp7: +0.0°C (crit = +128.0°C)
temp8: +0.0°C (crit = +128.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +85.0°C (high = +86.0°C, crit = +100.0°C)
Core 0: +83.0°C (high = +86.0°C, crit = +100.0°C)
Core 1: +84.0°C (high = +86.0°C, crit = +100.0°C)
Interessant für mich sind, obwohl immer recht ähnlich vom Wert, die beiden Werte von Core 0 und Core 1.
Das (einfache) Script zur Anzeige der Temperatur von Core0 und Core1 vorformatiert für Cacti:
#!/usr/bin/perl # erstellt am 11.03.2015 # Version 1.0 by Taste-Of-IT.de # fragt die Temperatur einer installierten CPU für Core0 und Core1 ab # Ausgabe erfolgt im Format für Cacti use strict; my $core0; my $core1; # Ausgabe des Wertes $core0 = int(`sensors |grep -i 'core 0:' |cut -b 18-19`); $core1 = int(`sensors |grep -i 'core 1:' |cut -b 18-19`); printf "core0-temp:".$core0." core1-temp:".$core1;
So schaut der recht einfache Perlcode aus, der die entsprechenden Stellen der Temperaturausgabe abfängt und für Cacti ausgibt. Die Ausgabe sieht dann wie folgt aus:
# perl temp-2core-script.pl
core0-temp:83 core1-temp:84
Weiter geht es mit der Einrichtung von Input Methoden, Daten- und Graphtemplate in Cacti.
Login in Cacti
Input Methode erstellen
console -> Collection Methods -> Data Input Methods
Hier nun die entsprechenden Felder ausfüllen:
Name : Unix – SSH Sensors CPU 2Core Temp
Input Type : Script/Command
Input String : ssh root@<host> -p22 perl /home/cacti-scripte/get-cpu_core_temp.pl
-> Create
Nun werden die Input bzw. Output Fields der Data Input Methode im selben Menü hinzugefügt
Input Fields ->Add -> Field Input=host aus DropDown, Friendly Name=Hostname, Special Type Code=hostname -> create
Output Fields -> Add -> Field=size, Friendly Name=Size, Haken Update RRD File ist gesetzt – selbes für requests = Requests
->Save
Als nächstes erfolgt die Erstellung des Data Template erstellt. console -> Templates -> Data Templates
Data Template -> new->
Name = Unix – SSH Sensors CPU 2Core Temp
Data Source Name = |host_description| – Unix – SSH Sensors CPU 2Core Temp
Data Input Method DropDown= Unix – SSH Sensors CPU 2Core Temp
Associated RRA’s = ich rufe jede Minute ab, daher Hourly 1min, Daily 1min usw
Step = 60
Data Source Item
Internal Data Source Name = Core0Temp
Minimum Value = U
Maximum Value = U
Data Source Type = Gauge
Heratbeat = 120
Output-Field = core0-temp – Core0-Temp
-> Create
Nun noch das 2. Data Source Item hinzufügen. Hier als Internal Data Source Name „Core1Temp“ eintragen, der Rest bleibt gleich. Custom Data für „host“ bleibt leer.
-> Safe
Im nächsten Schritt muss das Graph Template erstellt werden. Menü -> Templates -> Graph Template -> Add
Nun werden alle notwendigen Parameter eingegeben:
Name = Unix – SSH Sensors CPU 2Core Temp
Title = |host_description| – SSH Sensors CPU 2Core Temp
… Rest = Default
Vertical Label = in Grad
-> Create
Nun folgen die Graph Template Items für Core0-Temp und Core1-Temp. Hierfür oben rechts bei Graph Template Items auf Add klicken
Data Source = Unix – SSH Sensors CPU 2Core Temp – (Core0Temp)
Color = freie Wahl
Graph Item Type = Legend, wodurch Crrent, Average, Maximum automatisch erstellt werden
Das war für die Legende, nun wird noch die eigentliche Anzeige in Form einer Linie erstellt. Wieder auf Add klicken und wie folgt ausfüllen:
Data Source = Unix – SSH Sensors CPU 2Core Temp – (Core0Temp)
Color = freie Wahl
Graph Item Type = Linie2
Text Format = Core0-Temp
-> Save
Nun selbiges für den Core1-Temp. Am Ende sieht es z.B. so aus:
Hier gut zu sehen, dass die Graph Item Inputs automatisch generiert werden.
Nun folgt die Zuweisung zum entsprechenden Host der gemonitort werden soll und auf dem auch das Script abgelegt wurde. Dafür im Menü -> Management -> Devices -> entspr. Host auswählen. Im Abschnitt Associated Graph Templates das Unix – SSH Sensors CPU 2Core Temp auswählen und auf rechts auf Add klicken
Nun rechts oben in der selben Ansicht auf Create Graphs for this Host klicken. Den Haken bei unserem neuen Graph Template setzen und unten auf Create klicken.
Nun noch 2 Abfragen warten, Default sind das je 5 Minuten, bei meine minütlichen Abfrage somit je 1 Minute. Am Ende könnte der Graph für die Temperatur von Core0 und Core1 wie folgt aussehen:
Ziel erreicht. Sofern mehr Zeit ist, wird das Script überarbeitet, dass die Auswertung dann für einen Abruf durch sensors und nicht wie oben für 2 getrennte Abfragen, durchführt. Eure Meinung, Vorschläge und Anregungen sind willkommen ;).
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.