Proxmox' Weboberfläche

Proxmox‘ Weboberfläche

In der Regel habe ich keine Angst vor ‚großer‘ Software. Naja, Angst hatte ich auch nicht vor Opennebula. Aber trotzdem habe ich kapituliert. :-(
Ich habe da jetzt ein paar Abende drauf verwendet, aber das scheint doch nicht die richtige Waffe für mein Ziel zu sein. Und der Aufwand das Ding einfach nur zum Spaß zum laufen zu bringen schien mir dann irgendwann zu hoch zu sein. Eigentlich bin ich auf der Suche nach etwas in der Art eines VMware ESX-Servers — nur halt in Open Source. Etwas womit man sich schnell mal bei Bedarf eine virtuelle Maschine klicken kann um irgendwas auszuprobieren.
Nach meinem Eindruck ist Opennebula eher dazu geeignet, sich schnell mal eben 20 oder 50 Maschinen zu klicken. Allerdings scheint es da nötig zu sein die Maschinen vorher als Abbild vorzubereiten. Mal eben das ISO einer neuen Distribution ziehen und booten ist da nicht im Fokus.
Heute habe ich mir ein Proxmox VE installiert, und ich muss sagen: bis jetzt bin ich begeistert!
Die Installation war ein Kinderspiel: auf dem ISO ist ein Debian Squeeze mit fertig installiertem Proxmox. Während der Installation werden nur die Einstellungen für das Netzwerk, ein Hostname und ein Root-Passwort erfragt. Danach kann man die vergebene IP ansurfen und hat eine übersichtliche Weboberfläche in der man sich die Maschinen zusammenklicken kann.
Viel habe ich damit noch nicht gemacht, daher hier nur ein paar Stichworte die ich bis jetzt nennen kann:

  • Wahlweise Virtualisierung mit KVM (um nicht-Linux-Systeme zu betreiben) oder OpenVZ (um Ressourcen zu schonen). Beides geht parallel!
  • Bedienung vollständig über die Webschnittstelle
  • Für OpenVZ gibt es eine Menge Templates mit vorkonfigurierten Systemen, bspw. mit fertig installierten (Web-)Anwendungen. Es scheint nicht allzu schwer zu sein, eigene Templates zu bauen.
  • Eingebaute Backup-Funktionalität: man kann schnell einen Snapshot einer Maschine anlegen, oder auch regelmäßige Sicherungen planen.

Sicher gibt es da noch viel zu entdecken. Ich werde mich da auf jeden Fall noch eingehend mit beschäftigen. Als nächstes sollte ich versuchen rauszufinden wie ich meinen laufenden Debian-Server virtualisieren kann, und wie ich die bestehenden virtuellen Maschinen Proxmox-kompatibel machen kann. Bis jetzt sieht das nach einer echt vielversprechenden Basis für mein Heimnetz aus.

Das Zabbix-Item

Das Zabbix-Item

Lange Zeit habe ich die Überwachung meines Netzwerkes Nagios anvertraut. Vor einiger Zeit habe ich das durch ein Icinga ersetzt, einfach nur um mal zu sehen inwiefern der Fork besser oder anders ist. Seit einigen Wochen beschäftige ich mich aber aus verschiedenen Gründen mit Zabbix, und das ist auf dem besten Wege sowohl Nagios als auch Icinga zu verbannen. Zabbix kann einfach viel mehr als Nagios/Icinga, und wenn man sich an die Konzepte gewöhnt hat ist es absolut nicht schwieriger zu beherrschen.

Eine der letzten Überwachungen die Nagios und Icinga bei mir gemacht haben, Zabbix aber noch nicht, war der Test auf aktualisierte Softwarepakete. Da die meisten Systeme unter meiner Fuchtel unter Debian laufen ist das nicht allzu schwer. Bislang habe ich regelmäßig durch den Nagios Remote Plugin Executor (NRPE) ein apt-get update && apt-get upgrade ausgeführt und rausgeparst wie viele Pakete aktualisiert würden. Das hat mehrere Nachteile: zum einen sind die Prozesse — gerade bei meiner schmalen Internetanbindung — teilweise recht lange unterwegs, und das führt zu Timeouts. Zum anderen bekommt das Monitoring erst beim nächsten Test mit dass ein System aktualisiert wurde, und da ich meine Kisten nicht unnötig stressen will teste ich nur zweimal täglich. Das bedeutet, dass ein Alarm unter Umständen knapp zwölf Stunden weiter besteht, obwohl die Situation schon bereinigt wurde.

Das geht besser.

Ich vermute dass das auch mit Nagios/Icinga besser ginge, aber ich gestehe dass ich damals nicht die Zeit investiert habe. Für Zabbix habe ich jetzt eine Lösung die mir gut gefällt:

Im nebenstehenden Bild sieht man den Parameter (Zabbix-Sprech: ‚das Item‘) das ich dazu angelegt habe. Das ist in meiner Konfiguration das erste Item vom Typ Zabbix-Trapper, daher stelle ich das hier mal vor. Zabbix-Trapper bedeutet, dass der Parameter nicht aktiv gepollt wird. Zabbix wartet passiv darauf, dass jemand mittels zabbix_sender einen Wert in das System schießt. Das funktioniert natürlich sowohl direkt bei Übergabe an den Zabbix-Server, als auch bei Übergabe an einen Zabbix-Proxy (ja, auch so einen habe ich zu Hause… ;-) ).

Nur wer sagt jetzt beim Zabbix Bescheid ob Pakete zu aktualisieren sind? Keine schlechte Idee ist, regelmäßig ein apt-get update auszuführen, um den Katalog aufzufrischen. Das erledigt Cron gerne, dem könnte man dann auch direkt sagen dass er den aktuellen Wert an Zabbix schicken soll. Das würde aber bedeuten, dass das Problem mit der Verzögerung nach einer Auffrischung des Systems immer noch bestünde. Also habe ich mir Apt mal etwas näher angesehen.

Im Verzeichnis /etc/apt/apt.conf.d/ kann man Hooks ablegen die vor oder nach bestimmten Aktionen des Paketmanagements ausgeführt werden. Bei mir gibt es da jetzt eine Datei namens 99zabbix, die hat einen Inhalt in dieser Form:

APT::Update::Post-Invoke-Success { "zabbix_sender -z zabbix.intern -s $(hostname -s).intern -k debian.updates -o $(apt-get -s upgrade | sed -ne 's/^\([0-9][0-9]*\) .*/\1/p') > /dev/null" };
DPkg::Post-Invoke { "zabbix_sender -z zabbix.intern -s $(hostname -s).intern -k debian.updates -o $(apt-get -s upgrade | sed -ne 's/^\([0-9][0-9]*\) .*/\1/p') > /dev/null" };

Das Kommando ist in beiden Fällen das gleiche. Mit APT::Update::Post-Invoke-Success wird festgelegt was nach einem erfolgreichen apt-get update passieren soll. So bekommt Zabbix nach jedem Update mit ob es etwas neues gibt, unabhängig davon ob Cron das angestossen hat oder ob ich das manuell war. Der Eintrag DPkg::Post-Invoke sagt nach jeder Änderung an den installierten Paketen noch einmal Bescheid wie der Stand der Dinge ist. So wird also nach einem apt-get upgrade der Wert direkt wieder auf 0 zurückgesetzt.

Dazu habe ich folgenden Trigger gebaut:

{Template OS Linux:debian.updates.last(0)}>0

Der meldet bislang nur, wenn der letzte Wert in dem Item debian.updates größer ist als 0. Da muss ich aber noch einmal Hand anlegen, so dass der auch aktiv wird wenn seit einer gewissen Zeit kein aktueller Wert gesetzt wurde. Dann ist davon auszugehen dass der Cron-Job kaputt ist der das apt-get update ausführt, oder dass an der Paketverwaltung grundsätzlich etwas schief läuft. Aber wie das geht muss ich mir noch genauer ansehen…

Systemstartprotokoll

Systemstartprotokoll

Ich fühle mich gerade wie ein Kind vor einer Schüssel voll Süßigkeiten an die es nicht ran darf. :-(

Ich glaube für ein Heimnetzwerk habe ich hier eine vergleichsweise komplexe Umgebung. Beim Aufbau habe ich versucht, den Stromverbrauch der Teile nicht aus den Augen zu verlieren. Mein Server hat aktuell eine Intel Core2Duo CPU mit 2,8GHz (E7400), dazu 4GB RAM und zwei Platten im RAID1. Unter Vollast zieht das Ding knapp 130W, wenn er vor sich hin idled begnügt er sich mit knapp 100W. Zumindest wenn ich meinem Messgerät trauen darf.

Jetzt habe ich einen etwas betagten professionellen Server zum Spielen bekommen. Das ist ein Dell 1950. Zwei Xeon mit 3GHz (X5450), 8GB RAM und wieder zwei Platten im RAID. Im Gegensatz zum Eigenbau-Server mit PC-Hardware hat das Ding aber ein paar wirklich nette Features. Allen Voran DRAC. Das ist ein Modul mit einem eigenen Netzwerk-Anschluss, völlig unabhängig von den beiden GBit-Interfaces auf dem Board. Darauf läuft ein Embedded Linux, und damit kann ich selbst bei ausgeschaltetem Server Sachen machen für die ich sonst in den Keller gehen müsste. Ein- und ausschalten, den Status der verbauten Komponenten ermitteln, und was mich besonders beeindruckt: das Teil zeigt mir im Webbrowser die Ausgabe der letzten Power-on Self-Tests (POST), und die der letzten Bootvorgänge. Also das was man gesehen hätte wenn man zum Zeitpunkt des Boots vor dem Rechner gestanden hätte.

Für mich als jemanden der Monitoring als sein Steckenpferd betrachtet bietet das Gerät ein Eldorado: völlig unabhängig vom installierten Betriebssystem kann ich mich per SNMP, IPMI, SSH oder Web über den Zustand des Servers erkundigen.

Der Haken an der ganzen Geschichte: der Dell zieht etwa 80W aus der Steckdose. Ausgeschaltet. Wenn er läuft macht er nicht nur einen Höllenlärm — immerhin toben da 16 kleine aber kräftige Lüfter — sondern nimmt sich locker 250W, wenn volles Rohr gekühlt wird auch gerne mal deutlich ueber 300W. :-(

So sehr es mich reizt, und so viel Spaß auch das Spiel mit professioneller Technik macht: ich glaube das Teil wird hier kein Dauerläufer…

Einer der letzten Punkte an denen mir unter Linux eine Software für einen bestimmten Zweck gefehlt hat war, wenn ich mal ein ordentliches Ablauf- oder Netzwerk-Diagramm malen wollte. Das ist vorbei: yED ist zwar nicht frei, aber kostenlos. Und ehrlich gesagt gefällt es mir besser als das Windows-Pendant auf das ich bislang immer geschielt habe…

Dieser Text stand 2012 noch nicht im Blog, ich habe ihn erst 2015 aus dem alten CMS übernommen.

Oldtimer

Oldtimer

Nur damit ich mir das beim nächsten Mal nicht wieder (wie schon mehrfach) erarbeiten muss schreibe ich hier mal eben auf wie ich unter Linux etwas auf dem Hewlett Packard HP-7475A plotten kann.

Es handelt sich dabei um einen sehr alten — in Worten: das Ding ist 1983 (!) vorgestellt worden — Plotter mit serieller Schnittstelle. Eigentlich verfügt er über sechs Stifte und kann auf Papier bis DIN A3 Zeichnungen ausgeben. Dieses spezielle Modell ist aber von einem Vorbesitzer mit einem Schleppmesser ausgestattet worden, so dass man es als Schneidplotter benutzen kann, also um beispielsweise Logos oder Schriftzüge aus Klebefolien auszuschneiden. Ich habe damit unter anderem die Airbrush-Masken erstellt mit denen ich die Schriftzüge auf mein Motorrad lackiert habe.

Das Gerät wird seriell mit einem Computer verbunden. Ich habe hier ein altes IBM Thinkpad X22, an der Docking-Station ist noch eine richtige Serielle Schnittstelle. Mit USB-Seriell-Konvertern habe ich schlechte Erfahrungen gemacht, das kann aber auch an meinem billigen Konverter liegen.

Konfiguration des Plotters

Hinten am Gerät ist ein achtfach-DIP-Schalter (Mäuseklavier genannt), mit den folgenden Einstellungen habe ich gute Ergebnisse bekommen:

S2 an – S1 an – Y aus – US aus – A3 aus – B4 an – B3 aus – B2 an – B1 aus

Was das genau bedeutet kann man im Handbuch ab Seite 2-22 nachlesen.

Vorbereiten der Plot-Daten

LetsCut -- gruselige Oberfläche

LetsCut — gruselige Oberfläche

Ich habe die Grafik mit dem Vektorgrafikprogramm Inkscape gezeichnet. Falls Schriftzüge geplottet werden sollen müssen die in Pfade umgewandelt werden. Gespeichert wird hier als Scalable Vector Graphic (SVG). Um daraus etwas zu erhalten was der Plotter verarbeiten kann sind aber noch ein paar Konvertierungsschritte nötig. Das ist lästig, lässt sich aber leider nicht umgehen. Inkscape kann zwar auch direkt HPGL ausgeben, aber das berücksichtigt nicht die Eigenarten eines Schneidplotters.

Mit dem Programm Uniconvertor wird das SVG erstmal in eine Adobe-Illustrator-Datei umgewandelt:

Das AI-Format kann mit dem Programm LetsCut in etwas Plottertaugliches verwandelt werden. Das Ding scheint leider nicht weiterentwickelt zu werden, zumindest aktuell (Herbst 2012) macht die Homepage einen verwaisten Eindruck. Die Version 2.1.5 — mit etwas Suchen zu finden in einer Datei namens LetsCut199.2.1.5.zip — lässt sich aber unter Linux problemlos in Wine installieren und ausführen. Die Benutzeroberfläche ist halbwegs gruselig, ich denke aber dass man mit den Screenshots die ich gemacht habe durchkommen kann. Man exportiert die Daten in eine PLT-Datei.

Die kann man sich auch prima mit einem Texteditor vornehmen: der Plotter versteht wirklich einfache ASCII-Befehle. :-)

Ausgabe an den Plotter

Für die Ausgabe muss erstmal die serielle Schnittstelle — in meinem Fall /dev/ttyS0 — passend zu den Einstellungen am Plotter konfiguriert werden:

Danach kann die PLT-Datei einfach mittels cat an den Plotter geschickt werden:

Testplot auf meinem alten Notebook

Testplot auf meinem alten Notebook

Der wird daraufhin losrattern, und je nach Komplexität der Grafik hat man wenige Sekunden bis einige Minuten Später prima Aufkleber.

Die müssen dann erst von überflüssigem Material befreit werden, also von allem was später nicht verklebt werden soll. Um die wirklichen Aufkleberteile passend zueinander verkleben zu können beklebe ich das ganze erstmal mit einer Trägerfolie. Da hat sich die Maskierfolie bewährt die ich für meine Airbrush gekauft habe, die ist bei Bedarf ordentlich großformatig und die klebt nicht so fest dass man sie nicht mehr abbekommt.

Alles in allem…

… ist das eine halbwegs umständliche Aktion, aber mit brauchbaren Ergebnissen.

Schöner wäre es, wenn Inkscape die Daten direkt passend ausgeben könnte, oder wenn man statt des Windows-Tools ein wirklich freies Pendant hätte. Wenn jemand einen besseren Weg kennt… immer her damit!

Antike Hardware

Antike Hardware

Heute war mir mal wieder nach Plotten. Zuletzt habe ich das Gerät — einen Oldtimer der nächstes Jahr dreißig Jahre alt ist — vor knapp drei Jahren benutzt, daher hatte ich kaum noch Reste des Plans wie das funktioniert hat. Damit ich den Weg beim nächsten Mal nicht schon wieder komplett neu entwickeln muss habe ich jetzt mal auf der Schatenseite zusammengeschrieben wie man den Plotter unter Linux benutzen kann.

Diesen Artikel habe ich erst 2015 aus dem alten CMS übernommen, der war 2012 noch nicht im Blog.

Ich weiß ehrlich gesagt nicht woher mein Faible für Taschenrechner kommt. Ich bin kein Mathematiker, und ehrlich gesagt kann ich mir auch nur den Bruchteil der Funktionen eines ‚großen‘ Taschenrechners schlüssig erklären. Aber die Dinger verarbeiten Einsen und Nullen, also muss auch da mal programmiert werden. :-)

Auf Rechner des Herstellers Hewlett Packard bin ich seinerzeit durch einen Emulator auf meinem Nokia N800 aufmerksam geworden. Der heißt Free42, und den gibt es für jedes halbwegs gängige Betriebssystem. Ungewohnt war erstmal die umgekehrte polnische Notation (RPN), das war ein Konzept das ich verstehen wollte. Der Gedanke mir so einen Rechner als Original zuzulegen ist in dem Moment gestorben als ich gesehen habe dass das emulierte Modell — ein HP-42S — immer noch für weit über 150 Euro den Besitzer wechselt. Gebraucht, wohlgemerkt. Der wird seit 1990 nicht mehr hergestellt. Das macht neugierig…

Nun denn, zum Spielen reicht sicher auch die Emulation. Und da ich — außer einem Basic-programmierbaren Sharp PC-1402 Anfang der 90er — nie einen programmierbaren Taschenrechner hatte musste auch das mal ausprobiert werden.

HP-42S

Free42 auf Linux

Free42 auf Linux

Zufällig hatte ich auch gleich ein passendes Problem für die Lösung: zur Zeit arbeite ich in einem Unternehmen in dem Kaffee mit der Geldkarte bezahlt wird. Also mit dem Chip auf der Bankkarte, den man vorher mit Geld aufladen muss. Aufladen kann man nur um ganze Euro-Beträge. Ein Kaffee kostet aber 26 Cent, und ich würde die Karte gerne sauber ‚leer trinken‘. Also muss ich zu meinem Restbetrag den passenden ganzzahligen Euro-Betrag finden damit eine Summe zustande kommt die sich durch 26 Cent teilen lässt. Ein Mathematiker kann das sicher in eine Formel gießen. Wie gesagt: ich bin keiner.

Auf dem Gerät arbeitet man in der Programmiersprache FOCAL, also giesse ich das Problem in ein Programm:

Dieses Programm ist alles andere als perfekt, reichte aber um mir zu zeigen wie man auf so einer merkwürdigen Hardware programmiert. Zur Funktionsweise: zunächst wird die Zahl 0 in Speicher 01 gespeichert. ‚LBL B‘ ist eine Sprungmarke. Dann wird der Wert aus Speicher 01 geholt, um 100 inkrementiert und wieder zurückgeschrieben. Der Wert steht jetzt noch bereit. Mit ‚2 +‘ wird 2 addiert (wir erinnern uns: umgekehrte polnische Notation. Zur Zahl 2 später mehr.), mit ’26 /‘ wird durch 26 Cent geteilt. Vom Ergebnis wird Modulo 1 gezogen. Ist das Ergebnis ungleich 0 wird zu Label B gesprungen, ansonsten wird der aktuelle Wert aus Speicher 01 geholt und durch 100 geteilt. Übrig bleibt der zu ladende Betrag in Euro.

Sicher kann man hier vieles verbessern. Die Zahl 2 ist der Restbetrag in Cent den ich noch auf der Karte habe, so eine ‚Magic Number‘ im Programm ist nicht schön. Außerdem kann es passieren — wenn ich beispielsweise doch mal 25 Cent am Parkautomaten investiert habe — dass mein Restbetrag eine ungerade Zahl ist. Da kann ich Euros addieren bis ich schwarz werde: es wird keine Summe rauskommen die glatt durch 26 Cent teilbar ist.

Aber immerhin: ich kann behaupten, schon einen Taschenrechner programmiert zu haben. :-)

HP-48G

Mein HP-48G

Mein HP-48G

Das hat eine Weile vorgehalten. Irgendwann hat mich das Fieber aber wieder gepackt, ich glaube weil ich für mein Android-Handy andere Emulatoren gefunden habe. Mit Droid48 oder go48g kann man einen HP-48G emulieren. Unter Linux nimmt man x48 um zu spielen.

Der 48G hat gegenüber dem 42S eine Reihe von Vorteilen, einer der gewichtigsten dürfte der weitaus geringere Anschaffungswiderstand der Hardware sein. Das Ding wurde zwischen 1990 und 2003 produziert, 2012 habe ich 30 Euro für einen gebrauchten bezahlt.

Also das gleiche Problem nochmal:

Na das sieht doch schon deutlich weniger nach Assembler aus. Die Sprache nennt sich Reverse Polish LISP (RPL) und wirkt auf den ersten Blick wesentlich erwachsener. Auf den zweiten Blick fallen Zeilen auf in denen sehr merkwürdige Folgen von Variablen, Konstanten und Operatoren stehen. Aber auch eine Abbruchbedingung wie

lässt sich erklären. Wenn man die umgekehrte polnische Notation im Hinterkopf hat und lange genug drüber nachdenkt kommt man in etwa bei sowas raus (mit reichlich Klammern, um wirklich eindeutig zu sein:

Wenn also in der Schleife der zu ladende Betrag grösser als 100 Tassen wird, oder die Summe aus Rest- und Ladebetrag ohne Rest durch 100 teilbar ist wird abgebrochen.

Zugegeben: ich hätte vielleicht auch übersichtlicher programmieren können. Aber etwas Spaß muss ja auch dabei sein, oder? :-)

Und weiter?

Mein TI-Nspire

Mein TI-Nspire

Ich habe hier noch einen Rechner, günstig geschossen während ich auf der Suche nach dem HP-48G war. Das ist ein TI-Nspire von Texas Instruments. Der arbeitet zwar per Default nicht mit umgekehrter polnischer Notation, zeichnet sich aber durch andere Eigenschaften aus.

Als erstes fällt wenn man das Ding in die Hand nimmt das Display auf. Riesengroß, und mit einer Auflösung von 320×240 Punkten. Das schreit geradezu danach, darauf Grafiken zu plotten. Diese Auflösung macht auch eine richtige grafische Benutzeroberfläche möglich. Die ist zwar etwas gewöhnungsbedürftig, funktioniert aber nach einiger Zeit wirklich gut. Darin enthalten sind dann sogar komplexere Anwendungen, wie zum Beispiel eine Tabellenkalkulation.

Auf dem Foto ist auch zu sehen dass dieses Modell über zwei Tastaturen verfügt. Wenn man gerade mal einen ‚einfachen‘ wissenschaftlichen Taschenrechner vorzieht steckt man einfach die zweite Tastatur in das Gerät. Deren Layout ist dem TI-84 plus nachempfunden, und sobald man einschaltet wird eben dieser emuliert. Vollständig. Einschliesslich der vergleichsweise dürftigen Displayauflösung. :-)

Programmiert habe ich diesen Taschenrechner noch nicht. Dabei verspricht das, spannend zu werden: als TI-84 plus unterstützt das Ding TI-Basic, als TI-Nspire sogar die ausgewachsene Skriptsprache Lua — die der eine oder andere vielleicht sogar vom großen Computer her kennt…

Siehe auch…

Mein HP-48G

Mein HP-48G

Aus unerfindlichen Gründen bin ich fasziniert von Taschenrechnern. Also weniger vom guten alten TI-30, mehr von den etwas komplexeren Geräten. Ich habe ein paar nette Emulatoren zum spielen gefunden, und mir sogar zwei ‚große‘ gekauft. Einen HP-48G und einen TI-Nspire.

Heute habe ich mal was zu dem Thema auf der Schatenseite veröffentlicht. Das ist — ähnlich wie Mikrocontroller oder Smartphone — wieder eine komplett neue Plattform zum Programmieren. Andere Sprachen, andere Herangehensweise. Ich bin da alles andere als ein Experte. Bis jetzt zumindest. Aber was ich bislang gesehen habe hat mir schon gefallen. :-)

Bloomberg hat ein Interview mit Steve Wozniak geführt, in dem er wirklich goldene Worte über den Ausgang des Gerichtsverfahrens Apple gegen Samsung sagt:

„I hate it,“ Wozniak said when asked about the patent fights between Apple and Samsung. „I don’t think the decision of California will hold. And I don’t agree with it — very small things I don’t really call that innovative.

I wish everybody would just agree to exchange all the patents and everybody can build the best forms they want to use everybody’s technologies.“

Er war schon immer der sympathischere Steve. :-)