Linux.sensors

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

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;