SMARTMON - ein Frontend für smartctl

Begonnen von hexenmeister, 15 Dezember 2014, 23:47:45

Vorheriges Thema - Nächstes Thema

Wernieman

date greift aber auch nicht ins I/O ein. Meistens (z.B. bash in Linux) wertet date sogar in der shell selber aus ...
- 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

Bensen9

Danke erstmal, dass ihr euch der Thematik annehmt. Ich versuche nochmal klarer zu machen wie ich das Problem sehe um etwaige Lösungen zu finden.

Zuerst mein System:
- FHEM lebt im Folder /Applications/Fhem/ auf einem OSX system (MacMini) auf einer internen SATA SSD.
- Ich starte es über die Konsole (heisst Terminal in OSX) via "perl fhem.pl fhem.cfg" (geht automatisch beim OSX Neustart oder manuell).
- Ich habe verschiedenste devices definiert von Homematic, FS20, alexa, FHEM2FHEM, Speedtest bis EnOCEAN.
- Zudem habe ich 4 mal SMARTMON definiert für 4 Platten (1x SSD intern, 3x HDD extern).

Das Problem:
- Bei egal welchem shell Befehl den ich über die WebOberflache via FHEM ausführen möchte ("ls", "date", "ps aux" ... ) bleibt FHEM komplett hängen.
- Nur "killall perl" und FHEM neustart hilft.

Was ich bereits weiss:
- Wenn ich alle SMARTMON Definitionen aus der fhem.cfg nehme gehen alle shell Befehle wie erwarte (natürlich erst nach einem FHEM restart).
- Wenn ich die USB Platten entferne und nur die definition der internen Platte (SSD) in die fhem.cfg mache bleibt das Problem (@Wernieman, deshalb glaub ich nicht, dass es am USB liegt).
- Mein SMARTMON läuft direkt nach FHEM Neustart mit einem Intreval von 3600sec. Laut Apptime braucht die Ausführung pro platte max. 1sec. Das Problem besteht aber auch, wenn ich erst 60sec nach FHEM Neustart versuche einen shell Befehl abzusetzen, was weit nach der SMARTMON ausführung sein sollte.
- Wenn ich die Modul variante von Joachim nutze geht alles.

Meine Frage:
- Macht SMARTMON noch irgendwas während der interval Zeit?

Meine nächten Schritte zum Troubleshooting (für heute Abend):
- Nutzung von Freezmon.
- Reduktion des Intervals bei SMARTMON auf 30sec.

Noch Ideen?

Danke nochmal und ich berichte weiter. Gruss Ben




MadMax-FHEM

#62
Zitat von: Bensen9 am 05 Januar 2021, 15:22:13
Meine Frage:
- Macht SMARTMON noch irgendwas während der interval Zeit?

Mit Sicherheit kann das nur Alexander sagen aber ich konnte (wie ja schon geschrieben) nichts finden was SMARTMON tut/täte wenn nicht grad ein Scan läuft...
(Warten mit internalTimer auf nächsten Scan)
...der eben mit der Original-Version blockt.
Also fhem "steht" bis der (oder die) Scan(s) durch ist(sind)...

Bei der non-Blocking-Variante wird fhem "geforkt". Das geforkte fhem führt die blockierenden Scans aus und gibt dann die Werte zurück an das "Eltern-fhem"...
...das "Eltern-fhem" läuft solange und macht halt was immer so anfällt ;)

Hast du andere Module, die evtl. auch System-Aufrufe machen?

Also du startest fhem manuell? Aus einer Shell? Kenne jetzt OSX nicht und sollte eigentlich kein Problem sein aber vielleicht liegt es daran?
Also dass SMARTMON ja genau auch auf dieser Shell rumturnt? Und mit der non-Blocking-Variante (verm. eben) nicht...

EDIT: weil wie schon (hier und im anderen Thread) geschrieben denke ich liegt es an deiner "Konstellation". Also OSX, starten aus der Shell, ... Weil bei mir (fhem auf einem PI mit Debian Buster) habe ich keine Probleme "Shell-Befehle" auszuführen. Selbst wenn SMARTMON (Original-Variante) läuft...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Bensen9

