Cacti – Script Template und Graph zur Auswertung der CPU Core Temperatur

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

Cacti - Erstanmeldung mit admin-admin

Cacti – Erstanmeldung mit admin-admin

Input Methode erstellen
console -> Collection Methods -> Data Input Methods

Cacti -Input Methods - Add

Cacti -Input Methods – Add

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

Cacti Input Sensor Core Temp

Cacti Input Sensor Core Temp

Nun werden die Input bzw. Output Fields der Data Input Methode im selben Menü hinzugefügt

Cacti 2Core Temp Input Output Fields

Cacti 2Core Temp Input Output Fields

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

 

Cacti Data Template 2Core Temp

Cacti Data Template 2Core Temp

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

Cacti Data Template 2Core All

Cacti Data Template 2Core All

Im nächsten Schritt muss das Graph Template erstellt werden. Menü -> Templates -> Graph Template -> Add

Cacti Graph Template Add

Cacti 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

Cacti Graph Template Items Add

Cacti Graph Template Items Add

Data Source = Unix – SSH Sensors CPU 2Core Temp – (Core0Temp)
Color = freie Wahl
Graph Item Type = Legend, wodurch Crrent, Average, Maximum automatisch erstellt werden

Cacti Graph Template Item Core0

Cacti Graph Template Item Core0

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:

Cacti Graph Template Items Final

Cacti Graph Template Items Final

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

Cacti Host Template Add

Cacti Host Template Add

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.

Cacit Host Template Add

Cacit Host Template Add

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:

 

Cacti Graph 2Core Temp

Cacti Graph 2Core Temp

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 ;).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.