Systeminformation für Ubuntu

Hallo,

ich bin die Tage bei der Migration auf IPS 5 mit meinem Produktiv-System von einem Raspberry auf Ubuntu gewechselt.

Auf dem Raspberry habe ich von dem Modul IPS2GPIO den Teil der Statusanzeige des Raspberry benutzt.

Das geht natürlich auf Ubuntu nicht mehr.

Ich habe mich von diesem Teil des Moduls inspirieren lassen und eine solche Übersicht für Ubuntu erstellt.

Ist hier zu finden: GitHub - demel42/IPSymconServerInfo

demel

Hi demel,

Super Modul :slight_smile: Danke.

bekomme aber eine Fehlermeldung :frowning:

14.08.2018 19:44:44 | TimerPool | ServerInfo (UpdateData): <br />
<b>Warning</b>:  Cannot auto-convert value for parameter Value in <b>/var/lib/symcon/modules/IPSymconServerInfo/libs/common.php</b> on line <b>37</b><br />

Die Daten werden zwar Aktualisiert, CPU Temp. und HDD Daten bekomme ich leider nicht.

sudo apt-get install hddtemp
sudo chmod u+s /usr/sbin/hddtemp

wurde gemacht.

Muss ich noch was Installieren?

Gruß

Hmm,

  1. ich bin davon ausgegangen, das /dev/sda1 bei Ubuntu immer die root-Partition ist. Kannst du mal auf dem Rechner ein ‚df‘ machen?
    Dann werden ja alle Filesysteme aufgelistet und rechts müsste irgendwo ‚/‘ stehen.

  2. ruf mal bitte ‚hdtemp‘ auf der shell auf. Als Option bekommt das nich die Platte mut, also, wenn die Root-Partition /dev/sda1 ist, ist die Platte /dev/sda.

  3. mich würde interessieren, was das Problem ist und dazu bitte mal den Debug des Moduls einschalten, einen Abruf machen, den Debug als Datei speicher (gibt’s einen Menüpunkt im Debugfenster) und mir zumailen.

demel

Hallo demel,

zu 1.

so sieht die Abfrage aus:

Dateisystem                      1K-Blöcke  Benutzt Verfügbar Verw% Eingehängt auf
udev                               3998128        0   3998128    0% /dev
tmpfs                               805608      868    804740    1% /run
/dev/mapper/SymconZotac--vg-root 113781384 10480568  97498016   10% /
tmpfs                              4028032        0   4028032    0% /dev/shm
tmpfs                                 5120        0      5120    0% /run/lock
tmpfs                              4028032        0   4028032    0% /sys/fs/cgroup
/dev/sda2                           483946   138649    320312   31% /boot
/dev/sda1                           523248     4668    518580    1% /boot/efi
tmpfs                               805604        0    805604    0% /run/user/1000

zu 2.

Im Terminal habe ich das Eingegeben:

 hddtemp /dev/sda

und bekomme:

/dev/sda: SanDisk SDSSDHP128G: 52°C

zu 3.

mail ist unterwegs :slight_smile:

Gruß und Danke für die Hilfe.

ok, deine root-partition heisst ganz anders. gib mal, das oben ein als ‚1. Partition‘ an.

hddtemp sieht ok aus.

Hi,

die HDD werte kommen jetzt an :slight_smile:

CPU & HDD Temperatur bleibt weiterhin auf 0 °C

Die Fehlermeldung ist auch vorhanden.

Gruß

Hallo demel,

wenn ich im Modul in der Spalte „zu Kontrollierende Datenträger“ alles lösche, also „/dev/sda“
Kommt die Fehlermeldung nicht mehr.

Hat das was mit hddtemp zutun?

Gruß

Bitte ein Modul-Update. Das Parsen der Ausgabe der HDD-Temperatur was intolerant.

Allerdings kann ich nicht sagen, wie die HD eigentlich wirklich heisst.

/dev/sda ist ja irgendwie die Boot-Partition, aber / geht ja irgendwie auf ein spezielles Filesystem.

Hast du das mehrere Platten drin? Ggfs ein Raid-System?