So jetzt noch ein kurzes update... ich war nicht viel mehr erfolgreich als zuvor.

- Ändern des Interval hat keine Wirkung. Intervall auf 60sec (resp. 1min) und lang gewartet ... Hänger.
- Freezmom sagt nur "2021.01.06 00:59:56 1: [Freezemon] myFreezemon: possible freeze starting at 00:58:56, delay is 60.775 possibly caused by: no bad guy found :-(".
- Log Einträge mit verbose 5 sagen auch nicht viel was weiter helfen könnte.

Was vielleicht noch für den einen oder anderen Experten interessant wäre:
- "ls" --> geht nicht.
- {system("ls")} --> geht auch nicht.
- ABER {`ls`} geht mit Ausgabe direkt in der Weboberfläche.

Zudem hab ich noch diese zwei Zeilen in meinem Log (gehören zur Funktion "trim"):
- 2021.01.06 01:08:38 1: PERL WARNING: Use of uninitialized value $string in substitution (s///) at ./FHEM/99_Utils.pm line 128.
- 2021.01.06 01:08:38 1: PERL WARNING: Use of uninitialized value $string in substitution (s///) at ./FHEM/99_Utils.pm line 127.

Werden Funktionen aus der Utils verwendet die bei mir vielleicht nicht initialisiert sind? Ist aber ja eigentlich nur ein Warning.

Zum Schluss:
@Hexenmeister, ist die neue unblocking version schon online? Nach einem update gerade eben ist mein Topic nämlich immer noch da. Wenn ich dann manuell das Modul von oben nehme und ersetze geht alles.

Danke Gruss Ben

hexenmeister

Sorry für späte Antwort, komme irgendwie zu nichts.

Ich war mit 100% sicher, die Datei eingecheckt zu haben. Habe jetzt nahgesehen, war natürlich nicht, bin wohl etwas überarbeitet gewesen :(
Habe jetzt nachgeholt und nochmals überprüft: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/42_SMARTMON.pm
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hexenmeister

Zitat von: MadMax-FHEM am 05 Januar 2021, 15:44:37
Mit Sicherheit kann das nur Alexander sagen aber ich konnte (wie ja schon geschrieben) nichts finden was SMARTMON tut/täte wenn nicht grad ein Scan läuft...
(Warten mit internalTimer auf nächsten Scan)

Sehe ich auch so, SMARTMON tut dazwischen gar nichts, es wird ein Timer gesetzt und FHEM aktiviert dann beim Ablauf das Modul.
Ist schon sehr merkwürdig.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Thomas Vandahl

#66
Hi Leute,

ich betreibe das SMARTMON-Modul auf macOS 10.13 mit der MacPorts-Version von smartmontools. Hier brauche ich das sudo nicht und eine explizite Pfadangabe ist auch praktisch. Ich schlage deshalb ein zusätzliches Attribut für das Kommando vor. Ich habe das mal ergänzt und das Modul entsprechend geändert. Wenn Ihr das gebrauchen könnt, übernehmt es gerne.

(Sind auch noch ein paar TypoFixes in der Dokumentation drin)

Gruß, Thomas.

Persuasiv

#67
Hi,

ich habe meine SATA-SSD inzwischen erfolgreich eingebunden. Bei einer weiteren NVME-SSD werden aber keine Readings angezeigt. Über list → data kann ich mir aber alle SMART-Werte anzeigen lassen.

Wie kann ich diese Werte als Reading einbinden?

Besten Dank


smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-88-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        36 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    0%
Data Units Read:                    2.982.067 [1,52 TB]
Data Units Written:                 3.791.846 [1,94 TB]
Host Read Commands:                 17.894.471
Host Write Commands:                86.907.823
Controller Busy Time:               718
Power Cycles:                       26
Power On Hours:                     2.549
Unsafe Shutdowns:                   7
Media and Data Integrity Errors:    0
Error Information Log Entries:      1
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               36 Celsius
Temperature Sensor 2:               46 Celsius


return code: 0

Michi1972

Moin @hexenmeister,

ich habe per ssh_host mein NAS eingebunden. Die Festplatten gehen super, alle Daten kommen wie erwartet an. Nur bei der System-"Platte", die eine NVMe ist, da leider nicht. Ich vermute, da passen die Bezeichnungen einfach nicht rein.

Mit Verbose 5 kommen folgende Daten von der NVMe zurück:

2022.10.23 15:29:02 5: SMARTMON nas_system: execute.703 cmd: ssh fhem@nas "sudo smartctl -i -n standby /dev/nvme0"
2022.10.23 15:29:03 5: SMARTMON nas_system: execute.706 Returncode: 0
2022.10.23 15:29:03 5: SMARTMON nas_system: readDeviceData.514 device data: $VAR1 = 'smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.18.0-0.deb11.4-amd64] (local build)
';
$VAR2 = 'Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
';
$VAR3 = '
';
$VAR4 = '=== START OF INFORMATION SECTION ===
';
$VAR5 = 'Model Number:                       Patriot M.2 P300 128GB
';
$VAR6 = 'Serial Number:                      P300xxxxxxxxxxxxxxxxxx
';
$VAR7 = 'Firmware Version:                   SN09111
';
$VAR8 = 'PCI Vendor/Subsystem ID:            0x1e4b
';
$VAR9 = 'IEEE OUI Identifier:                0x000000
';
$VAR10 = 'Total NVM Capacity:                 128.035.676.160 [128 GB]
';
$VAR11 = 'Unallocated NVM Capacity:           0
';
$VAR12 = 'Controller ID:                      0
';
$VAR13 = 'NVMe Version:                       1.4
';
$VAR14 = 'Number of Namespaces:               1
';
$VAR15 = 'Namespace 1 Size/Capacity:          128.035.676.160 [128 GB]
';
$VAR16 = 'Namespace 1 Utilization:            30.756.362.752 [30,7 GB]
';
$VAR17 = 'Namespace 1 Formatted LBA Size:     512
';
$VAR18 = 'Namespace 1 IEEE EUI-64:            000000 0000000001
';
$VAR19 = 'Local Time is:                      Sun Oct 23 15:29:03 2022 CEST
';
$VAR20 = '
';

2022.10.23 15:29:03 5: SMARTMON nas_system: refreshReadingsNonBlocking.353 Blocking-fn return value nas_system|{"warnings":"Pre-fail: 0 Old_age: 0","deviceSerial":"P300EDBB22070200961","last_exit_code":"0","overall_health_test":"PASSED","deviceFirmware":"SN09111"}.
2022.10.23 15:29:03 5: SMARTMON nas_system: refreshReadingsDone.372 Blocing call finished. Updating Readings.


Zurück als Readings kommen nur:

deviceFirmware SN09111
deviceSerial P300xxxxxxxxxxxxxxxx
last_exit_code 0
overall_health_test PASSED
warnings Pre-fail: 0 Old_age: 0


In der https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/42_SMARTMON.pm steht ab Zeile 523 etwas von "Device Model", aber die NVMe, wahrscheinlich bei allen erhältlichen Modellen, liefert nur "Model Number" zurück. Damit kann wohl nicht geparst werden  ;)

Die Frage ist, wäre es möglich, dass es eine Anpassung an NVMe "Festplatten" für dieses Modul gibt? Leider kann ich keinen Patch oder sowas liefern, dazu reichen meine Perl-Kenntnisse leider nicht. Freuen würde es wahrscheinlich nicht nur mich :)

Ich benutze mittlerweile FHEM auch als Monitoring "für Arme", da spielt dieses Modul eine zentrale Rolle :)

Gruß
Michael

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hexenmeister

Moin!

Welche Version von smartctl ist installiert?
Was kommt denn, wenn man auf der Console
sudo smartctl -i -n standby /dev/nvme0
sudo smartctl -A -n standby /dev/nvme0
und
sudo smartctl -H -n standby /dev/nvme0
aufruft?

Auf meiner Synology kommt leider nichts sinnvolles zu der nvme Platte zurück.
ZitatRead NVMe Identify Controller failed: NVMe Status 0x02
Trotz Version 6.5, die das eigentlich können sollte.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Michi1972

Moin hexenmeister,

ich habe die Info mal zusammengetragen, vielen Dank, dass Du Dich der Sache annimmst!

root@nas:~# smartctl --version
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.18.0-0.deb11.4-amd64] (local build)


smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.18.0-0.deb11.4-amd64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number:                       Patriot M.2 P300 128GB
Serial Number:                      P300ED...xyz....
Firmware Version:                   SN09111
PCI Vendor/Subsystem ID:            0x1e4b
IEEE OUI Identifier:                0x000000
Total NVM Capacity:                 128.035.676.160 [128 GB]
Unallocated NVM Capacity:           0
Controller ID:                      0
NVMe Version:                       1.4
Number of Namespaces:               1
Namespace 1 Size/Capacity:          128.035.676.160 [128 GB]
Namespace 1 Utilization:            6.807.150.592 [6,80 GB]
Namespace 1 Formatted LBA Size:     512
Namespace 1 IEEE EUI-64:            000000 0000000001
Local Time is:                      Tue Oct 25 15:39:22 2022 CEST


root@nas:~# smartctl -A -n standby /dev/nvme0
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.18.0-0.deb11.4-amd64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        38 Celsius
Available Spare:                    100%
Available Spare Threshold:          1%
Percentage Used:                    1%
Data Units Read:                    88.487 [45,3 GB]
Data Units Written:                 253.077 [129 GB]
Host Read Commands:                 1.006.924
Host Write Commands:                19.046.809
Controller Busy Time:               6
Power Cycles:                       45
Power On Hours:                     789
Unsafe Shutdowns:                   39
Media and Data Integrity Errors:    0
Error Information Log Entries:      67
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               50 Celsius
Temperature Sensor 2:               51 Celsius
Temperature Sensor 3:               52 Celsius
Temperature Sensor 4:               53 Celsius
Temperature Sensor 5:               54 Celsius
Temperature Sensor 6:               55 Celsius
Temperature Sensor 7:               56 Celsius
Temperature Sensor 8:               57 Celsius


root@nas:~# smartctl -H -n standby /dev/nvme0
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.18.0-0.deb11.4-amd64] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED


--> das Letztere funktioniert dann auch in FHEM sauber, da steht PASSED als reading.

Ich hoffe, Du kannst etwas mit den Angaben anfangen und den Parser anpassen. Wenn Du noch mehr Informationen brauchst, frage ich das gerne ab!

Vielen Dank schonmal!

Gruß
Michael

hexenmeister

Moin!
Habe mir das angesehen. Leider wird für die "Smart Data" ein komplett anderes Ausgabeformat verwendet. Hier müsste man die Erkennung extra für diesen Fall implementieren. Ist leider eine Fleißaufgabe. Zuerst habe ich nur das Auslesen von Modell und Größe angepasst. Probiere bitte die angehängte Datei - ich kann leider nicht testen - habe keine FHEM-Installation, wo das Modul etwas sinnvolles liefern könnte.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Michi1972

Moin,

das sieht schon mal ganz gut aus, Danke dafür:

deviceCapacity 128.035.676.160 [128 GB] 2022-10-28 18:29:23
deviceFirmware SN09111 2022-10-28 18:29:23
deviceModel Patriot M.2 P300 128GB 2022-10-28 18:29:23
deviceSerial P300E...xyxyxy...... 2022-10-28 18:29:23
last_exit_code 0 2022-10-28 18:29:23
overall_health_test PASSED 2022-10-28 18:29:23
warnings Pre-fail: 0 Old_age: 0 2022-10-28 18:29:23


Vielleicht hast Du noch Zeit und Muße, die Temperatur und power_on_hour (+text?) mit einzubauen? Nur, wenn Du magst, ich bin ja so schon sehr dankbar! Dies hier funktioniert schon mal! TOP!  :) :) :)

Vielen Dank und Gruß
Michael

hexenmeister

#74
Hallo,

probiere mal die angehängte Version. Ist sehr quick & dirty und ohne realle Hardware getestet.

Mit show_raw = 1 oder 2 sollten die Readings zu der NVMe kommen.

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy