Ein Modul zur Erfassen von diversen RPi/Linux-Statistiken (SYSMON)

Begonnen von hexenmeister, 06 Dezember 2013, 17:44:38

Vorheriges Thema - Nächstes Thema

hexenmeister

Zitat von: tupol am 06 Dezember 2014, 21:08:20
die CPU Temperatur bekommt man im neuen OS über
ctlmgr_ctl r cpu status/StatTemperature

@tupol: Danke für die Info!
Habe eingebaut und eingecheckt. Scheint bei meiner FB-Testinstallation zu funktionieren.
@all: Wäre schöne, wenn jemand noch testen würde.

hexenmeister

Zitat von: Tommy82 am 06 Dezember 2014, 21:37:31
zum einen wird unter SysValues das  angezeigt, allerdings seh ich unter sysmon kein entsprechendes reading, woher kommen die Werte? Würde das Datum gerne mit in eine readigsgroup ausgeben.
Das ist einfach das aktuelle Datum. In einem Reading macht das keinen Sinn.

Zitat
Das zweite ist das ich bei boot und ssd keine Werte ausgegeben bekomme, was hab ich da falsch definiert?
im Nand liegt der Boot, das restliche system auf meiner ssd.
Probiere mal aus, was die Befehle liefern:

df /dev/nand -m
df /dev/sda1 -m


Ansonsten gebe mal das Commando df ein. Es werden mount-points angezeigt. Probiere mal diese statt Device-Namen zu verwenden.


volschin

Hallo Alexander,
das Fritzbox-Modul kann jetzt auch Remote die Operationen auf der Fritzbox durchführen. Siehst Du eine Chance so etwas auch für SYSMON zu machen?

Ich habe mich entschlossen mein FHEM komplett von der Fritzbox zu deinstallieren.
Die Infos aus SYSMON sind jetzt noch der letzte fehlende Baustein.

Gruß
Veit

Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

hexenmeister

Hallo Veit,

habe ich im anderen Thread schon gelesen und sogar ins Quellcode reingeschaut. Sollte prinzipiell möglich sein, die dort vorhandene Remote-Ausführung (Telnet) zu übernehmen. Damit kann man per SYSMON auch andere Systeme remote zu überwachen. Zumindestens teilweise. Kann jetzt noch nicht sagen, wie groß der Änderungsaufwang sein wird.  In jedem Fall sind dann ausführliche Tests notwendig.
Ich muss mir das Ganze genauer ansehen.

Grüße,

Alexander

Tommy82

Zitat von: hexenmeister am 06 Dezember 2014, 23:38:28
Das ist einfach das aktuelle Datum. In einem Reading macht das keinen Sinn.
Probiere mal aus, was die Befehle liefern:

df /dev/nand -m
df /dev/sda1 -m


Ansonsten gebe mal das Commando df ein. Es werden mount-points angezeigt. Probiere mal diese statt Device-Namen zu verwenden.

Hi,
also ein df ergibt das:
df
Filesystem     1K-blocks    Used Available Use% Mounted on
rootfs         115379200 1489960 108028252   2% /
/dev/root      115379200 1489960 108028252   2% /
devtmpfs         1023456       0   1023456   0% /dev
tmpfs             131072     748    130324   1% /run
tmpfs               5120       0      5120   0% /run/lock
tmpfs             131072       0    131072   0% /run/shm
tmpfs            1048576       0   1048576   0% /tmp


Das atrribut hab ich jetzt mal so gesetzt:
fs_boot:/dev/:Boot,fs_root:/:Root. aber den bootsektor gibt es immer noch nicht, allerdings wird der ja auch in df nicht angezeigt!?

Wahrscheinlich eine blöde frage, aber wie stellst du das Date da bzw. wie lese ich es aus um es in Fhem auszugeben?
Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

hexenmeister

Sysmon nimmt diese Infos von df. Was df nicht kann, das ist auch nicht als Dateisystem verfügbar ;)
Ich sehe gerade, du verwendest CubieTruck. Da gibt es kein Boot-Bereich. Die Beispiele waren für den Raspberry Pi.


Zu dem Datum: Ich weiß nicht aus dem Kopf, wie man ReadingsGroup füttert, sthet ja auch alles im Commandref. Das Modul kann aber Perl-Anweisungen verarbeiten. Aktuelles Datum bekommst Du z.B. so:
{strftime("%d.%m.%Y %H:%M:%S", localtime())}

Grüße,

Alexander


Wernieman

Bezüglich smartctrl:

Es läuft eigentlich sehr schnell durch.

Hier mal ein Beispiellauf auf meinem Server:

hedwig ~ # time smartctl -a /dev/sda
................
real 0m0.573s
user 0m0.069s
sys 0m0.011s
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

hexenmeister

#607
'n Abend!

Zu unserer Diskussion über die SmartMonTools... Ich habe da ein wenig gebastelt...

Hier ist die (sehr frühe) Version eines neuen Moduls zum Auswertung von S.M.A.R.T.

Definition: define <name> SMARTMON <device> [<interval_min>]
Beispiel: define sm SMARTMON /dev/sda 120

Dies liest die S.M.A.R.T. Data des angegebenen Device und gibt die Parameter als Readings aus.
fhem> l sm
Internals:
   CFGFN
   DEF        /dev/sda 120
   DEVICE     /dev/sda
   INTERVAL   7200
   NAME       sm
   NR         1116
   STATE      Active
   TYPE       SMARTMON
   Readings:
     2014-12-12 00:40:51   Calibration_Retry_Count Value: 100, Worst: 253, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Current_Pending_Sector Value: 200, Worst: 200, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Load_Cycle_Count Value: 200, Worst: 200, Type: Old_age, Raw: 7
     2014-12-12 00:40:51   Multi_Zone_Error_Rate Value: 100, Worst: 253, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Offline_Uncorrectable Value: 100, Worst: 253, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Power-Off_Retract_Count Value: 200, Worst: 200, Type: Old_age, Raw: 20
     2014-12-12 00:40:51   Power_Cycle_Count Value: 100, Worst: 100, Type: Old_age, Raw: 28
     2014-12-12 00:40:51   Power_On_Hours  Value: 096, Worst: 096, Type: Old_age, Raw: 3445
     2014-12-12 00:40:51   Raw_Read_Error_Rate Value: 200, Worst: 200, Type: Pre-fail, Raw: 0
     2014-12-12 00:40:51   Reallocated_Event_Count Value: 200, Worst: 200, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Reallocated_Sector_Ct Value: 200, Worst: 200, Type: Pre-fail, Raw: 0
     2014-12-12 00:40:51   Seek_Error_Rate Value: 200, Worst: 200, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Spin_Retry_Count Value: 100, Worst: 253, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   Spin_Up_Time    Value: 184, Worst: 183, Type: Pre-fail, Raw: 1800
     2014-12-12 00:40:51   Start_Stop_Count Value: 100, Worst: 100, Type: Old_age, Raw: 28
     2014-12-12 00:40:51   Temperature_Celsius Value: 104, Worst: 097, Type: Old_age, Raw: 43
     2014-12-12 00:40:51   UDMA_CRC_Error_Count Value: 200, Worst: 200, Type: Old_age, Raw: 0
     2014-12-12 00:40:51   overall_health_test PASSED


SmartMonTools müssen installiert sein:
sudo apt-get install smartmontools

Benutzer, unter dem FHEM läuft, muss smartctl ausführen dürfen.
Dafür muss in der Datei /etc/sudoers ein entsprechender Eintrag vorgenommen werden.
Beispiel:
fhem ALL=(ALL) NOPASSWD: /usr/sbin/smartctl
Natürlich muss der user auch der Gruppe "sudo" angehören.

Wie findet ihr das? Wie sollen die Readings aussehen? Was fehlt noch? Weitere Wünsche/Kommentare/Kritik?

Grüße,

Alexander

EDIT: Alte Version aus dem Anhang gelöscht

Wernieman

Kannst Du die Temperatur (alle aktuellen Festplatten haben einen Sensor) nicht gleich richtig Umrechnen?

Temperature_Celsius Value: 104, Worst: 097, Type: Old_age, Raw: 43
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

hexenmeister

Klar, weißt Du zufällig, wie das zu rechnen ist? Was ist hier 43 (Grad?) und was bedeutet 104/097? Ansonsten muss ich mich mal zuerst einlesen.
Was schreibt man am besten in die Readings rein? So in diesem Format war erstmal nur ein Test und sieht mMn recht unübersichtlich aus.


Wernieman

Also ich bekomme:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   172   148   021    Pre-fail  Always       -       8366
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       104
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   063   063   000    Old_age   Always       -       27194
10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       37
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       22
193 Load_Cycle_Count        0x0032   001   001   000    Old_age   Always       -       1032066
194 Temperature_Celsius     0x0022   113   099   000    Old_age   Always       -       39
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0



Also 39°

Bedauerlicherweise stimmt es aber NICHT immer auf samsung-Festplatten. Samsung hat sich dort ein eigenes System zusammengebaut. ich würde aber es einfach mal 1zu1 übernehmen und den "Fehler" bei Samsung ignorieren.

Auch interessant:

  3 Spin_Up_Time            0x0027   172   148   021    Pre-fail  Always       -       8366
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       104
  9 Power_On_Hours          0x0032   063   063   000    Old_age   Always       -       27194


3: Wie lange "Drehte" die Platte, war also Online
4: Wie häufig wurde die Platte Hochgefahren? (Eingeschaltet)
9: Wie lange war die Platte an, also hatte Strom (es gilt hier StandBy ist auch An)

Wenn eine der Folgenden Werte <>0, dann ......

  1 Raw_Read_Error_Rate     0x002f   200   200   051    Pre-fail  Always       -       0
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0


Dabei gilt:
1: Lesefehler der Festplatte (korrigierbare und nicht korrigierbare Fehler)
5: Wie viele Sectoren wurden "verlegt", d.h. anstatt des Originalen Sectors einen anderen freien verwendet.
   Siehe auch 196,197,198,200
10: Wie häufig musste die Festplatte mehr mals versuchen, sich in "Schwung" zu bringen
11: Wie häufig ist die erste Callibrierung des Kopfes Fehlgeschlagen
199: Zahl der Übertragungsfehler zum Rechner. Fehler hier bedeuten meistens Kabel, Chipsatz oder Festplattenelektonik-Probleme

Es gibt noch mehr Test, welche von Platte zu Platte (bzw. Hersteller zu Hersteller) sich unterscheiden. Eigentlich ist aber auch nicht die RAW-Rate, sondern die Änderung der RAW-Rate interessant.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

hexenmeister

Danke für die Gute Erklärung!
Was ich noch überlege:

1. Soll ich alles, was ich bekomme anzeigen, oder nur das, was wir kennen / hier definieren?
2. Name der Reading? Die ID? ID+gelieferter Name (1_Raw_Read_Error_Rate)? Nur der Name? Eigene (soweit bekannt)?
3. Was soll in dem Reading stehen? Eigene Werte (individuell für bekannte IDs)? Alle generisch/gleich (Raw? Value?)?

4. Was ist der Anwendungszweck? Zu nachsehen? Brauchen wir dann eine Methode zum Erzeugen einer menschenlesbaren Anzeige (Inhalt?)? Automatische Überwachung per FHEM? Etwas dafür vordefinieren? Eine Art "Prefail:TRUE"-Attribute?


Wernieman

Naja ... Themperatur währe vrgleichbar wie z.B. CPU-Temperatur.

Die "Normalen" Werte wie z.B. Spin-Off sind eher wichtig , wenn man sich die Details der Festplatte ansieht.

Die "Zahl" ist die eigentliche Definition. Der Text kann sich je nach Programm (teoretisch) Ändern. Insofern ist für die Definition die Zahl Wichtig, fürs "Lesen" dagegen der Text.

Könnte man es einstellen, das er bei Änderung bestimmter Werte Informiert?

Hier z.B. mal die Ausgabe einer anderen Festplatte:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   100   100   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0007   100   100   015    Pre-fail  Always       -       8064
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       312
  5 Reallocated_Sector_Ct   0x0033   073   073   010    Pre-fail  Always       -       252
  7 Seek_Error_Rate         0x000f   253   253   051    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   253   253   015    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       70222
10 Spin_Retry_Count        0x0033   253   253   051    Pre-fail  Always       -       0
11 Calibration_Retry_Count 0x0012   253   253   000    Old_age   Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       182
190 Airflow_Temperature_Cel 0x0022   062   055   000    Old_age   Always       -       38
194 Temperature_Celsius     0x0022   124   103   000    Old_age   Always       -       38
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       7628407
196 Reallocated_Event_Count 0x0032   073   073   000    Old_age   Always       -       252
197 Current_Pending_Sector  0x0012   253   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   253   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000a   100   100   000    Old_age   Always       -       0
201 Soft_Read_Error_Rate    0x000a   100   100   000    Old_age   Always       -       0


In diesem Falle giebt es sogar 2 Temperatursensoren (190 und 194)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

hexenmeister

Hier ist eine neue Version. Die Anzeige ist jetzt etwas aufgeräumter. Die "bekannten" Werte werden etwas interpretiert angezeigt, die restlichen "roh". Die Vorschläge für weitere Formatierungen sind willkommen.
Mir ist noch nicht klar, wie ich mit den Werten umgehen soll, deren Änderung (>0) auf Probleme deutet. Eine Extra Reading erstellen? Ideen?

Auf die Änderungen sollte man ja schon mit den FHEM-Standardmitteln reagieren können. Also nur Update, wenn sich die Werte ändern und ggf. ein Notify, das mit dem alten Wert vergleicht und dann ggf. etwas damit tut.

Internals:
   CFGFN
   DEF        /dev/sda 120
   DEVICE     /dev/sda
   INTERVAL   7200
   NAME       sm
   NR         1103
   STATE      Active
   TYPE       SMARTMON
   Readings:
     2014-12-13 01:49:03   001_Raw_Read_Error_Rate Flag: 0x002f Val: 200 Worst: 200 Thresh
     2014-12-13 01:49:03   005_Reallocated_Sector_Ct Flag: 0x0033 Val: 200 Worst: 200 Thre
     2014-12-13 01:49:03   007_Seek_Error_Rate Flag: 0x002e Val: 200 Worst: 200 Thresh: 00
     2014-12-13 01:49:03   010_Spin_Retry_Count Flag: 0x0032 Val: 100 Worst: 253 Thresh: 0
     2014-12-13 01:49:03   011_Calibration_Retry_Count Flag: 0x0032 Val: 100 Worst: 253 Th
     2014-12-13 01:49:03   012_Power_Cycle_Count Flag: 0x0032 Val: 100 Worst: 100 Thresh:
     2014-12-13 01:49:03   192_Power-Off_Retract_Count Flag: 0x0032 Val: 200 Worst: 200 Th
     2014-12-13 01:49:03   193_Load_Cycle_Count Flag: 0x0032 Val: 200 Worst: 200 Thresh: 0
     2014-12-13 01:49:03   196_Reallocated_Event_Count Flag: 0x0032 Val: 200 Worst: 200 Th
     2014-12-13 01:49:03   197_Current_Pending_Sector Flag: 0x0032 Val: 200 Worst: 200 Thr
     2014-12-13 01:49:03   198_Offline_Uncorrectable Flag: 0x0030 Val: 100 Worst: 253 Thre
     2014-12-13 01:49:03   199_UDMA_CRC_Error_Count Flag: 0x0032 Val: 200 Worst: 200 Thres
     2014-12-13 01:49:03   200_Multi_Zone_Error_Rate Flag: 0x0008 Val: 100 Worst: 253 Thre
     2014-12-13 01:50:26   humidity        0
     2014-12-13 01:49:03   overall_health_test PASSED
     2014-12-13 01:49:03   power_on_hours  3470
     2014-12-13 01:49:03   power_on_text   144 Tage 14 Std. 00 Min. 00 Sec.
     2014-12-13 01:49:03   spin_up_time    1800
     2014-12-13 01:49:03   start_stop_count 28
     2014-12-13 01:49:03   temperature     44


Was ich noch überlege: Per Attribut die Anzeige "unbekannter" (die jetzt mit Nummer angezeigt werden) Readings abschalten zu können und ggf. auch per Attribut auch die interpretierte zusätzlich als RAW-Anzeige.

Grüße,

Alexander

Wernieman

Naja ... bei Änderungen der Werte, könnte da man ein "Warning" oder "Info" Flag setzen? Das Interpretieren dieser Werte müsste sowieso eher "Manuell", d.h. vom User erfolgen. Nur der kann eigentlich die Folgen abschätzen.

Allerdings ... dürfte genau dieses das Problem der meisten "User" sein :o(
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html