Monster Tech Tales: ELK-Stack und npm
Jonas Juchim hielt dabei einen Vortrag über seine Masterarbeit. Anschließend entschloss sich Michael Schäfermeyer spontan, von seinen Eindrücken und Erfahrungen mit Paketmanagern zu erzählen.
ELK-Stack: Jonas Juchim
Der ELK-Stack, inzwischen als Elastic Stack in der Version 5.0 verfügbar, kombiniert verschiedene Dienste des Herstellers Elastic um strukturierte Daten zu erfassen, zu speichern und zu visualisieren. Mit Hilfe des Packetbeat-Collectors werden Daten im JSON- oder Textformat an den Logstash-Verarbeitungsdienst gesendet und von dort aus in die skalierbare Volltext-Suchmaschine Elasticsearch eingepflegt.
Mit Hilfe des Frontends Kibana werden diese Daten daraufhin aggregiert und können über verschiedenste Metriken visualisiert werden.
Bemerkenswert ist die Fähigkeit des ELK-Stacks, beinahe unbegrenzt und mit wenig administrativem Aufwand horizontal skalieren zu können.
Jonas zeigte uns mit einer Live-Demo, wie die Logdaten eines Webservers mit Hilfe von Packetbeat, Logstash, Elasticsearch und Kibana verarbeitet werden können. So lassen sich Informationen über den Betrieb der gehosteten Webseite visuell ansprechend darstellen wie beispielsweise die Anzahl der Besucher oder die Anzahl der Serverfehler in einem bestimmten Zeitraum.
Ein kleiner Wermutstropfen ist jedoch die Absicherung des Elasticsearch-Clusters gegen unbefugte Zugriffe. In der Standardausführung gibt es keinerlei Möglichkeiten eine Zugriffskontrolle für Elasticsearch oder Kibana einzurichten. Diese Funktionalität lässt sich mit Hilfe des kostenpflichtigen Plugins Shield (inzwischen Teil des Pakets X-Pack) nachrüsten. Wer jedoch mit kostenloser Open-Source Software verbleiben möchte, kann ein ähnliches, rudimentäres Benutzermanagement mit Hilfe eines reverse Proxy wie etwa nginx realisieren um Elasticsearch und Kibana vor unbefugten Zugriffen zu schützen.
npm: Michael Schäfermeyer
Nicht auf der Agenda vorgesehen, aber dafür umso interessanter war der „Spontantalk“ von Michael Schäfermeyer über npm, den populärsten Paketmanager im JavaScript-Ökosystem. Dieser sorgte kürzlich für Schlagzeilen, da ein bekannter Entwickler all seine veröffentlichen Pakete zurückzog und so für Laufzeitfehler in zahlreichen Projekten sorgte, die dessen Pakete direkt oder indirekt über andere Abhängigkeiten nutzten. Anlass war eine Abmahnung, die den Entwickler dazu aufforderte ein Paket, das die Markenrechte von „kik“ (Instant Messenger) missbrauche, zu entfernen. Nach dem Motto „Ganz oder gar nicht“ entfernte dieser daraufhin kurzerhand alle von ihm veröffentlichten Packages.
Da die meisten Meetup-Teilnehmer wahrscheinlich weniger am Rechtsstreit interessiert sind, machte es sich Michael zum Thema, warum das Problem auf technischer Ebene vermeidbar gewesen wäre. So erklärte er in unterhaltsamer Weise, wo die Probleme von npm liegen:
- Durch fehlende Kontrolle werden zum Teil werden triviale Funktionalitäten als Paket veröffentlicht, die unnötig viele Abhängigkeit ins Projekt bringen.
- Gerade bei der Installation von Paketen bestehen Sicherheitsprobleme: Das Ausführen von UNIX-Kommandos kann im Extremfall das eigene System unbrauchbar machen.
- Die Möglichkeit, bereits veröffentlichte Pakete nachträglich zu verändern, und das Fehlen von Prüfsummen für veröffentlichte Pakete, erschwert die Kontrolle von Inhalten eingebundener Pakete.
Dass es auch besser geht, zeigt hexpm, der Paketmanager für Erlang-/Elixir-Projekte. So können auf dieser Plattform bereits veröffentlichte Pakete nur in Ausnahmefällen gelöscht werden. Ein nachträgliches Verändern von Inhalten ist komplett verboten. Zudem ist in naher Zukunft die Unterstützung für Prüfsummen geplant.
Nachdem in einer regen Diskussion offene Fragen über die Vorträge geklärt wurden, haben wir gemeinsam Ideen für das neue Logo von Monster Tech Tales gesammelt.
Über Monster Tech Tales
„Monster Tech Tales“ wurde ursprünglich als Ruby on Rails-User Group unter dem Namen „Monster on Rails“ gegründet. Mit der Zeit entwickelte sich der Themenfokus immer mehr Richtung einer generellen Technologie- und Software Engineering-User Group. Wir behandeln Themen im Bereich (Web-(Technologien, (Web-(Frameworks, Software Architektur, Design Patterns, (No)-SQL DBMS, Programmierparadigmen, Agile Entwicklung und viele mehr. Normalerweise treffen wir uns einmal pro Monat im Zweitag-Büro. Mach mit bei Meetup.