SYSMON auf Intel NUC DN2820FYKH0

Begonnen von Ma_Bo, 15 Januar 2015, 17:45:54

Vorheriges Thema - Nächstes Thema

Ma_Bo

Hallo an alle,

ich habe ja seit kurzem meine Fhem Installation vom RPi auf den NUC umgestellt und soweit läuft schon mal alles ganz gut.
Jetzt möchte ich aber eine paar Dinge, die ich vorher auf dem RPi auch hatte wieder beim NUC haben, das funktioniert aber noch nicht so wirklich.
Im Detail geht es sich um den SYSMON, hat da schon einer diesen auf dem NUC laufen, ich möchte möglichst viel auslesen, alles was über die CPU auszulesen ist, TEMPERATUR der CPU usw. Festplattenspeicher, Netzwerktraffic usw.

Ich habe den SYSMON von meinem RPi übernommen, doch leider hängt sich Fhem dann auf.
Vielleicht hat ja jemand den SYSMON oder etwas anderes bei sich laufen und kann mir ein paar Tips geben.

Die Installation auf dem NUC habe ich genau wie hier beschrieben durchgeführt und es hat alles super geklappt

http://www.meintechblog.de/2014/05/intel-nuc-als-smart-home-server-fhem-on-steroids/
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Henno

Hi

Das Problem hatte ich auch.

Werf mal die Netzwerkschnittstelle aus deiner config raus dann sollte es klappen.

btw.

Die NUC´s sind nicht so toll.

Ich betreibe ein ASROCK H87 board mit einem i3 4160
16GB RAM
2 SSD´s
1 WD RED 3TB
diverse FHEM Komponenten

bei ca. 13W IDLE
max. 55W bei Vollast

Der i3 hat deutlich mehr power für Plex und andere Spielereien und war alles in allem nicht viel teurer.


domii666

@henno läuft es auf Windows? Oder hast es in vm

Gesendet von meinem HTC One mit Tapatalk


Henno

nur Ubuntu 14.04 x64
ohne VM und Windows

Newbee

Zitat von: Ma_Bo am 15 Januar 2015, 17:45:54
Hallo an alle,

ich habe ja seit kurzem meine Fhem Installation vom RPi auf den NUC umgestellt und soweit läuft schon mal alles ganz gut.
Jetzt möchte ich aber eine paar Dinge, die ich vorher auf dem RPi auch hatte wieder beim NUC haben, das funktioniert aber noch nicht so wirklich.
Im Detail geht es sich um den SYSMON, hat da schon einer diesen auf dem NUC laufen, ich möchte möglichst viel auslesen, alles was über die CPU auszulesen ist, TEMPERATUR der CPU usw. Festplattenspeicher, Netzwerktraffic usw.

Ich habe den SYSMON von meinem RPi übernommen, doch leider hängt sich Fhem dann auf.
Vielleicht hat ja jemand den SYSMON oder etwas anderes bei sich laufen und kann mir ein paar Tips geben.

Die Installation auf dem NUC habe ich genau wie hier beschrieben durchgeführt und es hat alles super geklappt

http://www.meintechblog.de/2014/05/intel-nuc-als-smart-home-server-fhem-on-steroids/

Hallo Ma_Bo,

habe den SYSMON heute unter FHEM auf meinem NUC konfiguriert.
Habe dazu die aus der FHEM Wiki beschriebene Bsp.-Konfig übernommen und ein paar kleine Änderungen gemacht.
http://www.fhemwiki.de/wiki/SYSMON

Was nicht auf anhieb lief war Netzwerk Monitoring, da der device nicht eth0 sondern em1 bei mir ist.
Was ich bis jetzt noch nicht zum laufen gebracht habe ist AC_Power Monitoring.

Eventuell hilft Dir das ja weiter.

Gruß Newbee
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

domii666

Netzwerkschnittstelle kannst aber easy umbenennen, dann sollte es auch klappen

Gesendet von meinem HTC One mit Tapatalk


Ma_Bo

Hey Newbee,

kannst du deinen Code hier mal veröffentlichen oder mir per PN schicken, im Moment habe ich leider ein paar andere Baustellen, somit muss der NUC noch ein wenig warten.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Newbee

Zitat von: Ma_Bo am 26 Januar 2015, 16:34:44
Hey Newbee,

kannst du deinen Code hier mal veröffentlichen oder mir per PN schicken, im Moment habe ich leider ein paar andere Baustellen, somit muss der NUC noch ein wenig warten.

Hi Ma_Bo,

hiermit der Code!

# Modul-Definition
define sysmon SYSMON 1 1 1 10
attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*,stat_cpu_percent
attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
attr sysmon group Sys
attr sysmon network-interfaces eth0:em1:Ethernet,wlan0:wlan0:WiFi
attr sysmon room NUC
#attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$

# Log
define FileLog_sysmon FileLog ./log/sysmon-%Y-%m.log sysmon
attr FileLog_sysmon group Sys
attr FileLog_sysmon logtype SM_CPUTemp:Plot,text
attr FileLog_sysmon room NUC
   
# Visualisierung: CPU-Temperatur
define wl_sysmon_temp SVG FileLog_sysmon:SM_CPUTemp:CURRENT
attr wl_sysmon_temp group Sys
attr wl_sysmon_temp label "CPU Temperatur: Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr wl_sysmon_temp room NUC
   
# Visualisierung: Netzwerk-Datenübertragung für eth0
define wl_sysmon_eth0 SVG FileLog_sysmon:SM_Network_eth0:CURRENT
attr wl_sysmon_eth0 group Sys
attr wl_sysmon_eth0 label "Netzwerk-Traffic eth0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_eth0 room NUC
   
# Visualisierung: Netzwerk-Datenübertragung für wlan0
# define wl_sysmon_wlan0 SVG FileLog_sysmon:SM_Network_wlan0:CURRENT
# attr wl_sysmon_wlan0 group Sys
# attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
# attr wl_sysmon_wlan0 room NUC

# Visualisierung: CPU-Auslastung (load average)
define wl_sysmon_load SVG FileLog_sysmon:SM_Load:CURRENT
attr wl_sysmon_load group Sys
attr wl_sysmon_load label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_load room NUC
   
# Visualisierung: RAM-Nutzung
define wl_sysmon_ram SVG FileLog_sysmon:SM_RAM:CURRENT
attr wl_sysmon_ram group Sys
attr wl_sysmon_ram label "RAM-Nutzung Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_ram room NUC
   
# Visualisierung: Dateisystem: Root-Partition
define wl_sysmon_fs_root SVG FileLog_sysmon:SM_FS_root:CURRENT
attr wl_sysmon_fs_root group Sys
attr wl_sysmon_fs_root label "Root Partition Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_root room NUC
   
# Visualisierung: Dateisystem: USB-Stick
# define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
# attr wl_sysmon_fs_usb1 group Sys
# attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
# attr wl_sysmon_fs_usb1 room NUC
   
# Anzeige der Readings zum Einbinden in ein 'Raum'.
define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
attr SysValues group Sys
attr SysValues room NUC
   
# Anzeige CPU Auslasung
define wl_sysmon_cpustat SVG FileLog_sysmon:SM_CPUStat:CURRENT
attr wl_sysmon_cpustat group Sys
attr wl_sysmon_cpustat label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat room NUC
#attr wl_sysmon_cpustat plotsize 840,420

define wl_sysmon_cpustat_s SVG FileLog_sysmon:SM_CPUStatSum:CURRENT
attr wl_sysmon_cpustat_s group Sys
attr wl_sysmon_cpustat_s label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat_s room NUC
#attr wl_sysmon_cpustat_s plotsize 840,420

define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
attr wl_sysmon_cpustatT group Sys
attr wl_sysmon_cpustatT label "CPU-Auslastung"
attr wl_sysmon_cpustatT room NUC
#attr wl_sysmon_cpustatT plotsize 840,420

# Anzeige Stromversorgung AC
#define wl_sysmon_power_ac SVG FileLog_sysmon:SM_power_ac:CURRENT
#attr wl_sysmon_power_ac label "Stromversorgung (ac) Spannung: $data{min1} - $data{max1} V,  Strom: $data{min2} - $data{max2} mA"
#attr wl_sysmon_power_ac room NUC
#attr wl_sysmon_power_ac group Sys


Die mit # auskommentierten habe bei mir aktuell noch keine Funktion.

Gruß Newbee
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

Ma_Bo

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Newbee

Zitat von: Ma_Bo am 29 Januar 2015, 17:51:04
DANKE !

Gerne! Hoffe es funktioniert damit genau so reibungslos wie bei mir?

Gruß Newbee
Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

Ma_Bo

Habe es gerade mal eingebaut, jetzt noch bissl warten und schauen ob alles läuft
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Ma_Bo

#11
Scheint ohne erkennbare Probleme zu laufen, nur mein Plot funktioniert nicht, hast du da schon was geändert ?

Bekommst du die CPU Temperatur angezeigt, bei mir geht die noch nicht.
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Newbee

Zitat von: Ma_Bo am 31 Januar 2015, 15:27:32
Scheint ohne erkennbare Probleme zu laufen, nur mein Plot funktioniert nicht, hast du da schon was geändert ?

Bekommst du die CPU Temperatur angezeigt, bei mir geht die noch nicht.

Plots funktionieren! Habe nur den Raum angepasst und die Bezeichnung. Sonst ist alles wie im Wiki.
Bekomme die CPU Temp auch angezeigt.


Intel-NUC mit ubuntu server 20.04; FHEM 6.0
HM, Dect, Netatmo, Hue

StefanD

Ich hänge mich mit meinem Problem mal hier an, da der Titel ein Volltreffer ist und ich noch keine Lösung gefunden habe.  ::)

Auf meinem NUC, der aktuell mit ohne aktivierten Lüfter klaglos seinen Dienst tut, läuft ein Ubuntu 14.04 LTS:
stefan@fhem:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
stefan@fhem:~$ uname -a
#Linux fhem 3.13.0-44-generic #73-Ubuntu SMP Tue Dec 16 00:22:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux


Sysmon liefert mir für die CPU Temperatur immer 26.8 was mir von Beginn an schon irgendwie komisch vorkam. Nach etwas googlen und herumprobieren bin ich dem Ganzen dann auf die Schliche gekommen:
stefan@fhem:~$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +26.8°C  (crit = +90.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +58.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:       +58.0°C  (high = +105.0°C, crit = +105.0°C)


Es wird das virtuelle device ausgelesen, dessen Wert immer gleich ist. Ich habe testweise mal mit openssl speed einen Kern was arbeiten lassen, dabei bleib der Wert des virtuellen Device gleich, während die Temperaturen für Core0 und 1 plausibel angestiegen und nach beenden des OpenSSL Laufs auch ebenso plausibel wieder zurückgegangen.
Da es in ein paar Monaten wieder wärmer wird und ich mich nicht nur auf das handwarme Gehäuse verlassen möchte, würde ich schon gerne die echte CPU Temperatur auslesen und natürlich ins Logfile für die grafische Auswertung schreiben können. So kann ich dann recht gut verfolgen, ob ich mit deaktivierten Lüfter auskomme oder ihn bei etwas höheren Raumtemperaturen doch aktivieren muss/sollte.

sensors liefert dann auch die korrekten Devices:
stefan@fhem:~$ sensors -u
acpitz-virtual-0
Adapter: Virtual device
temp1:
  temp1_input: 26.800
  temp1_crit: 90.000

coretemp-isa-0000
Adapter: ISA adapter
Core 0:
  temp2_input: 59.000
  temp2_max: 105.000
  temp2_crit: 105.000
  temp2_crit_alarm: 0.000
Core 1:
  temp3_input: 60.000
  temp3_max: 105.000
  temp3_crit: 105.000
  temp3_crit_alarm: 0.000


Über den Thread http://forum.fhem.de/index.php/topic,27050.0.html bin ich auf folgendes Kommando gekommen, dass mir die Temperatur des ersten Core auch entsprechend korrekt ausgibt:
cat /sys/devices/platform/coretemp.0/temp2_input | awk '{ printf ("CPU Temperature = %0.1f°C\n",$1/1000); }'

Wie kriege ich diesen Wert und den des zweiten Core mit SYSMON raus?

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer

StefanD

Ich habe mir mit einer eigenen Funktion in der 99_myUtils.pm selbst beholfen. Folgende Parameter waren Basis für meine Umsetzung:

  • keine Manipulation der 42_SYSMON.pm um bei Updates des fhem nicht nachbessern zu müssen, sofern sich hier etwas ändert
  • keinen separates Dummy Device, somit auch kein seperates LogFile
  • Readings des Sysmon Device ergänzen und bestehende nicht verändern/überschreiben
  • Temperatur der Cores und jeweilige Frequenz sollen zeitgleich protokolliert werden

Funktion in der 99_myUtils.pm
my $CpuInfo;
sub CpuInfo ()
{
my $mDevice = "sysmon";
my $Cpu0Freq = sprintf("%d",(qx "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 2>&1")/1000);
my $Cpu1Freq = sprintf("%d",(qx "cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq 2>&1")/1000);
my $Cpu0Temp = sprintf("%0.1f",(qx "cat /sys/devices/platform/coretemp.0/temp2_input")/1000);
my $Cpu1Temp = sprintf("%0.1f",(qx "cat /sys/devices/platform/coretemp.0/temp3_input")/1000);
my $CpuMaxTemp = $Cpu0Temp;
if($Cpu0Temp < $Cpu1Temp) { $CpuMaxTemp = $Cpu1Temp };
fhem ("setreading $mDevice xCPU0_Freq $Cpu0Freq; setreading $mDevice xCPU1_Freq $Cpu1Freq; setreading $mDevice xCPU_Max_Temp $CpuMaxTemp; ");
}

Die Temperatur der beiden Cores wich in meinen Tests (mittels openssl speed) in nahezu allen Fällen 2°C ab, deshalb setze ich nur die höchste Temperatur beider Kerne.

Periodisches, kurzgetaktetes Auslesen via at
define at_CpuInfo at +*00:00:10 { CpuInfo();; }
attr at_CpuInfo room _System


Auch das sysmon Device habe ich etwas beschränkt, damit nur dann geloggt wird, wenn sich ein für mich interessanter Wert sich ändert:
attr sysmon event-on-change-reading xCPU0_Freq, xCPU1_Freq, xCPU_Max_Temp

Sysmon holt sich alle 15min die Systemdaten. Die 10s Taktung lasse ich vorerst für ca. 2 Wochen laufen und plane diese dann schrittweise verlängern, bis ich einen brauchbaren Kompromiss zwischen Abfragezyklus und CPU Frequenz/Temeratur gefunden habe. Denn ich möchte durchaus wissen, ob eine höhere Temperatur auch auf eine höhere Taktferquenz zurückzuführen ist. Die CPU Temperatur wäre träge genug, um auch für Zyklen bis zu 1min ausreichend Informationen zu liefern, da die CPU/Core Frequenz der Istwert des Auslesemoments ist, ist die Wahrscheinlichkeit hoch, dass diese schon wieder auf einem deutlich niedrigerem Takt läuft.

Beim Schreiben dieser Zeilen fällt mir noch ein anderer Ansatz ein: Mit zunehmender CPU Temperatur könnte man den Auslesezyklus verkürzen, dann hätte man im Falle eines Anstiegs, wenn auch verzögert, eine länger anhaltende höhere Core Frequenz im Log/Plot.  ::)

Viele Grüße
Stefan
HW: Intel NUC8i5 mit ESXi7 mit Ubuntu Server 18.04 LTS und FHEM als DockerContainer