Linux.sensors: Unterschied zwischen den Versionen
Root (Diskussion | Beiträge) |
Root (Diskussion | Beiträge) |
||
Zeile 60: | Zeile 60: | ||
=== Abfrage der CPU Temperatur mit Indy.Delphi === | === Abfrage der CPU Temperatur mit Indy.Delphi === | ||
<syntaxhighlight> | <syntaxhighlight lang="pascal"> | ||
with IdSNMP1 do | with IdSNMP1 do | ||
begin | begin |
Aktuelle Version vom 22. Februar 2024, 18:26 Uhr
Wir wollen die CPU Temperatur ermitteln und über das SNMP Protokoll einem Überwachungsserver lesbar machen.
Temperaturen überwachen mit sensors
- Paket "sensors" muss installiert sein
Danach führt man das Script
sensors-detect
aus. Bei dem Script habe ich eigentlich nur solange die Enter-Taste gedrückt, bis es durchgelaufen war. Natürlich habe ich die Ausgaben gelesen, aber ich wüsste nicht, warum ich schlauer sein sollte, als die Leute, die die Software entwickelt und sinnvolle Werte angenommen haben. Das Script erzeugt die Datei /etc/sysconfig/lm_sensors.
chkconfig --add lm_sensors
rclm_sensors start
nun kann durch Aufruf von
sensors
der Gesundheitszustand der Hardware abgefragt werden.
Nur ein Ausflug: Temperaturen der Festplatten
Untersützt die Festplatte die "Smart" Technologie, kann man in der Regel mit diesem Befehl die Temparatur auslesen:
smartctl -s on -a -d ata /dev/sda | grep Temp
Systemparameter übers Netzwerk auslesbar machen mit snmpd
- Paket "snmp" muss installiert sein
chkconfig --add snmpd
"public" für alle zugänglich machen
rocommunity public 192.168.115.0/24
ohne eine einschränkende 127.0.0.1 (=default) wird der Benutzerkreis erweitert.
rcsnmpd start
Test
snmpwalk -v1 -c public localhost LM-SENSORS-MIB::lmTempSensorsValue.1
Umsetzen der symbolischen id in eine Numerische
snmpwalk -On -v1 -c orgamon localhost LM-SENSORS-MIB::lmTempSensorsValue.1 .1.3.6.1.4.1.2021.13.16.2.1.3.1 = Gauge32: 34000
Abfrage der CPU Temperatur mit Indy.Delphi
with IdSNMP1 do
begin
Host:='192.168.115.191';
Community :='public';
active:=true;
Query.Clear;
Query.MIBAdd('1.3.6.1.4.1.2021.13.16.2.1.3.2',",ASN1_GAUGE);
Query.PDUType:=PDUGetRequest;
if SendQuery then
listbox4.Items.add( Reply.Value[0] )
else
listbox4.items.add('ERROR');
active:=false;
end;