pixel
Select Page

NETWAYS Blog

NETWAYS GitHub Update Juli 2023

This entry is part 6 of 7 in the series NETWAYS GitHub Update

Willkommen beim NETWAYS GitHub Update, unser monatlicher Überblick über unsere neuesten Releases.

Im Juli 2023 haben wir wieder einen ganzen Schwung spannender Updates an den Start gebracht. Dazu gehören unter anderem eine Aktualisierung der Golang Bibliothek für Check-Plugins, Version 1.2.5 unseres beliebten Icinga Installers sowie ein neuer Release des NETWAYS Support Collectors.

Zudem haben die Check-Plugins für Bareos, Elasticsearch und Logstash einige Änderungen spendiert bekommen!

Wenn du in Zukunft Updates direkt zu Release erhalten willst, folge uns einfach auf GitHub: https://github.com/NETWAYS/

check-bareos Release v2.0.0

Wir haben diesen Monat einen großen Refactor des Check Plugins durch, damit werden wir das Tool in Zukunft besser warten können. Gibt viele Änderungen, am besten die Release Notes lesen.

Changelog

  • Hinzugefügt: Viele neue Unittests!
  • Hinzugefügt: CLI Parameter unterstützen Thresholds
  • Ausgabe normalisiert und erweitert
  • Diverse Bugfixes

https://github.com/NETWAYS/check_bareos/releases/tag/v2.0.0

go-check Release v0.5.0

Ein etwas größeres Release unserer Golang Bibliothek für Check Plugins. Mit diesem Release haben wir einiges an Code aufgeräumt.

Changelog

  • Einige Abhängigkeiten entfernt
  • Breaking Change: metric und benchmark Pakete entfernt
  • Breaking Change: http/mock Paket entfernt
  • Breaking Change: Ältere Funktionen entfernt
  • Bugfix: Fehler in der Ausgabe von PartialResult gefixt
  • Viele kleine Fixes unter der Haube

https://github.com/NETWAYS/go-check/releases/tag/v0.5.0

check-elasticsearch Release v0.3.0

Changelog

  • Hinzugefügt: Neuer Subcheck für Ingest Pipelines
  • Refactor um teilweise kompatibel mit OpenSearch zu sein
  • Viele Optimierungen unter der Haube

https://github.com/NETWAYS/check_elasticsearch/releases/tag/v0.3.0

check-logstash Release v0.9.0

Changelog

  • Hinzugefügt: Neuer Subcheck für Logstash 8 Pipeline Metriken
  • Hinzugefügt: Neuer Subcheck für Logstash Pipeline Reload Fehler

https://github.com/NETWAYS/check_logstash/releases/tag/v0.9.0

support-collector Release v0.9.0

Changelog

  • Hinzugefügt: Viele neue Kollektoren (Elastic Stack, Prometheus, Graylog, MongoDB, Foreman, diverse Webserver)
  • Hinzugefügt: Neue CLI Option um sensitive Daten zu entfernen
  • Hinzugefügt: Das Tool sammelt jetzt auch teilweise Logdateien ein
  • Viele Abhängigkeiten unter der Haube aktualisiert

https://github.com/NETWAYS/support-collector/releases/tag/v0.9.0

icinga-installer Release v1.2.5

Changelog

  • Bugfix: Weitere PHP und Apache Konfiguration wird nun von Puppet verwaltet
  • Bugfix: Puppet Daemon auf Debian/Ubuntu deaktiviert

https://github.com/NETWAYS/icinga-installer/releases/tag/v1.2.5

Markus Opolka
Markus Opolka
Consultant

Markus war nach seiner Ausbildung als Fachinformatiker mehrere Jahre als Systemadministrator tätig und hat währenddessen ein Master-Studium Linguistik an der FAU absolviert. Seit 2022 ist er bei NETWAYS als Consultant tätig. Hier kümmert er sich um die Themen Container, Kubernetes, Puppet und Ansible. Privat findet man ihn auf dem Fahrrad, dem Sofa oder auf GitHub.

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen unterschiedliche Rollen im Monitoring, daher besteht oft Bedarf für eine Integration beider Tools. Genau dafür haben wir check_prometheus geschrieben, was wir nun der Öffentlichkeit zur Verfügung stellen.

https://github.com/NETWAYS/check_prometheus

Mit check_prometheus lassen sich der Status deiner Prometheus Server ermitteln, Alarme aus Prometheus auslesen und sogar PromQL aus Icinga auswerten. Das Check Plugin haben wir in Golang geschrieben, das heißt, es werden keine weiteren Abhängigkeiten auf der Icinga Instanz benötigt. Hier einige Beispiele für die Nutzung:

