SolarStatus - minimalistisches Status-WebInterface für Unix/Solaris

hotzen

Enthusiast
Thread Starter
Mitglied seit
09.06.2010
Beiträge
602
Ort
Hamburch
Hallo,

gerade Version 0.11 von SolarStatus auf github released: https://github.com/hotzen/SolarStatus

SolarStatus ist ein Web-Interface für Unix/Solaris-Server, das konfigurierte CLI-Commands ausführt und deren Output raw oder zu HTML-Tabellen geparsed ausgibt. Nicht weniger, nicht mehr.
Die Konfiguration wird dynamisch zur Laufzeit aus einer INI-Datei geladen und kann einfach angepasst/erweitert werden.
SolarStatus ist im Gegensatz zu napp-it kein Administrations-Werkzeug, sondern einfach ein Web-Interface, das die Ausgabe der wichtigsten/interessantesten Kommandos bündelt.

Technologie ist sauberes, striktes, simples PHP5 mit jQuery/AJAX und Standard-compliant HTML5, rendered also auch sauber im Handy.
Das ganze ist sehr leichtgewichtig (~60KB distribution-zip).
Eine Installations-Anleitung für Lighttpd ist auf github, inklusive SMF-Deskriptoren für Solaris. Prinzipiell lässt sich jedoch jeder beliebige WebServer nutzen.
Zu geas webserver fehlen mir Informationen, jedoch nehme ich an, dass sein Perl WebInterface auch auf Fast-CGI aufsetzt, so dass dieser WebServer auch ohne weiteres für PHP genutzt werden kann.
Sowohl lighttpd als auch php5 sind sonst direkt über solaris im pkg-repository verfügbar, s.a. die Installations-Hinweise auf github.

Freue mich über Rückmeldungen, die Jungs auf hardforum.com haben schon etliche Ergänzungen zu Advanced ZFS abgeladen, u.a ARC und ZIL Statistics.

Das ganze ist zwar für Solaris/Unix gedacht, heißt die mitgelieferte Konfiguration setzt Solaris-spezifische Kommandos ein,
jedoch ist das ganze ohne Weiteres auch unter Linux einsetzbar.

Freue mich über Rückmeldungen, viel Spaß.
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hallo Hotzen,

hört sich sehr gut an. Setzt Du auch auf Geas Napp.it und kannst daher sagen, ob sich das Lighttpd mit dem minihttpd beisst?
Ansonsten würde ich das gerne mal testen.
Hast Du bitte mal einen Link zu dem entsprechenden Thread auf hardforum.com?

Gruß Millenniumpilot
 
0.7 auf github gepushed, dämlicher Fehler bei der Macro-Expansion...
 
0.7.1 gepushed, ganz kleine Änderungen...
Größte ist, dass login nun über HTTP-GET statt POST läuft, weil lighttpd bei mir manchmal nicht auf POST über SSH antworten wollte.
Da das ganze über Challenge/Response läuft, ist das Passwort trotzdem nie (auch nicht für den Wiresharker) sichtbar.
 
0.7.2 gepushed
Bugfix der Anzeige der ZFS-Kapazität auf Startseite wenn verschiedene Units von ZFS ausgegeben werden.
 
Version 0.8 gepushed.

Default Config aktualisiert, Authentication überarbeitet, viele Details und Refactorings
s.a. neue screenshots
 
Sehr interessant, schaue ich mir mal näher an ich brauche bei napp-it eigentlich nur 1-2 Dinge und nicht alles, von daher sieht das genau richtig aus.
 
Habe mal gea angeschrieben, wie man php cgi an seinen napp-it webserver anbindet, dann wäre das alles noch viel weniger act weil man nichtmal lighttpd o.ä. einrichten muss.
Wenn jemand Hinweise hat, immer gerne her mit ...
 
Habe mal gea angeschrieben, wie man php cgi an seinen napp-it webserver anbindet, dann wäre das alles noch viel weniger act weil man nichtmal lighttpd o.ä. einrichten muss.
Wenn jemand Hinweise hat, immer gerne her mit ...

Napp-it benutzt minihttpd als Webserver mit der Einstellung, dass *.pl Dateien ausführbare CGI Programme sind. Eine .php Datei, die auf .pl umbenannt wird und am Anfang einen Verweis auf einen PHP Interpreter hat, könnte aber eventuell funktionieren.

Problem:
Im Gegensatz zu Perl ist PHP nicht per default installiert.
Es wird also nicht so einfach und generell funktionieren.


Ergänzung:
Dateien in /var/web-gui/_my/wwwroot/ sind unabhängig von napp-it und updates.
(URL: http://ip:81/_my/)
 
Zuletzt bearbeitet:
PHP finde ich ist für solche Belange auch weniger geeignet, als Perl, da es nicht so "Systemnah" ist.

@gea,@hotzen: 2 Fragen:
  • Habt ihr mal überlegt, ob ihr euer Know-How nicht zusammen schmeißen wollt? Das was ihr da so baut sieht beides ganz nett aus.
  • Habt ihr mal überlegt, die ganze Entwicklung etwas aufzutrennen? Ich weiß jetzt nicht, wie napp-it im Detail funktioniert, aber warum baut ihr nicht einen RESTful Service, der über CRUD angesteuert wird und die Systemfunktionen ausführt. Die GUI wäre dann völlig unabhängig von der Serverseitigen-Programmiersprache in JavaScript programmiert und ihr könntet euch viel "teilen" :-) Einer macht den Service, der andere das Frontend... wer was besser kann eben :-) Der RESTFul Service könnte dann auch von verschiedenen GUIs angesteuert werden (napp-it, napp-it lite, napp-it mega, napp-it mobile;)


Was die Frontend-Gestaltung angeht, ist OpenMediaVault übrigens von den quelloffenen Systemen ziemlich weit vorne... Das Konzept ist einfach und trotzdem flexibel. Nur das Debian drunter ist für ein NAS eben nicht so gut geeignet :-)

Falls jemand von euch mal Lust hat, mit eine Software-Entwicker-Diskussion aufzumachen, sagt Bescheid ;)

Ach übrigens: Mal jemand von euch sich mit NGINX beschäftigt? Sehr schönes Teil: http://wiki.nginx.org/InstallingOnOpenSolaris
Und RESTFul Services mit Perl gehen so... ;)

Übrigens tolle Arbeit, die ihr da macht.
 
Zuletzt bearbeitet:
Danke für die Blumen.

Ich wäre natürlich sehr begeistert wenn napp-it mit einem "richtigen" Webserver á la Lighttpd oder Nginx ausgeliefert würde,
allerdings kann man geas Argumentation für einen quasi embedded Webserver leider nachvollziehen.

Restful-Service ist ohne Frage eine feine und edle Sache aber ich glaube für diese Aufsplittung hat gea bereits entschieden zuviel Zeit und Aufwand gesteckt und ich hätte auch keine weitere Freizeit um mich annäherungsweise so drum zu kümmern, wie die ständige napp-it Weiterentwicklung erfordern würde.

Allerdings wäre ich einer einfachen Integration in napp-it nicht abgeneigt. Aber mit mini_httpd ist das wirklich eine PITA ;)
Kenne NGINX eigtl nur als reverse-proxy und load-balancer, macht das Spaß als reiner, kleiner, non-concurrent WebServer?

Ach übrigens: Mal jemand von euch sich mit NGINX beschäftigt? Sehr schönes Teil: InstallingOnOpenSolaris

Code:
pfexec pkg set-authority -O http://pkg.opensolaris.org/webstack webstack
Das fällt ja leider aus wegen ist nicht (mehr), gibts da omnios-mäßig repository-ersatz?
 
geas Argumentation für einen quasi embedded Webserver leider nachvollziehen.
Natürlich, ich auch. gea und du scheinen ohnehin wesentlich mehr von der Materie zu verstehen, als ich, daher sind meine Tipps eher auf Software-Entwickler-Seite zu sehen.

Aber mit mini_httpd ist das wirklich eine PITA
Nimm doch einfach den Webserver, der seit PHP 5.4 eingebaut ist :-)

php -S localhost:8000



Restful-Service ist ohne Frage eine feine und edle Sache aber ich glaube für diese Aufsplittung hat gea bereits entschieden zuviel Zeit und Aufwand gesteckt
Ein RESTFul Service schließt nicht aus, dass die Entwicklung auf anderer Seite weiter geht oder dass bestehende Funktionen weiterhin verwendet werden können. Ich persönlich verstehe bis heute nicht, warum noch keiner die Idee umgesetzt hat (oder ich zumindest noch nicht davon gehört habe), einen GENERISCHEN RESTful Service als zentrales Backend für die Steuerung eines UNIX-basierten Systems zu verwenden. Ich habe mit der verwendung eines RESTful-Service meine Entwicklungszeit um mehr als 1/4 verkürzt.

Ich persönlich würde einen einfachen Service erstmal nur für die An- bzw. Abmeldung am System machen:
POST /rest/session => Anlegen einer Session (Login)
PUT bzw. PATCH /rest/session => Bearbeiten von Session Informationen
DELETE /rest/session => Löschen einer Session (Logout)
GET /session => liefert Informationen über den angemeldeten Benutzer, bzw. ob der Benutzer eingeloggt ist

Dann würde ich stückweise die vorhandenen Funktionen auf den Service umstellen und das Frontend Stück für Stück umstellen. Parallel könnte man mit einem komplett neuen Frontend beginnen (z.B. mit Backbone.js...), hier mal ein kleines Tutorial, wo man viel Potenzial erkennen kann :-)



Kenne NGINX eigtl nur als reverse-proxy und load-balancer, macht das Spaß als reiner, kleiner, non-concurrent WebServer?
Ja. FreeNAS verwendet NGINX. Aktuell habe ich sowieso folgendes Problem:

FreeNAS:
+ Beste Technologien (NGINX, Python, Jails, ZFS, Encryption)
+ Embedded mit Paketinstallation
+ Über WebIF Upgradebar
+ Sehr Stabil
o Mittlerer Funktionsumfang
- Treiber
- Furchtbares Webinterface

NAS4Free:
+ Gute Technologien (ZFS, Encryption)
+ Sehr aktuell (Treiber, etc., da FreeNAS 9)
+ Guter Funktionsumfang
+ Stabil
- Nur als embedded über WebIF Upgradebar
- Nicht so tolles Webinterface

OpenMediaVault:
+ Tolles Interface (genau so sollte es sein! ;)
+ Upgrades über WebIF
+ Gute Plugins (autoshutdown, etc.)
o Full install mit Paketmanagement
- Instabil (da fällt das WebInterface schon bei nem leichten Husten um, upgrades oder Plugininstallationen sollte man ohne vorheriges Full Image vom USB Stick nicht machen)
- Kein ZFS

napp-it:
- Läuft nicht ordentlich vom USB-Stick (K.O. Kriterium)


Also, was tun? ;) Aktuell erscheint mir FreeNAS noch die beste Lösung...
 
Zuletzt bearbeitet:
Oder man verwendet einfach wie ein Mann die Kommandozeile und kann sich dann die technisch beste Lösung für den jeweiligen Anwendungszweck aussuchen und ist nicht auf Klickibunti-Knöpfe angewiesen. :p
Wenn es unbedingt im "Brauser" sein muss gibt es auch mehrere Web-SSH-Clients, z.B. GateOne.
https://en.wikipedia.org/wiki/Web-based_SSH
 
Zuletzt bearbeitet:
Oder man verwendet einfach wie ein Mann
Ich interpretiere das mal als "witziges Beiwerk" :-) Ich kann zwar mit vi umgehen, aber PHP programmiere ich trotzdem mit Eclipse und PDT... Spart aber nur ein wenig Zeit ;)
 
Hi,

hab nun mal SolarStatus 0.8 installiert, läuft wunderbar (hab auch ich Unix Noob hinbekommen alles einzurichten :fresse:) bei mir (Solaris 11.1), musste nur ein paar Befehle anpassen ala sharemgr auf zfs get -r share. Aber das war nicht so wild.

Das einzigste was ich nicht hinbekomme ist das ZIL Stat Script. Bekomme immer den Fehler: "dtrace: failed to initialize dtrace: DTrace requires additional privileges"

Hab schon als root den Befehl gemacht:
Code:
usermod -K defaultpriv=basic,dtrace_user,dtrace_proc,dtrace_kernel webservd
aber die Fehlermeldung bleibt bestehen, eine Idee was ich anders machen könnte?

Wenn ich per PuttY als root
Code:
zilstat.ksh -M -t 1 3
ausführe geht es, könnte das mit Solaris 11.1 zusammenhängen?
 
Zuletzt bearbeitet:
Danke für die Rückmeldung, funktioniert bei mir unter OmniOS auch nicht (mehr, lief unter Solaris Express 11).
Bin da momentan relativ schamlos und habe zilstat in die sudoers eingetragen:

Code:
cat /etc/sudoers.d/webservd
webservd ALL=NOPASSWD:/opt/omni/sbin/smartctl
webservd ALL=NOPASSWD:/opt/zilstat

Code:
; website: http://www.richardelling.com/Home/scripts-and-programs-1/zilstat
; source: https://github.com/richardelling/tools/blob/master/zilstat
;
; DTrace requires additional privileges:
;   usermod -K defaultpriv=basic,dtrace_user,dtrace_proc,dtrace_kernel webservd
; Thanks to ChrisBenn http://hardforum.com/showpost.php?p=1037874906&postcount=23
;
; You may alternatively give webservd sudo-rights to run zilstat:
; create a file /etc/sudoers.d/webservd or line into /etc/sudoers:
;   webservd ALL=NOPASSWD:/opt/zilstat
;
[probe-zfs_zil_stat]
label  = "ZFS ZIL Stat"
class  = probe-zfs-adv
cmd    = "sudo /opt/zilstat -M -t 1 3"
order  = 37

Danke für den Hinweis
 
Wollte nur sagen das diese Variante fabelhaft geht, bei meinem Solaris 11.1 System musste ich auch das noch machen:

Code:
webservd ALL=NOPASSWD:/sbin/intrstat

Für den Befehl habe ich auch mehr Rechte gebraucht. Nun wird alles komplett ausgeführt, auch die Zusatzscripte. Außer Arcstat, aber das scheint ein Solaris 11.1 Problem zu sein, da sagt mir immer das einige Zeilen in der Perl Datei nicht stimmen etc. aber das ist nicht so Wild.
 
Abend,

ich wollte den Thread nochmal hochholen. Gibt es die Möglichkeit einfach von allen verbauten HDDs/SSDs die aktuellen SMART Werte im Bereich S.M.A.R.T. im Web Interface anzeigen zu lassen? Ich habe smartmontools 6.0 bereits installiert, nur wie kann ich das noch in die Config einbinden?
 
Moin,

das sollte per Standard-Config schon mit ausgeliefert sein.
Ich entnehmen deiner Frage, dass die Dokumentation diesbzgl. ungenügend ist? ;)

z.B. die SMART-Attribute aller Platten:
Code:
[probe-smart_attr]
label   = "HDD SMART Attributes"
class   = probe-smart
cmd     = "%SMARTCTL --attributes -d sat,12 %DEVSET-1"
order   = 84
confirm = "SMART commands will wake-up your disks!"

Oder den kompletten SMART-Output:
Code:
[probe-smart_all]
label   = "HDD SMART Complete Information"
class   = probe-smart
cmd     = "%SMARTCTL --all -d sat,12 %DEVSET-1"
order   = 85
confirm = "SMART commands will wake-up your disks!"

Wenn man bei den probes das "confirm" auskommentiert oder löscht, werden die Probes auch ohne expliziten Refresh/Bestätigung ausgeführt.

Wie man sieht verwenden diese Probes das Device-Set "%DEVSET-1",
welches alle Devices/Festplatten enumeriert. Für jeden Eintrag wird der Command einmal aufgerufen.

Für meine 4 Zpool-Tank-Platten sieht das Devset deshalb so aus:
(Auf Raw Disk-Access /dev/rdsk/ achten!)
Code:
[devset-1]
dev[] = /dev/rdsk/c1t0d0
dev[] = /dev/rdsk/c1t1d0
dev[] = /dev/rdsk/c1t2d0
dev[] = /dev/rdsk/c1t3d0


Hinter dem Macro %SMARTCTL steckt wiederum der Pfad zum SmartMonTools-CLI, also so:
Code:
[macros]
smartctl = "sudo /opt/omni/sbin/smartctl"

SmartMonTools erfordert Root-Rechte für den Device-Zugriff, deshalb das sudo.
Also SmartMonTools in die sudoers aufgenommen:
Code:
root@plankton:~# cat /etc/sudoers.d/webservd
webservd ALL=NOPASSWD:/opt/omni/sbin/smartctl


Damit das SMART-Zeuch auch angezeigt wird, ist ganz oben ein SMART-Filter definiert, der alle SMART-probes zur Anzeige bringt:
Code:
[filter-90]
label    = "S.M.A.R.T."
selector = ".probe-smart"
(Angabe des Punktes da CSS-Selector)

Jede Probe die also die entsprechende "probe-smart" Klasse definiert, wird angezeigt.
Definiert wurde die Klasse in den Probes per
Code:
class = probe-smart
(Keine Angabe des Punktes da CSS-Klassen-Definition!)

Damit sollte SMART-mäßig das meiste abgedeckt sein bzw. abdeckbar sein...
Bereits mit geshipped sollten folgende SMART-Probes sein:
  • Health-Check
  • Temperature
  • Alle Attribute
  • Komplette Info
  • Device-Info
  • Test-Results
  • kurzen Selbsttest starten
  • langen Selbsttest starten

Vermisst Du außerdem etwas?
HTH
 
Moin,

das sollte per Standard-Config schon mit ausgeliefert sein.
Ich entnehmen deiner Frage, dass die Dokumentation diesbzgl. ungenügend ist? ;)

...

Vermisst Du außerdem etwas?
HTH

Nein, nur ich glaub bei mir gibt es scheinbar ein paar Probleme die ich jetzt dank deiner Anleitung jetzt Schritt für Schritt prüfen werde. Merci dafür :)

Das einzige was ich in SolarStatus vermisse wäre ein Herunterfahren Button im Web Interface der als SU init 5 ausführt, das mach ich bis heute immer mit PuttY.
 
Danke läuft nun alles bestens, wenn das mit dem Herunterfahren dann auch noch klappt ist es echt perfekt für einen schlanken ZFS WebGUI, läuft mit Solaris 11.1 ohne Zicken.
 
Erst hatte ich einen falschen Pfad zu smartmontools angegeben und dann hatte ich mich bei den SU Rechten vertippt, dank der Auflistung hab ich nun aber das ganze System besser verstanden.
 
Kam keinerlei Rückmeldung wegen des falschen Pfades? Werde das mal alles durchtesten, Danke.
Und dann auch entsprechend die Doku überarbeiten ;)

Habe mir auch schon überlegt ob ich nicht nen Editor/Configurations-WebInterface für baue aber
das wäre schon ein wesentliches Arbeitspaket...
 
Da kam zunächst nur das die Pam Authentifizierung schief lief, wo ich erst dachte ich hätte die SU Rechte falsch eingetragen und dann hatte ich zwar den Pfad auf /sbin/smartmonctl geändert, aber hatte einen Tippfehler in der sudousers gemacht. Also nicht Fehler der Doku, sondern vom User :fresse:
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh