Die Out of the Box Experience

Hallo!

Ich würde gern ein aktuelles Thema aufgreifen, das in letzter Zeit viele Leute beschäftigt. Da aus aktuellem Anlass viele Leute ins Homeoffice gehen mussten und nun von dort ihre Arbeit verrichten, haben viele neue Monitore, Rechner, Mikros und Software erhalten, um dies zu bewältigen.

Nun gibt es aber die schon oben beschriebene Erfahrung, die aus rein subjektiver Sicht entscheidet, ob man mit dem neuen Produkt zufrieden ist oder es gleich wieder einpacken und zurückschicken will.

Das Feld ‘Videokonferenzen’ will ich hier gar nicht betreten. Da hat jeder andere Präferenzen.

Mir geht es in dem Blogpost eher um die “Experience”, ein tolles Marketing-Buzzword, bei dem sich am liebsten jeder unter der Couch verstecken möchte. Die Erfahrung, die man mit dem jeweiligen Produkt direkt nach dem Auspacken macht, ist sehr variabel.

Nehmen wir mal als Beispiel einen neuen Firmenlaptop. Wir haben ihn aus der Verpackung gepult und drücken auf den Powerknopf und unsere neue Kiste mit SSD und mehr Speicher & CPU Kraft aller Großrechner in den 80zigern dümpelt 5 Minuten in einem Regenbogenfarbenen Waiting Screen von Windows umher in dem uns mitgeteilt wird das wir uns freuen dürfen das ‘now’ etwas für uns passiert.

NOT!!!! Jemanden warten zu lassen ist keine ‘Gute’ Out of the Box Erfahrung. Auch 4-5 Sicherheitsfragen welche sowas lustiges wissen wollen wie “Was war ihr erstes Haustier” … sind eher Anti Security .. Rein statistisch hat man hier schon in den USA mit sowas wie ‘Spot’ einen Treffer um in einen Benutzeraccount rein zu kommen.

Idealerweise sollte man nicht warten müssen . NEVER make your Customer wait.

Das wussten selbst Betriebssysteme aus der prähistorischen Ära. Einschalten, Loslegen. C64 => Einschalten und READY.
Selbst die Amiga Workbench war nach dem Starten direkt verfügbar und auch Atari TOS auf dem ST. Nun sind wir im Jahr 2020 AD.

Aus Sicht eines Endbenutzers ist das keine gute Erfahrung (Warten, abgreifen personenbezogener Daten für Marketing-Zwecke, Sicherheitsexploit-Fragen) und zum goldenen Abschluss, nachdem man die ganze Prozedur hinter sich hat, kommt noch ein haufen Autoupdates, die noch installiert werden müssen, bevor man effektiv anfangen kann zu arbeiten.

Selbst bei Konsolen ist die Out of the Box Erfahrung … inzwischen hundsmiserabel.
Früher: SNES Spiel in die Konsole stecken und läuft. Heute: Mindestens 2 Anmeldungen. Einmal Hersteller spezifisch XBox Account/STEAM Account/PSX Account und dann gegebenenfalls nochmal die des Spieleherstellers und dessen Plattform inkl. Werbung.

Das künstliche Gold der Marketing/Wertschöpfungskette von Daten, die nur um deren Selbstwillen für User Tracking generiert werden, ist bis in das einfachste Produkt vorgedrungen. Selbst meine Bose Wireless Kopfhörer wollen meinen Alex Account Zugriff um mir ‘Mehr Info’ liefern zu können.

Da ich nun sehr abgedriftet bin von der Thematik: Die “Auspack und sofort Loslegen Erfahrung” ist sehr “Simplismus” geprägt, man findet die “Out of the Box” Erfahrung am idealsten, wenn man direkt loslegen kann.
Kein wenn und kein aber.
Zu einem späteren Zeitpunkt können die Settings des Produktes verfeinert werden. Also ggf. einen Account anlegen, höhere Security Settings setzen und andere Einstellungen vornehmen.

Aber die Defaults sollten IMMER zu einem produktiven Ergebnis führen.

Software ist auch ein Werkzeug wie ein Schraubenzieher. Der will auch nicht, dass ich bei ‘Binford’ einen Account anlege. bevor ich die erste Schraube in das Holzbrett drehe. Software & Betriebssysteme sollten allgemein wieder auf Funktionalität ausgelegt werden anstelle von Subscription ‘featureitis’ …

Das baut nur unnötige Hürden und Fehlerquellen auf und dient nur dem Selbstzweck.
Einstecken, Einschalten & Loslegen war mal die Devise – ich hoffe, dass nach all den bitteren Erfahrungen der letzten Zeit wieder auf diese Out of the Box Erfahrung Wert gelegt wird.

In dem Sinne ‘Good Luck and Good Night’

Bis zum nächsten Mal

David

Das Nette Katzenfoto wurde bereitgestellt von

Photo by DNK.PHOTO on Unsplash.

David Okon
David Okon
Support Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

Neue Icinga Web Themes verfügbar! – Bayerisch, Fränkisch, Österreichisch

Zum Abschluss der Woche möchte ich noch unseren April-Scherz auflösen. Solltet ihr ernsthaft gedacht haben, dass wir diese Themes wirklich bauen…

 

Dann habt ihr genau richtig gelegen!

 

Bayerisch

Github: https://github.com/NETWAYS/icingaweb2-theme-bayerisch

 

 

 

 

Fränkisch

Github: https://github.com/NETWAYS/icingaweb2-theme-fraenkisch

 

 

 

 

Österreichisch

Github: https://github.com/NETWAYS/icingaweb2-theme-oesterreichisch

 

 

 

 

 

 

Viel Spaß damit!

 

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

HPE SSD drives vulnerable to uptime counter bug

With two bulletins published by Hewlett Packard Enterprise (HPE), several solid state disks (SSD) were declared vulnerable to a software bug, which causes the counter for uptime hours to overflow after 32768 or 4000 hours and renders the disk completely inaccessible. A quote from the vendor:

This … firmware is considered a critical fix and is required to address the issue detailed below. HPE strongly recommends immediate application of this critical fix. Neglecting to update to SSD Firmware Version … will result in drive failure and data loss at 40,000 (or 32,768) hours of operation and require restoration of data from backup if there is no fault tolerance, such as RAID 0 or even in a fault tolerance RAID mode if more SSDs fail than can be supported by the fault tolerance of the RAID mode on the logical drive. Example: RAID 5 logical drive with two failed SSDs.

One of our customers asked us for help with identifying the affected drives, since they noticed some of their servers being affected. We have written a custom Icinga plugin to check for affected drives and to identify where firmware updates are required. The only requirement is SNMP access to the servers or devices that need to be checked. The plugin lists all found drives, compares them against a list of affected models and compares the firmware version against the recommended fix by HPE.

When everything is fine, you should see something like this:

