Ankündigung

Einklappen
Keine Ankündigung bisher.

Systeminformationen unter Linux auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Systeminformationen unter Linux auslesen

    Hallo

    Es gibt einige Tools für Debian / Ubuntu / ... , die Informationen zur CPU, RAM, SWAP, Disk anzeigen können. Woher kommen die angezeigten Informationen?
    Wenn man neben einer realtime Chart auch einen Langzeitlog erstellen möchte, was wäre da der beste Ansatz?
    Manche Tools wie z.B. iostat zeigen die Auslastung in % an. Woher wissen die Tools, was 100% ist? Erkennen die irgendwie dem max. Durchsatz anhand entstehender io-delays?

    Für mich wäre interessant:
    Anzahl der CPU -Kerne / Threads
    Auslastung pro Kern / Thread
    Durchschnittliche Auslastung aller Kerne.
    Disk IO-Delay
    Disk Read/Write (MB/s)
    Disk Speicherplatzbelegung
    Disk IO-Auslastung in Prozent
    RAM Total
    RAM Auslastung
    RAM Reserviert

    Vielleicht hat jemand Erfahrungen oder Ideen, wie ich solche Werte abfragen und mit PHP auswerten & darstellen kann.
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.


  • #2
    Einige Informationen stellt dir Linux direkt zur Verfügung, andere wie die HD-Temperatur bekommt nur mit speziell installierten Tools mitgeteit.

    Die Information kann man mit exec auslesen.
    PHP-Code:
    <?php
    // show CPU Cores
    exec("nproc 2>&1"$retArr$retVal);
    echo 
    "Anzahl der CPU-Kerne:"$retArr[0];

    // show information about memory use
    exec("free --mega 2>&1"$retArr$retVal);
    echo 
    "<pre>";
    print_r($retArr);
    echo 
    "</pre>";
    ?>
    Siehe https://www.man7.org/linux/man-pages/man1/free.1.html
    https://man7.org/linux/man-pages/man1/nproc.1.html
    https://linoxide.com/10-tools-monito...-command-line/

    Loggen würde ich das mit PHP aber wohl eher nicht.

    Kommentar


    • #3
      Danke für die Links.
      Wie würdest du dann einen Verlauf / Auswertung der letzten Stunden, Tage, Wochen machen?
      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

      Kommentar


      • #4
        Gar nicht, mich interessierst das Thema nicht, aber andere haben das sicher mehr Erfahrung und können etwas dazu sagen.
        Die Frage ist ja auch warum du das in PHP lösen willst?

        Kommentar


        • #5
          Zitat von SteiniKeule Beitrag anzeigen
          Wie würdest du dann einen Verlauf / Auswertung der letzten Stunden, Tage, Wochen machen?
          Ich würde mir eine Software suchen, die das macht.

          Kommentar


          • #6
            Zitat von hellbringer Beitrag anzeigen

            Ich würde mir eine Software suchen, die das macht.
            Hast du irgendwelche Empfehlungen?
            Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

            Kommentar


            • #7
              Zitat von SteiniKeule Beitrag anzeigen

              Hast du irgendwelche Empfehlungen?
              Nagios, Icinga, CheckMK
              sorry, shift-taste kaputt

              Kommentar


              • #8
                http://nmon.sourceforge.net/pmwiki.php

                Kommentar


                • #9
                  Versuch mal mal z.B. mit:

                  PHP-Code:
                  $json shell_exec('lsblk --json --bytes');
                  $values json_decode($json);
                  var_dump($values); 
                  hier gibt es unter anderem:

                  lscpu --json --bytes
                  lsmem --json --bytes
                  lsblk --json --bytes

                  Kommentar


                  • #10
                    Das ist eigentlich keine Kunst:Wie es geht:

                    Erster Weg:

                    Werte die Ausgaben der passenden Systembefehle (Shell-Befehle) aus. Achte darauf, die Sprache auf LANG=c zu setzen, sonst findet grep abhängig von lokalen Einstellungen die Zeilen nicht.

                    1. Anzahl der CPU -Kerne / Threads
                    Shell-Befehle:
                    Code:
                    LANG=c lscpu | grep '^CPU(s):' | sed -s 's/[^0-9]/ /g'
                    Code:
                    LANG=c lscpu | grep '^Thread(s) per core:' | sed -s 's/[^0-9]/ /g'
                    2. Auslastung pro Kern / Thread
                    vmstat ...

                    3. Durchschnittliche Auslastung aller Kerne.
                    4. Disk IO-Delay
                    5. Disk Read/Write (MB/s)
                    6. Disk Speicherplatzbelegung
                    7. Disk IO-Auslastung in Prozent

                    https://www.computerweekly.com/de/ti...-kennen-sollte

                    Das Rezept steht unten. Sprache auf englisch setzen, Befehl feuern und dann greppen, leerzeichen und tabs durch 1 leerzeichen ersetzen und spalten mit cut suchen

                    8. RAM Total
                    Code:
                    LANG=c free | grep '^Mem:' | sed -E -e 's/[ \t]+/ /g' | cut -d ' ' -f2
                    9. RAM Auslastung
                    Code:
                    LANG=c free | grep '^Mem:' | sed -E -e 's/[ \t]+/ /g' | cut -d ' '-f3
                    10. RAM Reserviert
                    Code:
                    LANG=c free | grep '^Mem:' | sed -E -e 's/[ \t]+/ /g' | cut -d ' '-f6
                    Warnung: Sorge für eine Behandlung von außen übergebener Werte!

                    Zweiter Weg:

                    Du kannst den Kernel vieles direkt fragen.
                    Schau einfach mal die Ordner /proc und /sys durch. Da sind eine Menge Dateien, die werden teils mit 0 Byte Größe angezeigt, haben aber trotzdem einen Inhalt und wenn Du mal mit mount nachschaust findest Du heraus, dass da Dateisysteme gemountet werden, die der Kernel „füttert“.

                    Der zweite Weg ist performanter - allerdings ist mir bei Wechsel von einen BananaPI auf einen RaspberryPi aufgefallen, dass es wohl hinsichtlich der Frage, in welcher Datei manche Werte gespeichert werden (Bei mir war es die CPU-Temperatur!) von Kernel zu Kernel auch Unterschiede gibt. Manchmal ist es deshalb einfacher die Entwickler der Tools die Dokumentationen wälzen zu lassen,

                    Kommentar


                    • #11
                      Zitat von Meister1900 Beitrag anzeigen

                      Nagios, Icinga, CheckMK
                      Cockpit lauscht bei „modernen Systemen“ auf Port 9090 und kann mehrere Rechner verwalten.

                      Kommentar


                      • #12
                        Zum Ursprung der Werte:
                        Tools wie iostat, top, ps o.ä. sind nur Utilities die die Daten Benutzerfreundlicher wiedergeben. Die eigentlichen Informationen kommen aus dem Kernel selbst - über das ProcFS (Prozesse & Legacy) oder SysFS.
                        https://man7.org/linux/man-pages/man5/sysfs.5.html
                        https://man7.org/linux/man-pages/man5/proc.5.html

                        Je nachdem welche Informationen du benötigst, kannst du die Daten auch direkt über o.g. Dateisysteme abfragen, ohne den Umweg über einen extra Prozess zu machen.

                        EDIT:
                        Ergänzend gibt es natürlich Hardwarespezifische Werte, die dann direkt über den Treiber ausgeliefert werden. Beispiel dafür ist S.M.A.R.T, welches bspw. über ATA angesteuert wird.
                        "Software is like Sex, it's best if it's free." - Linus Torvalds

                        Kommentar

                        Lädt...
                        X