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

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

Vorheriges Thema - Nächstes Thema

Wernieman

@hexenmeister

Kenne mich zar sehr gut mit Linux aus, habe aber "nur" ein X86-Linux, d.h. weiß nicht inwieweit ARM gleich ist.

Es giebt einig (sehr) interessante Werte, es wäre dazu aber teilweise alt-Werte zu speichern. Ermöglicht fhem das?
z.B. gibt die Datei "/proc/vmstat" info über die Benutzung des Sysemes. Nur ... die Beinhaltenden Zahlen gehen immer nur hoch, d.h. es müste voneinander abgezogen werden. Könntest Du so etwas programmieren? Dann würde ih Dir pseudokode geben .. oder meinen schon funktionierenden shell-perl-Code

Edit:
Wenn Du es implementieren könntest, könntest Du mir die "/proc/vmstat" Deines Systemes (ARM) geben?
- 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

Astrofreak85

aufm Raspberry Pi:


pi@raspi-astro ~ $ cat /proc/vmstat
nr_free_pages 11999
nr_inactive_anon 17862
nr_active_anon 8860
nr_inactive_file 24764
nr_active_file 41088
nr_unevictable 0
nr_mlock 0
nr_anon_pages 26345
nr_mapped 5657
nr_file_pages 66233
nr_dirty 19
nr_writeback 0
nr_slab_reclaimable 3358
nr_slab_unreclaimable 1333
nr_page_table_pages 578
nr_kernel_stack 184
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_vmscan_immediate_reclaim 3
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 381
nr_dirtied 3825664
nr_written 3797765
nr_anon_transparent_hugepages 0
nr_free_cma 2622
nr_dirty_threshold 19890
nr_dirty_background_threshold 9945
pgpgin 339867
pgpgout 18455585
pswpin 0
pswpout 0
pgalloc_normal 332035507
pgalloc_movable 0
pgfree 332049708
pgactivate 313252
pgdeactivate 71431
pgfault 1108420930
pgmajfault 3727
pgrefill_normal 76019
pgrefill_movable 0
pgsteal_kswapd_normal 114147
pgsteal_kswapd_movable 0
pgsteal_direct_normal 0
pgsteal_direct_movable 0
pgscan_kswapd_normal 121537
pgscan_kswapd_movable 0
pgscan_direct_normal 0
pgscan_direct_movable 0
pgscan_direct_throttle 0
pginodesteal 0
slabs_scanned 43648
kswapd_inodesteal 18
kswapd_low_wmark_hit_quickly 8
kswapd_high_wmark_hit_quickly 134
pageoutrun 2168
allocstall 0
pgrotated 7
pgmigrate_success 0
pgmigrate_fail 0
compact_migrate_scanned 1063
compact_free_scanned 25
compact_isolated 2139
compact_stall 0
compact_fail 0
compact_success 0
unevictable_pgs_culled 856
unevictable_pgs_scanned 0
unevictable_pgs_rescued 1626
unevictable_pgs_mlocked 1626
unevictable_pgs_munlocked 1626
unevictable_pgs_cleared 0
unevictable_pgs_stranded 0

hexenmeister

@sweetie-pie
Hallo Holger,

sehe das Problem mit dem Root. Nächste Version sollte helfen. Wenn nicht, dann bitte globale Log-Level auf 5, dann get update in SYSMON und log an mich.

Zitatwo Du derzeit die Werte herholst und welche Plattformen du alles unterstützen möchtest
je nach System, z.B. da /sys/class/thermal/thermal_zone0/temp
Eigentlich habe ich bereits alle Platformen unterstützt, die mich interessieren, der Rest ist Kundenwunsch ;)
Wie gesagt, ich baue alles gerne ein, was man gebrauchen kann, aber ich benötige dazu recht genaue Angaben.
procstat nutzt mir jedoch bei den CPU-Temperatur/Frequency leider wenig :(

Grüße,

Alexander



hexenmeister

@arnoL

Hi!

Eigentlich sollte WLAN0 noch da sein, wenn man kein network-interfaces Attribut definiert hat (Default für nicht FritzBox ist eth0 und wlan0)... wie dem auch sein, es geht ja jetzt ;)

Zitatmüsste man das Log nicht unbedingt zumüllen. Oder hat das einen anderen Hintergrund?
Klar hat es! Schlamperei meinerseits  ???
Und genau dafür brauche ich Tester! ;) Jetzt habe ich dies (hoffentlich) beseitigt.  :D

Grüße,

Alexander


hexenmeister

@Wernieman

Hallo!

Klar kann man das alles machen. Schau Dir z.B. eth0_diff Readings in SYSMON an, das ist genau das, was Du auch meinst, also berechnete Differenz.
Da ich mich eher wenig mit Linux auskenne, brauche ich genaue Vorgaben Deinerseits ;)