OK - All 2 controllers and 33 drives seem fine
[OK] controller (0) model=p816i-a serial=XXX firmware=1.65 - firmware older than affected
[OK] controller (4) model=p408e-p serial=XXX firmware=1.65 - firmware older than affected
[OK] (0.9 ) model=MO003200JWFWR serial=XXX firmware=HPD2 hours=8086
[OK] (0.11) model=EK000400GWEPE serial=XXX firmware=HPG0 hours=8086
[OK] (0.12) model=EK000400GWEPE serial=XXX firmware=HPG0 hours=8086
[OK] (0.14) model=MO003200JWFWR serial=XXX firmware=HPD2 hours=8086
[OK] (4.0 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.1 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.2 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.3 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.4 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.5 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied

You can find the plugin on GitHub under check_hp_firmware where the release page provides the built binaries for Linux.

Feedback or questions are welcome as GitHub issues, directly in the project.

Please make sure you have also read the official documents from HPE:

Update 2020-04-09: The plugin was enhanced to check for controller firmware vulnerabilities as well, and is now named check_hp_firmware. See the new blog post.

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Icinga Web Themes coming soon – Bayerisch, Fränkisch, Österreichisch!

Als Icinga-Partner kümmert sich NETWAYS unter anderem um die Beratung und Umsetzung von Projekten rund um Icinga, aber auch um kundenspezifische Entwicklungen. Ein Beispiel für solche Entwicklungen sind Icinga-Plugins oder auch die Icinga Web Themes, die ich euch hiermit gerne ankündigen möchte: Bayerisch, Fränkisch und Österreichisch.

Von unseren Kunden bekommen wir konstant Input für neue Ideen und versuchen diese natürlich auch in die Tat umzusetzen. Diese Ideen sortieren wir sorgfältig nach Aufwand, Kosten und Nutzen, wodurch eine Priorisierung entsteht.

Nun mag sich der ein oder andere fragen: “Wenn es nach der Priorität geht? Warum dann solche Themes zuerst!?”

Die Antwort ist relativ einfach. Das beruht auf einem Versehen in der Planung. Eines schönen Morgens haben wir unsere Development-Ressourcen geplant und die To-Do-Liste lag verkehrt herum auf dem Tisch. Da ihr mir sicher nicht glaubt, folgt direkt das Beweisfoto. Aus Gründen des Datenschutzes musste ich einige Stellen schwärzen.

Was soll ich sagen… Nach monatelanger Entwicklung können wir heute schon mal eine kleine Vorschau der Themes veröffentlichen.

Bayerisch

Fränkisch

Österreichisch


In diesem Sinne: Seid gespannt! Coming soon – Bayerisch, Fränkisch und Österreichisch 🙂

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Icinga for Windows – Webinar Kalender

Im Februar hat das Icinga-Team sehr erfolgreich die neue Lösung zur Überwachung von Windows-Systemen veröffentlicht. Hierbei handelt es sich um ein auf PowerShell-Basis bereitgestelltes Framework inklusive Plugins, welches individuell erweitert werden kann. Um den Einstieg zu erleichtern haben wir eine Reihe von Webinaren geplant, um sowohl die Installation und Grundeinrichtung aber auch die Entwicklung von eigenen Plugins und Modulen zu veranschaulichen.

Starten werden wir direkt am Mittwoch, den 11. März 2020 um 10:30 mit dem Webinar “Icinga for Windows – Einstieg”. Eine kostenfreie Registrierung und Teilnahme ist wie immer möglich. Anschließend werden wir das Webinar auf unserem YouTube-Kanal online stellen.

Darüber hinaus haben wir noch weitere Themen wie ein Webinar zur Plugin-Entwicklung und Daemon-Entwicklung geplant. Eine vollständige Übersicht stellen wir natürlich auch bereit:

Thema Datum Anmeldung
Icinga for Windows – Einstieg 11. März 2020 – 10:30 Uhr Anmeldung
Icinga for Windows – Custom Plugin Development 01. April 2020 – 10:30 Uhr Anmeldung
Icinga for Windows – Custom Daemon Development 06. Mai 2020 – 10:30 Uhr Anmeldung

Auf weitere Themen gehen wir gerne ein – Vorschläge können dabei direkt an uns übermittelt werden. Wer Unterstützung bei der Einrichtung, Erweiterung und dem Roll-Out benötigt, kann hierfür ebenfalls auf uns zukommen.
Eine Anfrage kann direkt über unser Kontaktformular eingekippt werden.

Wir freuen uns auf die Teilnahme sowie zahlreiches Feedback!

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Automatic PDF Generation with Google Chrome

Many developers get, sooner or later, the task to generate PDF documents automatically. Though, less developers put their experiences and insights then into a blog-post to save others some hassle. So let me do you a favor by explaining how we utilize Google Chrome in headless mode to generate pretty PDF files from HTML.

I won’t go into the details why Google Chrome. If you found this blog entry I suppose you already tried other options without success or satisfying results. We sure have tried several other options (e.g. wkhtmltopdf, dompdf, tcpdf) but only Google Chrome provided us with the results we wanted.

Another advantage of Google Chrome is the possibility to instrument a remotely running instance. And that’s exactly how we instruct it to generate a PDF file for us. Though, not with Puppeteer but with plain chrome devtools protocol (CDP) communication over a websocket.

I’ll avoid any programming language specific examples. You can take a look here at our implementation in PHP. So, let’s start with it.

The Process to Print HTML to PDF

First you’ll need to connect with the browser by use of a websocket connection at: ws://10.11.12.13:9222/devtools/browser/79744167-25f0-41a8-9226-382fa2eb4d66

This is printed on stderr right at launch of the process and also available on the JSON api: 10.11.12.13:9222/json/version

The important bit is the browser id (79744167-25f0-41a8-9226-382fa2eb4d66) at the end of the URI. This changes every time the process is launched and can’t be configured.

Communicating with the browser now takes place over this socket by transmitting and receiving JSON messages. They are divided into four types:

Calls

These primarily originate from ourselves. They contain an id, a method and parameters:

{ “id”: <mixed>, “method”: <string>, “params”: <object> }

The id is chosen by us and should be different for each call. It’s sent back with the response so it’s possible to later associate it with the call we made. Though this is mostly relevant if you are not communicating synchronously, which we do. So this may just as well be an integer incremented by 1 each time.

Results

These are sent by the browser in response to an API call.

{ “id”: <mixed>, “result”: <mixed> }

Errors

If it’s not a response, it’s an error.

{ “id”: <mixed>, “error”: { “code”: <int>, “message”: <string> } }

Events

These may be sent by the browser at any time.

{ “method”: <string>, “params”: <object> }

Some of these are of interest to us. Some of them are not and can be ignored.

Operating the Browser As Usual

In order to let the browser print us a web page (or HTML) to PDF we need to instrument it the same as when we do it manually on the desktop.

First we need to open a new tab:

Call: { “id”: 1, “method”: “Target.createTarget”, “params”: { “url”: “about:blank” } }

Result: { “id”: 1, “result”: { “targetId”: “418546565-d4f9-4d9f-8569-9ad8f9db7f9de” } }

Now we have to communicate with the tab, which requires a new websocket connection to: ws://10.11.12.13:9222/devtools/page/418546565-d4f9-4d9f-8569-9ad8f9db7f9de

Before we can print anything we have to tell the browser where to load the content to print from. This may either be a URI (which then needs to be accessible for the browser) or raw HTML. I’ll stick to raw HTML here, since it’s the most flexible option anyway:

Call: { “id”: 2, “method”: “Page.setDocumentContent”, “params”: { “frameId”: “418546565-d4f9-4d9f-8569-9ad8f9db7f9de”, “html”: <html> } }

Result: { “id”: 2, “result”: { } }

The next step is the instruction to print the page’s content to PDF:

Call: { “id”: 3, “method”: “Page.printToPDF”, “params”: <object> }

Result: { “id: 3, “result”: { “data”: <string> } }

What parameters you can use to influence the generation (e.g. the layout) are outlined in the official documentation.

The string you will get back is probably encoded in Base64, so decode it and store it where you want. The PDF file has been successfully generated.

If you are planning to use a single process to generate multiple PDFs with, remember to clean up afterwards. (i.e. closing the tab) Otherwise you will soon have a memory usage issue.

Call: { “id”: 4, “method”: “Target.closeTarget”, “params”: { “targetId”: “418546565-d4f9-4d9f-8569-9ad8f9db7f9de” } }

Result: { “id”: 4, “result”: { “success”: <bool> } }

I hope this proves useful to you or convinces you to give Google Chrome a try to generate pretty PDFs. 🙂

Johannes Meyer
Johannes Meyer
Developer

Johannes ist seit 2011 bei uns und hilft bei der Entwicklung zukünftiger Knüller (Icinga2, Icinga Web 2, ...) aus dem Hause NETWAYS.