Uptimes und System Infos online erfassen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich bastel zur Zeit an einer Webseite um allgemeine System Informationen zu sammeln und über einen Internet Webserver anzuzeigen: http://5.231.51.22/sysinfos/

    Fand es interessant eine einfache und zentrale Übersicht, mit Daten wie die aktuelle Uptime, was für ein Rechner genutzt wird oder was für eine Auslastung das System hat, über all meine kleinen Rechner (Futro S400, Igel 564LX, RaspberryPi und ein miniITX) zu haben

    Dazu nutze ich ein bash Script welches ein mal täglich die Daten sammelt, an einen Webserver schickt (input.php) und auf dem Webserver wiederum kann man eine output.php aufrufen die diese Daten dann anzeigt..

    Wichtig für mich ist das Projekt möglichst transparent zu gestalten - alle Dateien sind für jeden einsehbar, sowohl die SQLite Datenbank als auch die beiden php Dateien.

    Dafür hab ich für die PHP Dateien Verknüpfungen (symlinks) angelegt, da sonst der apache2 Webserver die *.php Dateien verarbeiten würde. Das funktioniert für die input.php auch sehr gut, nur für die output.php nicht so super da dort auch html Code enthalten ist wo sich leider nicht verhindern lässt dass apache2 diesen verarbeitet..

    Aber um sicherzustellen das ich keine IPs oder derartiges speicher sollte es für euch eigentlich reichen in sowohl input.php (die Datei, die die Informationen vom sysinfos.sh entgegen nimmt) und der SQLite Datenbank (db.sqlite.sysinfos) rein gucken zu können - Ansonsten versuche ich auch immer stets den aktuell verwendeten Source zu packen: http://5.231.51.22/sysinfos/_source_.tar.gz (alternativer download link: > *klick* <)
    Falls euch das doch nicht reicht könnt ihr mir auch gerne eine PN schicken und ich geb euch kurzfristig Zugriff auf den Server



    Ihr könnt euer eigenes System nur dann erkennen wenn ihr zB eure UUID kennt (oder zumindest die ersten 4 Stellen emoticon-0122-itwasntme.gif)


    Folgende Daten werden zZt gesammelt:
    - system uptime
    - cpu model name
    - cpu frequence
    - cpu cores
    - cpu load
    - cpu load avg
    - kernel
    - distribution
    - uuid of first harddisc

    Die UUID benötige ich um ein System eindeutig zu identifizieren, damit ein Datenbank Eintrag auch aktualisiert werden kann


    Das Projekt befindet sich derzeit noch in der Entwicklung, funktioniert bereits aber schon sehr gut..

    Würde an dieser Stelle gern Feedback sammeln um ggf noch was zu verbessern und vielleicht steht ja eurerseits auch soviel Interesse daran das man das Projekt hier im Forum oben Anpinnt und als Referenz für Fragen wie zB:

    Wie stabil ist ein ThinClient o.ä.?

    Dabei spielt aber eben nicht nur die Uptime eine rolle sondern auch wie sehr er genutzt wird (load), um was für ein Modell es sich handelt (cpu) und welcher Kernel genutzt wird.
    Eigentlich sogar auch sowas wie Temperatur usw aber leider haben nicht alle Systeme Sensoren die man abfragen könnte

    Ihr benötigt nur ein bash Script (sysinfos.sh), was ihr irgendwo speichern könnt (zB im /root/ Verzeichnis)
    Ich empfehle aber einen extra Benutzer anzulegen der das Script dann ausführt (es sollten generell keine Prozesse oder Scripte als root laufen!)

    Zum anlegen eines Benutzers gebt ihr als root folgenden Befehl ein: useradd -m -s/bin/bash sysinfo

    -m bewirkt dass das Homedir für den Benutzer angelegt wird
    -s/bin/bash legt die standard shell fest, also bash
    sysinfo ist der Benutzer der angelegt wird und folglich wäre sein Homedir: /home/sysinfo

    Dann wechselt ihr zu diesem Benutzer mit dem Befehl: su - sysinfo
    Dann öffnet ihr am besten einen Linux Editor wie zB nano oder joe oder vi und copy&pastet das folgende Script dort direkt rein:
     nano sysinfos.sh

    Spoiler anzeigen


    Dann das Script ausführbar machen: chmod 755 sysinfos.sh

    Und dann wie folgt in die Benutzer-crontab eintragen.
    Dazu am besten vorher einmalig den Befehl export EDITOR=nano ausführen.
    Ihr könnt auch einen anderen Editor angeben.
    Der Befehl bewirkt dass der Standard Editor zum bearbeiten der crontab gesetzt wird, normalerweise wäre das nämlich " vi " aber der Umgang damit ist wie ich finde komplizierter als mit nano emoticon-0100-smile.gif
    Also, die crontab des Benutzers bearbeiten: crontab -e
    Dort folgendes einfügen:

    Code
    0 19 * * *     $HOME/sysinfos.sh >/dev/null 2>&1


    Damit wird das Script jeden Tag um 19 Uhr ausgeführt
    $HOME beinhaltet das Homedir, das ist eine standardtisierte, Systemweite Variable die ihr nicht extra setzen müsst

    (zum entwickeln übermitteln meine 2 Systeme jede Stunde ihre Daten)


    Changelog:

    Spoiler anzeigen

    sysinfos.sh
    v0.12:
    - Distro detection aufgrund von fehlerhaftem erkennen der Version von zB "Ubuntu LTS" verändert..
    - UUID wird nun ins TMP Verzeichnis gespeichert damit beim Ausführen über root keine andere UUID ausgelesen wird..
    v0.10:
    - Distro detection erweitert (27 verschiedene Distro's werden nun erkannt)
    - Allgemeine Code-Optimierungen
    v0.02:
    - Bei jedem ausführen wird das sysinfos.sh Script vom Webserver geladen, die Grösse verglichen und das alte ggf ersetzt (kann über "ScriptUpdater" abgeschaltet werden)
    - Errorhandling verbessert




    Falls ihr Fragen habt dann würde ich mich freuen euch diese zu beantworten emoticon-0100-smile.gif

  • munin erfasst aber noch mehr (fuer diesen Zweck zu viel), verbraucht dadurch auch beim erfassen mehr CPU+Ram, erzeugt selber einiges an Disk I/O und stellt die Daten nicht Online ;)


    /EDIT: Vielleicht hat jemand sowas ja auch für seine Rechner vor und kann das hiermit dann ganz leicht für sich selber nutzen und vom Code lernen o.ä. :)

  • Hm ich hab grad ein seltsames Phänomen entdeckt - das betrifft zwar nicht den RPI aber zB einen Core i7

    Und zwar wird über /proc/cpuinfo folgendes angezeigt:

    Code
    model name      : Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz
    stepping        : 5
    cpu MHz         : 1600.000

    Dann habe ich ein interessantes Tool gefunden: i7z

    Darüber werden die tatsächlichen Werte angezeigt. Sieht bei mir dann so aus:

    Spoiler anzeigen

    Dann hab ich auf der selben Seite vom i7z Tool noch ein ruby Script gefunden: http://i7z.googlecode.com/svn/trunk/i7z_rw_registers.rb

    Damit kann man Einfluss auf folgendes nehmen:

    turbo : which examines the turbo status
    multiplier : examines the multipliers
    power : which prints current wattage of the system
    clock : allows for software clock modulation ( a form of throttling )
    system : allows to print some system info

    Damit habe ich dann multiplier set 20 ausgeführt und nun läuft mein Core i7 mit 2.6Ghz :angel:

    Spoiler anzeigen

    /proc/cpuinfo zeigt aber weiterhin 1.6Ghz :-/ :s qwwbbx5pmlw.gif

    Liegt das am etwas älteren 2.6.26-2-amd64 Kernel?


  • Ich benutze RPi-Monitor. Hier mal ein Link: http://rpi-experiences.blogspot.ch/

    Zum benutzen Port 8888 freigeben.

    Extra freigeben brauch man da nix - falls du dafür eine extra Portweiterleitung im Router eingerichtet hast dann mach die mal wieder zu ;)



    P.S: Woher hast du die 404-Seite? Würde das gerne auch haben. Bitte per Private Nachricht!

    Hehe, meine VPS is depressiv weil es nix zu tun gibt :D

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!