Ausgabe von  cat /proc/vmstat aus meinem Rasp:
nr_free_pages 13723
nr_inactive_anon 13339
nr_active_anon 11113
nr_inactive_file 44662
nr_active_file 35246
nr_unevictable 0
nr_mlock 0
nr_anon_pages 23953
nr_mapped 5486
nr_file_pages 80411
nr_dirty 6
nr_writeback 0
nr_slab_reclaimable 2533
nr_slab_unreclaimable 1175
nr_page_table_pages 432
nr_kernel_stack 188
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_vmscan_immediate_reclaim 1570
nr_writeback_temp 0
nr_isolated_anon 0
nr_isolated_file 0
nr_shmem 503
nr_dirtied 20002128
nr_written 19929220
nr_anon_transparent_hugepages 0
nr_free_cma 494
nr_dirty_threshold 22592
nr_dirty_background_threshold 11296
pgpgin 74836086
pgpgout 81422016
pswpin 0
pswpout 0
pgalloc_normal 133875439
pgalloc_movable 0
pgfree 133891353
pgactivate 547982
pgdeactivate 144298
pgfault 167013901
pgmajfault 11539
pgrefill_normal 149320
pgrefill_movable 0
pgsteal_kswapd_normal 37411084
pgsteal_kswapd_movable 0
pgsteal_direct_normal 0
pgsteal_direct_movable 0
pgscan_kswapd_normal 37416423
pgscan_kswapd_movable 0
pgscan_direct_normal 0
pgscan_direct_movable 0
pgscan_direct_throttle 0
pginodesteal 0
slabs_scanned 356736
kswapd_inodesteal 136103
kswapd_low_wmark_hit_quickly 13551
kswapd_high_wmark_hit_quickly 56886
pageoutrun 747327
allocstall 0
pgrotated 1627
pgmigrate_success 0
pgmigrate_fail 0
compact_migrate_scanned 1046
compact_free_scanned 8
compact_isolated 2073
compact_stall 0
compact_fail 0
compact_success 0
unevictable_pgs_culled 857
unevictable_pgs_scanned 0
unevictable_pgs_rescued 1706
unevictable_pgs_mlocked 1706
unevictable_pgs_munlocked 1706
unevictable_pgs_cleared 0
unevictable_pgs_stranded 0


... und auf meiner FritzBox:

nr_free_pages 4660
nr_inactive_anon 4298
nr_active_anon 4009
nr_inactive_file 4281
nr_active_file 2562
nr_anon_pages 7914
nr_mapped 3061
nr_file_pages 7240
nr_dirty 0
nr_writeback 0
nr_slab_reclaimable 1154
nr_slab_unreclaimable 5865
nr_page_table_pages 176
nr_unstable 0
nr_bounce 0
nr_vmscan_write 0
nr_writeback_temp 0
pgpgin 388317
pgpgout 350156
pswpin 0
pswpout 0
pgalloc_normal 47219494
pgalloc_movable 0
pgfree 47224175
pgactivate 78766
pgdeactivate 21439
pgfault 216843181
pgmajfault 999
pgrefill_normal 21439
pgrefill_movable 0
pgsteal_normal 63040
pgsteal_movable 0
pgscan_kswapd_normal 77888
pgscan_kswapd_movable 0
pgscan_direct_normal 0
pgscan_direct_movable 0
pginodesteal 40
slabs_scanned 612873216
kswapd_steal 63040
kswapd_inodesteal 34674
pageoutrun 1283
allocstall 0
pgrotated 0


Einbauen kann ich alles mögliche (was halbwegs thematisch dazu passt), wir müssen nur etwas aufpassen, dass die Abfragen das System nicht sonderlich ausbremsen. Dies befürchte ich in diesem Fall jedoch nicht.

Grüße,

Alexander

hexenmeister

eingecheckt bei GutHub und SVN (FHEM-Repository). Müsste ab morgen per Update verfügbar sein.

gute n8!


ulli

Ich habe die aktuelle Version gezogen und die Config wie folgt eingestellt:

define SysMon SYSMON 1 1 1 10
        attr SysMon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,^~ /.*sdcard.*,~ /$
        attr SysMon filesystems fs_boot:/boot/uboot, fs_root:/, fs_usb:/media/usb1:USB-Stick, fs_sd:/media/sdcard1:SD-Card, /run
        attr SysMon network-interfaces ethernet:eth0:Ethernet
        attr SysMon group BeagleBone
        attr SysMon room 99_System

define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('SysMon')}
        attr SysValues group BeagleBone
        attr SysValues room 99_System


Passt das soweit? Ist das Attribute event-on-update-reading noch in alter Form sinnvoll?
Auch sehr schön ist das z.B. die SD Karte nur angezeigt wird wenn diese auch eingesteckt ist! :-)
Wie kann ich denn das Swap-Drive ausblenden?

Bzgl. der Plots habe ich noch folgendes:
SM_CPUTemp: hat einen festen Range der y-Achse. Dieser passt nicht für den Beagle. --> set yrange [0:1050] wäre sinnvoll
SM_RAM: hat ebenso einen festen Range der y-Achse. --> set y2range [0:550] wäre besser
SM_Network_eth0: passt

Noch eine Frage dazu. Für was sind die *DB* plots?

Ansonsten sieht es gut aus für den Beaglebone Black.

[Update]:
Man muss noch ein paar Fehlermeldungen abfangen:
defined(@array) is deprecated at ./FHEM/42_SYSMON.pm line 835, <> line 9.
(Maybe you should just omit the defined()?)
defined(@array) is deprecated at ./FHEM/42_SYSMON.pm line 955, <> line 9.
(Maybe you should just omit the defined()?)
defined(@array) is deprecated at ./FHEM/42_SYSMON.pm line 1019, <> line 9.
(Maybe you should just omit the defined()?)
Useless use of a constant (1.09861228866811) in void context at ./FHEM/42_SYSMON.pm line 953, <> line 9.
Useless use of string in void context at ./FHEM/42_SYSMON.pm line 953, <> line 9.
Subroutine trim redefined at ./FHEM/42_SYSMON.pm line 1137, <> line 9.
df: ,,/media/usb1": Datei oder Verzeichnis nicht gefunden
df: keine Dateisysteme bearbeitet

arnoL

Zitat von: hexenmeister am 19 Januar 2014, 00:33:11
Einbauen kann ich alles mögliche (was halbwegs thematisch dazu passt), wir müssen nur etwas aufpassen, dass die Abfragen das System nicht sonderlich ausbremsen. Dies befürchte ich in diesem Fall jedoch nicht.
ich denke mal , da geht noch was:
idletime 1903644 98.82 %
so bei mir auf jeden Fall.

Gruß
Arno

Puschel74

Hallo,

ZitatFür was sind die *DB* plots?
Die sind für diejenigen die die Daten in einer DBLog-Datenbank speichern und die Plots daraus anzeigen wollen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

arnoL

Zitat von: hexenmeister am 19 Januar 2014, 00:23:41
Eigentlich sollte WLAN0 noch da sein, wenn man kein network-interfaces Attribut definiert hat (Default für nicht FritzBox ist eth0 und wlan0)

Ja, WLAN ist schon noch da, aber nicht für Sysmon.  :(
network-interfaces Attribut muss definiert sein, erst dann gehts.

Und ja, nach dem Update kommen keine Fehlermeldungen mehr im Log.
Danke

Gruß
Arno

Wernieman

@hexenmeister

War nur heute komplett offline. Gucke mir mal die Werte (pasend zu meinen x86-Werten) an und schreibe Dir passende "Beschreibungen"
- 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

@ulli

bei dem Attribut  event-on-update-reading sollte man die alten Einträge (^~ /.*usb.*,^~ /.*sdcard.*,~ /$) entfernen und Deine neuen aufnehmen: fs_boot,fs_root,fs_sd,fs_run
Ggf. musst DU selbst entscheiden, was Du alles loggen willst und was nicht.

Da Du scheinbar kein Stick unter /media/usb1 hast, soll dieser aus den filesystems entfernt werden.

ZitatWie kann ich denn das Swap-Drive ausblenden?
Aus Readings noch gar nicht. Ich könnte mir aber so etwas wie 'hide' Attribute vorstellen. Bei der HTML-Ausgabe geht jetzt schon eine Eigenauswahl.

Bei den Plots kan man nicht allen Systemen recht machen, eigene Dateien für jedes System wären IMHO übertrieben. Ich denke, am besten passt sich jedes das nach eigenem Geschmack an.

Die Log-Meldungen werde ich bereinigen. Danke für die Rückmeldung ;)

Grüße,

Alexander


hexenmeister

@arnoL

bei mir langweilt sich das System nicht so sehr, aber Reserven gibt es auch hier genug ;)
idletime 679330 87.74 %

Mit WLAN verstehe ich nicht, bei mir tut es. Heißt WLAN-Adapter wlan0? Stelle bitte (nach dem morgigen Update) global loglevel auf 5 und mache get update auf SYSMON. Im log sollte zu sehen sein, welche Adapter eingelesen werden.

Grüße,

Alexander


det.


Hallo Hexenmeister,
Bei Dualcore Systemen rechnet Dein Modul die idletime von beiden Prozessorkernen zusammen. Kannst. Du da was machen, oder so ich das mit einem userreading lösen?


cpu_bogomips 1819.52 1819.52
cpu_freq 912
fhemuptime 8106
fhemuptime_text 0 days, 02 hours, 15 minutes
idletime 16079 197.50 %
idletime_text 0 days, 04 hours, 27 minutes (197.50 %)


Vor allem aber vielen Dank für Deine Mühe - das gleichzeitige Ausliefern der Plot Dateien ist vorbildlich!
LG
det.

holzwurm83

Hallo zusammen,

bei mir läuft Fhem auf einem MacMini Server. Kann ich das Modul auch für den Mac Server verwenden?
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN