Seite wählen

NETWAYS Blog

NETWAYS GitHub Update November 2023

This entry is part 10 of 13 in the series NETWAYS GitHub Update

Willkommen beim NETWAYS GitHub Update, der monatliche Überblick über unsere neuesten Releases.

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

go-check v0.6.1

Changelog

  • Bugfix in der partialResults Berechnung

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

check-sentinelone v0.3.0

Changelog

  • Anpassung für Änderungen in der SentinelOne Cloud API hinzugefügt
  • Build mit neuerer Golang Version
  • Diverse Abhängigkeiten aktualisiert

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

icinga-installer v1.2.7

Changelog

  • Bugfix: Icinga Director Port ist nun konfigurierbar

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

 

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.

Mein PHP-Trainingsprojekt

PHP Schulung

Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen vorgearbeitet. Nach nur einer Woche hatten wir ein gewisses Verständnis der PHP-Syntax und begannen mit einigen relativ einfachen Projekten wie einem Taschenrechner und einem Tic-Tac-Toe-Spiel. Nachdem ich meine Projekte abgeschlossen hatte, beschloss ich, die verbleibende Zeit zu nutzen, um mein eigenes kleines Projekt zu starten. Es heißt „Movie Lib“.

 

Was ist Movie Lib?

Manchmal brauche ich fast eine ganze Stunde, um einen guten Film zu finden, und mein Abendessen ist bereits kalt, bis ich etwas Interessantes herausgesucht habe. Manchmal finde ich einen wirklich interessanten Film, habe aber keine Möglichkeit, ihn irgendwo zu speichern, um ihn mir später anzusehen. „Movie Lib“ ist eine kostenlose Online-Bibliothek, in der man seine Lieblingsfilme einfach finden und verwalten kann. Man hat die Möglichkeit, alle Filme in vier Kategorien zu sortieren: „Trend“, „Beliebtes Fernsehen“, „Bestbewertet“, „Kommend“ oder einen Film mit einem Namen oder einem Genre zu finden. Außerdem können Benutzer auch auf eine Filmkarte klicken, wenn sie etwas Interessantes finden, um weitere Details anzuzeigen und ihn in ihrer persönlichen Bibliothek zu speichern, um sie später anzusehen.

Da ich bereits über einige Erfahrungen mit HTML und CSS verfüge, habe ich für die Gestaltung und Erstellung dieser Website nur etwa eine Woche gebraucht. Der einzige schwierige Teil dieses Projekts bestand darin, Guzzle zu lernen und zu verwenden, um Daten aus der Datenbank abzurufen, da es die Verwendung von „Classes“ erforderte – etwas, das wir in unserem grundlegenden PHP-Kurs noch nicht gelernt haben.

Ich habe das Gefühl, dass ich in den letzten zwei Wochen so viel gelernt habe, und ich kann es kaum erwarten, was während meine Ausbildung als nächstes kommt.

Movies data base : https://developer.themoviedb.org/docs .
Source code : https://github.com/HLongNguyen0/php-movies .

NETWAYS GitHub Update Juli 2023

This entry is part 6 of 13 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.