Wir können grundlegend zunächst mal prüfen, ob unser Prometheus Server erreichbar und operativ ist. Dafür nutzen wir den health Unterbefehl:

$ check_prometheus health

[OK] - Prometheus Server is Healthy. | statuscode=200

Natürlich können wir hier Adresse oder TLS Konfiguration als Parameter angeben.

Mit dem alert Unterbefehl, lässt sich außerdem der Status von in Prometheus definierten Alarmen überprüfen. Entweder eines oder mehrerer spezifischen Alarme:

$ check_prometheus alert --name "MyVeryImportantAlert"

[CRITICAL] - 1 Alerts: 1 Firing - 0 Pending - 0 Inactive
\_[CRITICAL] [MyVeryImportantAlert] - Job: [example] is firing - value: 1.00
| firing=1 pending=0 inactive=0

Oder auch einfach alle bereits in Prometheus definierten Alarme und deren Status:

$ check_prometheus alert

[CRITICAL] - 6 Alerts: 3 Firing - 0 Pending - 3 Inactive
\_[OK] [PrometheusTargetMissing] is inactive
\_[CRITICAL] [PrometheusAlertmanagerJobMissing] - Job: [alertmanager] is firing - value: 1.00
\_[OK] [HostOutOfMemory] - Job: [alertmanager]
\_[OK] [HostHighCpuLoad] - Job: [alertmanager]
\_[CRITICAL] [HighResultLatency] - Job: [prometheus] on Instance: [node01] is firing - value: 11.00
| total=6 firing=3 pending=0 inactive=3

Wenn wir keine Alarme in Prometheus definieren wollen, können wir mit dem query Unterbefehl auch direkt PromQL auswerten lassen und gegen Schwellwerte prüfen:

$ check_prometheus query -q my_very_important_metric{job="prometheus"}[10s]' -c5 -w 10

[WARNING] - 1 Metrics: 1 Critical - 0 Warning - 0 Ok
\_[WARNING] my_very_important_metric{instance="node01", job="prometheus"} - value: 15
| my_very_important_metric_node01_prometheus=15

Persönlich empfehle ich jedoch, Alarme in Prometheus zu definieren da wir hier weitere Möglichkeiten haben, den jeweiligen Alarm zu definieren (beispielsweise das for Schlagwort in der Alarm Definition).

Jetzt da wir unsere Prometheus Instanzen mit Icinga integriert haben, können wir uns ansehen, wie wir den Prometheus Alertmanager aus Icinga ansprechen können. Die Integration mit dem Prometheus Alertmanager ist glücklicherweise kein großes Problem. Durch die Prometheus Alertmanager HTTP API, können wir relativ leicht benutzerdefinierte Alarme mittels JSON erzeugen. Alles was wir brauchen ist ein Notification Plugin, das uns die Statusmeldung in Icinga nach JSON transformiert und diese an den Alertmanager schickt.

Da jede Benachrichtigungsstrategie anders aussieht, können wir hier keine universelle Lösung implementieren. Das heißt aber nicht, dass wir nicht Beispiele zur Verfügung stellen können. Im Repository findet ihr ein kleines Python Skript, dass sich ohne Abhängigkeiten auf jeder Icinga Instanz einsetzen lässt:

notify-alertmanager-example.py --hostname mynode01 --service ping --state 2

Hast du einen Bug gefunden, oder brauchst ein neues Feature? Melde dich einfach auf GitHub!

Markus Opolka
Markus Opolka
Consultant

Markus war nach seiner Ausbildung als Fachinformatiker mehrere Jahre als Systemadministrator tätig und hat währenddessen ein Master-Studium Linguistik an der FAU absolviert. Seit 2022 ist er bei NETWAYS als Consultant tätig. Hier kümmert er sich um die Themen Container, Kubernetes, Puppet und Ansible. Privat findet man ihn auf dem Fahrrad, dem Sofa oder auf GitHub.

NETWAYS RAID-Rechner

In einer zunehmend digitalen Welt, in der Hochverfügbarkeit und Datensicherheit von größter Bedeutung sind, wird die Implementierung von RAID-Systemen immer wichtiger. Die für deinen Use Case passende Konfiguration eines RAID-Systems spielt deshalb eine nicht zu vernachlässigende Rolle.

Um die passende Konfiguration zu finden, gibt es zwei populäre Ansätze:

  • Berechnen, wie viel nutzbarer Speicher am Ende tatsächlich zur Verfügung steht
  • Bestimmen, wie viel Speicherplatz benötigt wird und auf diesem Wert die Anzahl der dafür benötigten Festplatten berechnen

Damit du diese Berechnungen nicht selbstständig durchführen musst, habe ich im Rahmen meiner Ausbildung zum Fachinformatiker für Anwendungsentwicklung einen RAID-Rechner entwickelt.

Dieser ergänzt unseren Rechner-Stack, zu dem bereits die beliebten Subnetz– und SLA-Rechner gehören.

Was ist eigentlich RAID?

RAID steht für “Redundant Array of Independent Disks” und ist eine Technologie zur Datenredundanz und Leistungssteigerung in Speichersystemen. Dabei werden mehrere physische Festplatten zu einem logischen Verbund zusammengefasst.

Um die vielfältigen Anforderungen an moderne IT-Infrastrukturen und Datenspeicherung bestmöglich abzubilden, gibt es mehrere RAID-Level mit unterschiedlichen Eigenschaften. In meinem NETWAYS RAID-Rechner werden folgende RAID-Level verwendet:

  • RAID 0: Daten werden auf mehrere Festplatten verteilt, um die Leistung zu verbessern
  • RAID 1: Daten werden auf mehreren Festplatten synchron gehalten, um höhere Datensicherheit zu gewährleisten
  • RAID 5: Daten und Paritätsinformationen werden auf mehrere Festplatten verteilt
  • RAID 6: Ähnlich wie RAID 5, allerdings mit doppelter Parität
  • RAID 10: Kombination aus RAID 0 und 1, die Daten werden sowohl verteilt als auch gespiegelt gespeichert

Funktionalität des RAID-Rechners

Der RAID-Rechner, den ich entwickelt habe, ist eine einfache Anwendung, die es dir ermöglicht, die in der Einleitung genannten Ansätze zu verfolgen.
Du kannst den nutzbaren Speicher anhand folgender Parameter berechnen:

  • RAID-Level
  • Anzahl der Festplatten
  • Kapazität pro Festplatte

Ein zusätzliches Feature meines Rechners ist, dass du dir den Preis pro nutzbarem GB anzeigen lassen kannst. Vorausgesetzt, du hast den Preis deiner Festplatten angegeben (oder eine Vorstellung, wie teuer sie sein sollen).

Alternativ kannst du die Anzahl der benötigten Festplatten berechnen, indem du den gewünschten nutzbaren Speicherplatz, die Kapazität pro Festplatte und den RAID-Level angibst.

Zur Auswahl stehen dir die gängigen RAID-Level 0, 1, 5, 6 und 10. Zu jedem Level gibt es zudem eine kurze Erklärung und eine Empfehlung, in welchen Fällen es Verwendung finden könnte. Zusätzlich kannst du die Speichereinheiten verschiedene Währungen frei auswählen.

Um zwischen den beiden einzelnen Rechnern zu wechseln, habe ich mich entschieden, eine HTML-Checkbox mit CSS so zu stylen, dass sie wie ein umlegbarer Schalter aussieht.

Wenn du nun Lust darauf bekommen hast, den NETWAYS RAID-Rechner selbst auszuprobieren, kannst du das hier machen. Ich wünsche dir viel Spaß beim Testen, Herumspielen und produktiven Einsetzen meiner Anwendung.

Johannes Rauh
Johannes Rauh
Junior Developer

Johannes hat bevor er zu NETWAYS gekommen ist eine Ausbildung zum technischen Assistenten für Informatik abgeschlossen. 2022 startete er bei Icinga seine Ausbildung zum Fachinformatiker für Anwendungsentwicklung, um seinem Interesse für das Programmieren und der Softwareentwicklung weiter nachzugehen und sein Wissen zu vertiefen. Nach der Arbeit geht er regelmäßig ins Fitnessstudio oder verbringt Abende mit einem Cocktail und seiner Freundin vor Netflix.

MVC – Was ist das und wofür wird es benutzt

Im Rahmen der letzten Azubi-Schulung haben wir das Konzept des Model-View-Controller (MVC) behandelt. MVC ist ein bewährtes architektonisches Muster, das robuste, skalierbare und wartbare Anwendungen ermöglicht. In diesem Beitrag möchte ich das gewonnene Wissen mit Euch teilen und zeigen, wie MVC zur Entwicklung erstklassiger Softwarelösungen genutzt werden kann.

 

Das Model…

… bildet die Daten und Logik einer Anwendung ab. Es ist unabhängig von der Benutzeroberfläche und enthält Methoden zur Datenmanipulation und -abfrage. Dadurch können Entwickler sich auf die Implementierung von Funktionen und Algorithmen konzentrieren, ohne sich um Darstellung oder Benutzerinteraktion sorgen zu müssen.

 

Der View…

… ist für die Darstellung der Daten und die Benutzeroberfläche zuständig. Er bleibt passiv und enthält keine Logik, was eine einfache Wartung und Änderung der Benutzeroberfläche ermöglicht. Der View sollte flexibel sein und verschiedene Darstellungen der Daten liefern, um die Benutzerfreundlichkeit zu verbessern.

 

Der Controller…

… handhabt Benutzereingaben und steuert die Interaktion zwischen Model und View. Er validiert Eingaben, führt Aktionen auf dem Model aus und koordiniert die Aktualisierung des Views. Der Controller bleibt schlank und enthält keine Geschäftslogik, um die Verantwortlichkeiten klar zu trennen.

 

Vorteile der Anwendung von MVC

Durch die klare Trennung der Komponenten können Entwickler sich auf spezifische Aufgaben konzentrieren, was die Zusammenarbeit in Teams erleichtert. Zudem ermöglicht die Wiederverwendbarkeit des Models in verschiedenen Anwendungen eine effiziente Entwicklung und Skalierbarkeit.

MVC erleichtert auch die Testbarkeit der Anwendung, da das Model unabhängig von der Benutzeroberfläche ist. Unittests und Integrationstests können für die Geschäftslogik des Models geschrieben werden, was zu umfassender Testabdeckung und besserer Qualitätssicherung führt.

Die saubere Code-Struktur von MVC erleichtert die Wartbarkeit der Anwendung. Änderungen an der Benutzeroberfläche haben keine Auswirkungen auf das Model oder die Geschäftslogik, was die Risiken von Fehlern reduziert und den Entwicklungsprozess beschleunigt.

Das MVC-Konzept ermöglicht die Entwicklung einer intuitiven Benutzeroberfläche, da die Benutzeroberflächen-Logik klar vom Model und der Geschäftslogik getrennt ist. Dadurch kann die Benutzeroberfläche an die Bedürfnisse der Benutzer angepasst und die Benutzerfreundlichkeit verbessert werden.

 

Fazit

Das Model-View-Controller (MVC)-Konzept bietet Entwicklern zahlreiche Vorteile. Die klare Trennung von Model, View und Controller erleichtert die Zusammenarbeit, fördert die Wiederverwendbarkeit von Code und ermöglicht eine skalierbare und wartbare Softwareentwicklung. Durch die Anwendung von MVC kannst Du effiziente und erstklassige Softwarelösungen entwickeln!

Jan Schuppik
Jan Schuppik
Junior Developer

Jan wurde von seiner Selbstfindungsphase durch ein paar Studiengänge und eine Nebentätigkeit in der Gastronomie geführt, wodurch er letztendlich in der IT gelandet ist und unterstützt jetzt seit 2022 das Icinga-Team als Auszubildender. In seiner Freizeit beschäftigt er sich am liebsten mit kreativen Tätigkeiten, von Designen und Zeichnen, über Handwerkliches bis hin zur Musik, wozu er auch gern selbst eine Klampfe oder ein Mikro in die Hand nimmt.

Sommer, Sonne, Software – Rückblick CIVO NAVIGATE 2023

Anfang Februar durfte ich nach Tampa, Florida reisen, um auf der IT-Konferenz Civo Navigate zu sprechen, die in diesem Rahmen zum ersten Mal stattfand. Mit Beiträgen rund um Kubernetes, Edge Computing, Machine Learning, DevOps, GitOps, Observability, Security und Cloud Native Transformation war das Angebot an Themen breit gefächert. Sicherlich vor allem aus diesem Grund (und nicht nur wegen Temperaturen bis zu 30 Grad und toller Location) fanden sich zusätzlich zu 50 angekündigten Speakern, u. a. von ARM, GitLab, oder SUSE auch ca. 300-350 Teilnehmer vom 7.-8. Februar in Tampa ein.

Eingeleitet wurde die Konferenz durch einen Keynote-Block auf der Main Stage, wo nach einem Grußwort von Civo’s CEO Mark Boost ein ca. einstündiger Schwenk aus Steve Wozniak’s Leben folgte für viele Besucher bereits das erste Highlight. Im Anschluss ging es dann los mit den verschiedenen Beiträgen, vorgetragen auf drei separaten Tracks – zwei für klassische Talks und einer für praxisbezogenere Workshops. Für mich hieß es direkt ‘Showtime!’, ich hatte den ersten Slot auf dem Workshop-Track erwischt, wo ich eine einstündige Einführung in Acorn gab.

Kubernetes-Deployments einfacher gestalten!

Acorn ist ein Tool in erster Linie für Entwickler, die ihre Anwendungen in ihre Kubernetes-Cluster deployen möchten, ohne direkt allzu tief in Kubernetes als Framework einsteigen zu wollen. Mein Kollege Markus hatte Acorn vor Kurzem bereits in seinem Blogpost über Application Management in Kubernetes erwähnt, und ich hatte nun die Gelegenheit, einem interessierten Publikum von ca. 20 Teilnehmern die Software näher zu bringen. Ziel des Workshops war es, eine Gästebuch-Anwendung von einem Docker-basierten Deployment mithilfe von Acorn auf Kubernetes umzustellen. Die Folien zu meinem Workshop finden sich unter slides.dbokdy.me, und in Kombination mit den Workshop-Unterlagen auf GitHub könnt ihr den Workshop bei Interesse auch daheim durchgehen. 😉

Auf den erfolgreichen Workshop folgte analog zu Markus’ Blogartikel eine angeregte Diskussion, welche Tools für Application/Deploy Management auf Kubernetes denn nun am geeignetsten seien. Darauf gibt es natürlich keine eindeutige Antwort, geschweige denn eine Patentlösung, aber im Laufe der Gespräche wurden immer wieder Epinio, entwickelt von SUSE, und Namespace von Namespace Labs genannt – zu Epinio gab es am Folgetag sogar einen weiteren Workshop. Persönlich habe ich mir bisher keine der beiden Lösungen angeschaut, werde das aber nun schleunigst nachholen, und wer weiß, evtl. folgt ja demnächst ein weiterer Blogpost. Die Nachfrage nach Möglichkeiten, Kubernetes und seine Bedienung für den alltäglichen Gebrauch zu abstrahieren, ist auf Entwicklerseite allem Anschein nach auf jeden Fall vorhanden.

GitOps, Security und KI

Im Anschluss hatte ich jedenfalls gut lachen – zwei Stunden nach Konferenzbeginn war ich bereits “nur noch Teilnehmer” und konnte nach Lust und Laune verschiedene andere Talks besuchen, mich mit interessierten Teilnehmern unterhalten und die sommerlichen Temperaturen von bis zu 30 Grad genießen. Für mich war interessant zu sehen, in welche Schwerpunkte sich der Großteil der Beiträge würde einordnen lassen, und für mich stachen dabei zwei Dinge heraus – GitOps und Absicherung von Kubernetes-Clustern. Zu diesen Themen gab es einige interessante Talks, angefangen bei Best Practice Sammlungen zu GitOps und Tools, die eine Kombination von GitOps und ClickOps ermöglichen, bis hin zum Einsatz von Service Meshes in Kubernetes zur Absicherung von Netzwerkverkehr in Kubernetes-Clustern.

Auch ein sehr interessanter Beitrag über das Hacken von Kubernetes-Clustern war im Programm enthalten, sodass man sich dem Thema “Sicherheit” auch einmal aus Sicht des Angreifers widmen konnte. Doch auch andere Themen fanden Beachtung – so gab es nicht nur einige Beiträge zu den Themen ML/AI auf Kubernetes und Edge Computing, der Veranstalter Civo stellte im Rahmen seiner Konferenz auch neue Produkte in diesen Bereichen vor, was beispielhaft für die momentanen Trends rund um “Cloud Native” und Kubernetes gesehen werden kann.

See you later, alligator!

Größter Pluspunkt der Konferenz als Ganzes waren für mich definitiv die Workshops, die durchgängig im Ablauf zu finden waren – so konnte man seinen persönlichen Talk-Marathon über 48 Stunden zwischendurch immer mal wieder mit praktischeren Fingerübungen und Case Studies auflockern und nebenbei noch sein bestehendes Wissen zu bestimmten Tools aufbessern oder komplett neu erwerben. Das nächste Mal stattfinden wird Civo Navigate im September 2023 in London, und wer weiß, evtl. werde ich euch auch dann wieder von meinem Beitrag und der Konferenz allgemein berichten dürfen.

Daniel Bodky
Daniel Bodky
Consultant

Daniel kam nach Abschluss seines Studiums im Oktober 2021 zu NETWAYS und berät nun Kunden zu den Themen Icinga2 und Kubernetes. Nebenher schreibt er in seiner Freizeit kleinere Tools für verschiedenste Einsatzgebiete, nimmt öfters mal ein Buch in die Hand oder widmet sich seinem viel zu großen Berg Lego. In der wärmeren Jahreszeit findet man ihn außerdem oft auf dem Fahrrad oder beim Wandern.