Hallo liebe Leser,
nachdem ich jetzt schon knapp den zweiten Monat bei Netways bin, ein kleines Status Update zu meinem Praktikum.
Von den Schulungsunterlagen ging es direkt weiter zu meiner eigentlichen Praktikumsaufgabe, Icinga2 die Nutzung von UDP ermöglichen. Kurz vorweg, es gibt zwei relevante Transferprotokolle zur Datenübertragung: TCP und UDP. Dem geneigten Leser werden diese sicher bekannnt sein, dennoch eine knappe Erklärung.
Werden zum Beispiel große Datenpakete übertragen, werden diese zunächst in Kleinere zerlegt. Im Fall von TCP werden im Header der Teilpakete, die Sequenznummern für deren Reihenfolge und eine Prüfsumme hinterlegt. Werden Dateien vom Sender zum Empfänger übermittelt, erfolgt pro eingegangenem Paktet eine Eingangsbestätigung des Empfängers. Erst wenn der Sender diese erhält, wird das nächste Paket versand. Sollte ein Paket nicht korrekt ankommen, wird nach einer zuvor festgelegten Wartezeit das Paket erneut gesendet.
UDP hingegen verzichtet auf das Verifizieren des erfolgreichen Datenempfangs. Wird ein Paktet als fehlerhaft befunden, muss es erneut  gesendet werden. Die Vorteile hier liegen ehr darin, dass diese Übertragung performanter ist und wird deshalb vornehmlich bei Audio und Videoübertragung genutzt, da fehlerhafte Pakete hier nicht so stark ins Gewicht fallen.
Doch zurück zu Icinga: dieses nutzt zum Versenden von Logdaten GELF ( Graylog Extended Log Format). Nun gibt es einige Empfänger wie Logstash, die zwar GELF verstehen, jedoch keine Kommunikation eingehen können, da sie unterschiedliche Übertragungsprotokolle beutzten (hier: Icinga2 sendet TCP;  Logstash empfängt nur UDP).

Meine Aufgabe ist es, diese Kommunikation zu ermöglichen.Dafür habe ich mich Anfangs mit dem  Elastic Stack beschäftigt, der eine tolle Art und Weise bereitstellt, Daten zu Sammeln, Auszuwerten und zu Visualisieren.
Zig geschossene VMs später, bastel ich nun endlich selbst am Code von Icinga2. Was mich Anfangs sehr eingeschüchtert hat, ist Icingas “Größe” (locs) und die Anzahl der Dependencies der einzelnen Klassen. Dadurch, dass die Kollegen im Dev selbst genug Tickets zu bearbeiten haben, habe ich mich selbst in den Aufbau des Code eingelesen. Glücklicherweise wird mir jedoch kein Arbeitstempo diktiert, sondern man lässt mir Zeit, mich mit der Materie zu beschäftigen und zu experimentieren.
Ich schätze es wirklich, als Praktikant diese Freiheit zu besitzen 🙂
Danke fürs Lesen!