Zu der CPU-temperatur. Da stochere ich etwas im Nebel

mach mal auf der Shell


paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'	' -t

ls -l /sys/class/thermal/thermal_zone*/type
ls -l /sys/class/thermal/thermal_zone*/temp

und dann mach mal


sensors

wenn der rummeckert, das es das nicht gibt:


sudo apt-get update && sudo apt-get install lm-sensors

ggfs. auch


sudo sensors-detect

der Output müsste ganz in etwas so aussehen:


$ sensors
it8772-isa-0a30
Adapter: ISA adapter
in0:          +0.55 V  (min =  +1.06 V, max =  +2.26 V)  ALARM
in1:          +1.21 V  (min =  +2.58 V, max =  +2.05 V)  ALARM
in2:          +1.67 V  (min =  +0.20 V, max =  +1.90 V)
in3:          +2.87 V  (min =  +1.82 V, max =  +1.30 V)  ALARM
in4:          +1.02 V  (min =  +1.39 V, max =  +1.03 V)  ALARM
in5:          +2.23 V  (min =  +2.12 V, max =  +2.56 V)
in6:          +2.23 V  (min =  +2.38 V, max =  +1.48 V)  ALARM
3VSB:         +3.31 V  (min =  +5.28 V, max =  +4.25 V)  ALARM
Vbat:         +3.26 V
fan1:           0 RPM  (min =   10 RPM)  ALARM
fan2:        2064 RPM  (min =   12 RPM)
temp1:        +43.0°C  (low  = +113.0°C, high = -75.0°C)  ALARM  sensor = thermistor
temp2:        +30.0°C  (low  = +106.0°C, high = +118.0°C)  sensor = thermal diode
temp3:        +44.0°C  (low  = -65.0°C, high = -52.0°C)  sensor = Intel PECI
intrusion0:  ALARM

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +119.0°C)
temp2:        +29.8°C  (crit = +119.0°C)

pch_skylake-virtual-0
Adapter: Virtual device
temp1:        +44.5°C

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +48.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +47.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +47.0°C  (high = +100.0°C, crit = +100.0°C)

ja, wenn kein device, dann wird ‚hddtemp‘ nicht aufgerufen.

gruß
demel

hi,

lm-sensors ist bei mir schon installiert gewesen.

die Abfrage spuckt das aus:

~$ sensors
soc_dts1-virtual-0
Adapter: Virtual device
temp1:        +55.0°C

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

soc_dts0-virtual-0
Adapter: Virtual device
temp1:        +53.0°C

mehr bekomme ich nicht.

Gruß

ja, mehr kommt erst, wenn man ‚sensors-detect‘ aufruft und großzügig „YES“ sagt. aber ist auch egal, die Temperatur ist 58°

was ist mit


paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'	' -t

ls -l /sys/class/thermal/thermal_zone*/type
ls -l /sys/class/thermal/thermal_zone*/temp

da hole ich zZt die Temperatur raus, aber nur bei type ‚x86_pkg_temp‘ (weil ist das im Internet gelesen habe … passt aber hier nicht.

Ist die Fehlermeldung nach dem Update weg?

demel

hi,

die Fehlermeldung ist jetzt weg :slight_smile: Danke.

Zu der CPU Temperatur:

Mit

paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'	' -t

Kommt:


soc_dts0  51000
soc_dts1  54000

Mit


ls -l /sys/class/thermal/thermal_zone*/type

Kommt:


-r--r--r-- 1 root root 4096 Aug 14 21:14 /sys/class/thermal/thermal_zone0/type
-r--r--r-- 1 root root 4096 Aug 14 21:14 /sys/class/thermal/thermal_zone1/type

Mit

ls -l /sys/class/thermal/thermal_zone*/temp

bekomme ich:

-r--r--r-- 1 root root 4096 Aug 14 21:14 /sys/class/thermal/thermal_zone0/temp
-r--r--r-- 1 root root 4096 Aug 14 21:14 /sys/class/thermal/thermal_zone1/temp

Gruß

Ja, ich sehe, die thermal_zone’s sind Bord-abhängig. Ich habe es nun so geändert, das die höchste der dort ausgelesenen Temperaturen verwendet wird (also hier 54°C)

Also bitte ein Modul-Update

Gruß
demel

Hallo demel,

Vielen Dank! :smiley:
Modul läuft 1A

Alle Werte da :loveips:

Gruß

Hi,

bekommt man das Modul auch ohne hddtemp zum laufen. Ich nutze die Symbox und die hat keine hddtemp. Die auch nur einen eMMC, sprich mir ist der HDD Kram komplett egal. Vielleicht kannst du die Prüfung davon abhängig machen, ob eine Festplatte unten angegeben wurde oder nicht.

Versuch mal Modulstore/Beta. das sollte nun so funktionieren (keine Festplatte angegeben, kein hddtemp)

demel

Da kommt immer noch ungültige Vorraussetzung aber ohne den Hinweis auf hddtemp.

In dem Zuge vielleicht auch noch paar Optimierungen:

IPS_GetKernelPlatform() liefert SymBox. In diesem Fall könnest du bei Betriebsystem SymOS eintragen.
lspcu gibt es auf diesen Systemen nicht so dass du besser /proc/cpuinfo auswertest. Dann wärest du auch Betriebsystem unabhängig.

processor	: 0
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 38.40
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 1
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 38.40
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 2
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 38.40
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 3
model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 38.40
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

Die Frequenzen pro Core bekommst du hier her:

cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_min_freq
cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq

Ja, aber es muss ein Grund stehen, denn ohne das eine Meldung erzeugt wird, wird keine fehlende Voraussetzungen erkannt.

Nun lese ich in Deinem folgende Post, das du weder Ubuntu noch Raspberry Pi einsetzt - das sind die beiden unterstützten OS-Typen - sondern SymOS - da sagt das Modul: nicht unterstütztes OS.

Das kann ich natürlich auch gerne implementieren, aber da gibt es schon mehrere Abfragen und leider auch beim gleichen Befehl der Output zT unterscheidlich.

Ich verwende folgenden Befehle:


'hostname': Hostname
'lsb_release -ds': OsVersion
'cat /proc/meminfo'': MemTotal, MemFree und MemAvailable
'cat /proc/loadavg': Load1m, Load5m, Load15m, ProcRunnable, ProcTotal
'cat /proc/uptime': Uptime
'df': Partition*{Mountpoint,Size,Used,Available,Usage}
'cat `echo /sys/class/thermal/thermal_zone*/type`' & cat `echo /sys/class/thermal/thermal_zone*/temp`': CpuTemp
'hddtemp': Disk*Temp
'lscpu': Modellname, CpuCount und CpuCurFrequency(Ubuntu) bzw zusätzlich 'vcgencmd measure_clock arm' bei Raspberry Pi
'cat /proc/stat':  CpuUsage (über diverse Zwischenschritte)

und für alle Befehle brauche ich den Output als Textdatei, damit ich das Zerlegen prüfen kann bzw wenn es Befehle nicht geben sollte, ein passendes Äquivalent.

Eine Frequenz pro CPU habe ich nicht vorgesehen, es gibt bei den anderen System eine Angabe dazu.

Das ich ‚lscpu‘ verwende hatte irgend einen Grund, an den ich mich nicht mehr erinnere; muss aber etwas gewesen sein, weil ich erst ‚cat /proc/cpuinfo‘ verwendet hatte.

Am besten schickst du mir den Output an demel42@web.de

gruß
demel

Hi,
nettes Modul. Wenn Du ‚Docker‘ noch als Betriebssystem neben Ubuntu und Raspberry aufnimmst wird es noch netter:-)

Das Synology, und vermutlich andere, Docker basieren auf Ubuntu. Ich habe ein SHR (Synology Hybrid Raid) eingerichtet und mit /dev/vg1000/lv bekomme ich da die Daten bei Partition 1 angezeigt. Mit /dev/md3 als 2 Partition bekomme ich eine SSD angezeigt auf der meine Docker-Daten liegen.

Ich schau mal nach den anderen Daten.

So hab mal geschaut.

Mit dieser get_version liefert Docker auch Linux-Infos:


    private function get_version()
    {
        $sys = IPS_GetKernelPlatform();
        switch ($sys) {
          case 'Docker':
            $res = $this->execute('cat /proc/version');
            break;
          default:
            $res = $this->execute('lsb_release -ds');
            break;
        }
        if ($res == '' || count($res) < 1) {
            $this->SendDebug(__FUNCTION__, 'bad data: ' . print_r($res, true), 0);
            return false;
        }

        $OsVersion = $res[0];

        $this->SendDebug(__FUNCTION__, 'OsVersion=' . $OsVersion, 0);
        $this->SetValue('OsVersion', $OsVersion);

        return true;
    }


und mit dieser get_cpuinfo werden auch CPU-Infos geliefert:


    private function get_cpuinfo()
    {
        $res = $this->execute('lscpu ');
        if ($res == '' || count($res) < 1) {
            $this->SendDebug(__FUNCTION__, 'bad data: ' . print_r($res, true), 0);
            return false;
        }

        $CpuModel = '';
        $CpuCount = 0;
        $CpuCurFrequency = 0;

        $v = [];
        foreach ($res as $r) {
            $s = preg_split("/:[\s]+/", $r);
            if (count($s) < 2) {
                $this->SendDebug(__FUNCTION__, 'bad data: ' . $r, 0);
                continue;
            }
            $name = $s[0];
            $value = $s[1];
            $v[$name] = $value;
        }

        $sys = IPS_GetKernelPlatform();
        switch ($sys) {
        case 'Docker':
            $CpuModel = isset($v['Model name']) ? $v['Model name'] : '';
            $CpuCount = isset($v['CPU(s)']) ? $v['CPU(s)'] : 0;
            $CpuCurFrequency = isset($v['CPU MHz']) ? $v['CPU MHz'] : 0;
            break;
        case 'Ubuntu':
            $CpuModel = isset($v['Modellname']) ? $v['Modellname'] : '';
            $CpuCount = isset($v['CPU(s)']) ? $v['CPU(s)'] : 0;
            $CpuCurFrequency = isset($v['CPU MHz']) ? $v['CPU MHz'] : 0;
            break;
        case 'Raspberry Pi':
            $CpuModel = isset($v['Model name']) ? $v['Model name'] : '';
            $CpuCount = isset($v['CPU(s)']) ? $v['CPU(s)'] : 0;
            $res = $this->execute('vcgencmd measure_clock arm ');
            if ($res == '' || count($res) < 1) {
                $this->SendDebug(__FUNCTION__, 'bad data: ' . print_r($res, true), 0);
                return false;
            }
            $s = preg_split('/=/', $res[0]);
            if (preg_match('/^frequency/', $s[0])) {
                $CpuCurFrequency = (int) ((float) $s[1] / 1024 / 1024);
            }
            break;
        }

        $this->SendDebug(__FUNCTION__, 'CpuModel=' . $CpuModel . ', CpuCurFrequency=' . $CpuCurFrequency . ' MHz, CpuCount=' . $CpuCount, 0);
        $this->SetValue('CpuModel', $CpuModel);
        $this->SetValue('CpuCurFrequency', $CpuCurFrequency);
        $this->SetValue('CpuCount', $CpuCount);

        return true;
    }


btw. ist „Modellname“ mit 2 L richtig?

Ein kleiner Wunsch. Könnte man Anzahl Platten vielleicht auf 4 erhöhen? Docker und NAS läuft schon öfter auf mehreren Platten.

Ralf

Ich bin gerade dabei Symbol zu integrieren und kann mich in dem Zuge oder direkt danach auch um Docker kümmern.

prima.

Ja, mein Ubuntu liefert das so, hat ja eine Spracheinstellung auf Deutsch. Ich nehme an, wenn die Sprache nicht Englisch wäre, würde das anders lauten, aber wie ist die Frage … würde ich ergänzen, wenn ich in die Situation komme.

klar, warum nicht

demel