Seite wählen

NETWAYS Blog

Icinga Web 2 trifft Guacamole

In meinem heutigen Blogpost geht es um Guacamole in Icinga Web 2 und die Frage, wie Guacamole in Icinga Web 2 implementiert werden kann. Aber was sind eigentlich Guacamole und Icinga Web 2?

Introducing Icinga Web 2

Icinga ist eine Open Source Verfügbarkeits-Monitoring Plattform, mit der man Server, Netzwerke und Applikationen überwachen kann. Hier bietet Icinga Web 2 eine Weboberfläche für Icinga, mit der man eine grafische Übersicht der Monitoring-Umgebung hat. Icinga Web 2 bietet anhand von Modulen weitere Funktionalitäten. Mit dem Director-Modul etwa kann man Hosts, Services und weitere Icinga-Objekte sowie die Konfiguration bearbeiten und pflegen.

Hallo Guacamole

Administratoren verwenden häufig mehrere Arten von Anwendungen, um sich mit Servern/Computern Remote zu verbinden. Hier bietet Guacamole einen einfachen Weg, denn Apache Guacamole ist eine Open Source Anwendung, die mehrere Standardprotokolle für den Fernzugriff (wie SSH, VNC und RDP) unterstützt. Und dies über einen Webbrowser, ganz ohne zusätzliche Tools oder Erweiterungen.

Umsetzung

Beim Überwachen von Systemen kommt es immer wieder vor, dass man sich auf den Systemen einloggen muss, um etwas zu fixen oder zu ändern. Klassischer Fall: Ein Dienst läuft plötzlich nicht mehr oder eine Änderung muss in einer Konfigurations-Datei oder den Firewall-Regeln eingesetzt werden. Diese wird je nach System mit verschiedenen Protokollen realisiert, etwa SSH für Linux-Systeme oder RDP für Windows Systeme. Im Folgenden werde ich Dir zeigen, dass man mithilfe von Guacamole einen Remote-Zugriff auf Linux und Windows Systeme in Icinga Web 2 erhalten kann. Und das mit nur einem Klick auf einen Link in Deinem Webbrowser!

Installation

Ich werde nicht auf detaillierte Installationsschritte von Icinga 2 bzw. Icinga Web 2 und Guacamole eingehen, da es hier hauptsächlich um die Implementation von Guacamole in Icinga Web 2 geht.

Für die Installation von Guacamole gibt es zwei Möglichkeiten: die native Installation mit dem Quellcode oder die Installation mit Docker. Hier habe ich die offizielle Dokumentation von Guacamole benutzt. Für die Installation von Icinga 2 und Icinga Web 2 empfehle ich Dir die docker-compose, die unser Icinga Team entwickelt hat.

Connection Konfiguration in Guacamole

Guacamole liest alle Benutzer und Verbindungen aus einer einzigen Datei namens user-mapping.xml. In dieser Datei werden die Benutzer definiert, die auf das Guacamole-Webinterface zugreifen dürfen. Außerdem die Server, zu denen eine Verbindung hergestellt werden soll und die Verbindungsmethode. Unten sieht man, wie diese Datei konfiguriert werden soll:

<user-mapping>
    # Benutzer Administrator
    <authorize username="admin" password="strongpass">

        # RDP-Remotedesktop-Verbindung für Windows-System
        <connection name="Windows-Host">
                <protocol>rdp</protocol>
                <param name="hostname">10.77.14.114</param >      => FQDN oder IP des Zielhost
                <param name="port">3389</param>                   => Port, Standard ist 3389
                <param name="username">user</param>               => Benutzername
                <param name="password">strongpass</param>         => Password für den Benutzer
                <param name="domain">TEST-VM</param>              => Domäne des Benutzer, ggf. Hostname des Ziels
                <param name="disable-audio">true</param>          => Audio-Übertragung deaktivieren
                <param name="server-layout">de-de-qwertz</param>  => mit deutscher Tastatur verbinden
                <param name="security">any</param>                => Wie die Daten verschlüsselt werden sollen
                <param name="ignore-cert">true</param>            => Alle Zertifikate akzeptieren
        </connection>

        # SSH-Verbindung für Linux-System
        <connection name="Linux-Host">
                <protocol>ssh</protocol>
                <param name="hostname">10.77.14.10</param>      
                <param name="port">22</param>                     
                <param name="username">user</param>             
                <param name="password">strongpass</param>        
        </connection>
    </authorize>
</user-mapping>

 

Nachdem die Konfiguration angepasst wurde, muss der Guacamole-Dienst neu gestartet werden. Zunächst loggen wir uns im Browser auf dem Guacamole Webinterface an. Unten sieht man die beiden Systemen, die konfiguriert wurden. Wenn Du auf einen von beiden System klickst, landest Du Remote auf dem System. Die URL, die im Browser angezeigt wird, ist die URL des jeweiligen Systems. Dieses wird später für den Eintrag von beiden Systemen auf Icinga Web 2 für den Remote-Zugriff benötigt.

Konfiguration in Icinga Web 2

Nachdem Icinga Web 2 installiert wurde, loggen wir uns in Icinga Web 2 ein. Für den Eintrag der Guacamole-URLs wird die Shared Navigation Option unter den icingaadmin-Enstellungen genutzt. Hier wird ein Name für die Navigation eingegeben, als Type kann man Service oder Host Actions auswählen (und so konfigurieren, wo die Navigation angezeigt werden soll). Ins Target Feld kann die Darstellungsart des Remote-Fensters gesetzt werden und in der Url wird die Guacamole-URL der Remote-Systeme eingetragen, die wir im Guacamole-Webinterface haben.

Nachdem Du für die URL eine Navigation definiert hast, siehst Du diese unter Overview > Hosts > Actions. Hier kannst Du mit einem Klick auf die Systeme Remote zugreifen.

Windows-Host

Linux-Host

Zusammenfassung

Guacamole bietet Dir eine große Flexibilität im Vergleich zu anderen Tools, da hier keine Client-Installation nötig ist und nur mit URLs gearbeitet wird, die man in verschiedenen Anwendungen einsetzen kann. Ich habe Dir hier eine Basis-Konfiguration für die Verbindung gezeigt. Es gibt zudem die Möglichkeit, diese mit z.B. SSH-Keys und weiteren Methoden zu verschlüsseln und dadurch eine sichere Verbindung für den Remote-Zugriff zu bauen.

Momentan können die URL-Eintragungen in Icinga Web 2 nur über Shared Navigation erfolgen, somit ist eine URL-Zuordnung zum jeweiligen System nicht möglich. Das kann trotzdem für relevante Systeme wie das Icinga-Master-System vorteilhaft sein.

Dieses Thema wird mich weiterhin beschäftigen und vielleicht zeige ich Euch in meinem nächsten Blogartikel dann die Lösung. 😉

Saeid Hassan-Abadi
Saeid Hassan-Abadi
Systems Engineer

Saeid hat im Juli 2022 seine Ausbildung als Fachinformatiker für Systemintegration bei uns abgeschloßen, und arbeitet nun in Operation-Team. Der gebürtige Perser hat in seinem Heimatland Iran Wirtschaftsindustrie-Ingenieurwesen studiert. Er arbeitet leidenschaftlich gerne am Computer und eignet sich gerne neues Wissen an. Seine Hobbys sind Musik hören, Sport treiben und mit seinen Freunden Zeit verbringen.

DevOps Meetup Remote: Seid dabei am 3.12.2020 ab 18 Uhr!

Wir freuen uns, am 3.12.2020 ab 18:00 Uhr der Gastgeber und Hoster des DevOps Meetups für Dezember 2020 zu sein! Wie, Ihr kennt das noch nicht? Na dann lest mal weiter:

Das DevOps Meetup wird schon seit langem von der DevOps Nürnberg Gruppe veranstaltet und hat hier seine eigene Landing Page auf meetup.com. Über das Jahr verteilt finden immer wieder Treffen statt, bei denen es in Talks, Diskussionen und persönlichem Austausch um das Thema DevOps geht. Einmal im Jahr wird auch das DevOps Camp veranstaltet, das dieses Jahr leider Corona bedingt ausfallen musste. Aber auch hier gehen Vorsicht und Verantwortung vor – lieber einmal verzichten als das Nachsehen haben (Ach ja: Verantwortung und Maske tragen gehen Hand in Hand! – Anm. d. Autorin). Aus demselben Grund haben wir nun als Gastgeber zusammen mit den Organisatoren entschieden, das DevOps Meetup Dezember 2020 als Remote Veranstaltung zu machen.

Nach einer kurzen Begrüßung um 18:00 Uhr  können wir uns diesmal auf Vorträge von Feu Mourek von der Icinga GmbH und Marius Gebert von der NETWAYS Managed Services GmbH freuen. Feu ist aktuell sehr stark im Icinga Community Bereich tätig und man wird häufig im Icinga Forum auf den Namen treffen. Marius ist insbesondere im Bereich NETWAYS Web Services anzutreffen und bildet in diesem Themenbereich auch dieses Jahr wieder Azubis aus. Wenn Ihr im Voraus schonmal mehr von beiden lesen wollt, dann schaut Euch doch einfach folgende Blog Posts an:

Nach den Talks habt Ihr natürlich die Möglichkeit, Fragen an unsere Speaker zu stellen und im Anschluss bieten wir Euch auch noch Zeit, Euch untereinander oder mit der Moderation auszutauschen.

Wer nun Lust bekommen hat, auch dabei zu sein, der kann sich direkt anmelden auf der meetup.com Seite der DevOps Nürnberg. Wir würden uns sehr freuen, Euch am 3.12.2020 zu sehen! Stellt also schonmal Getränke, Essen und Knabbereinen bereit.

Wir wünschen Euch bis dorthin eine gute Zeit und bleibt gesund – Euer NETWAYS Team!

NETIO Cloud: Alles auf einen Blick!

Seit kurzem bieten wir im Shop auch Produkte des tschechischen Herstellers NETIO products a.s. an. Diese können von Haus aus an das Netzwerk angeschlossen werden und darüber selbstverständlich auch gesteuert und geschaltet werden. Noch effizienter ist allerdings die NETIO Cloud, in die Ihr alle Eure NETIO-Geräte einfügen könnt und so von überall her Zugriff auf diese habt.

 

YouTube player

 

 

Fakten & Features

  • Mit der NETIO Cloud kann jedes elektrische Gerät, das von einem Leistungsausgang eines NETIO-Geräts versorgt wird, über das Web ein- und ausgeschaltet oder per Power-Cycle neu gestartet werden.
  • Es gibt keine Begrenzung für die Anzahl der in die Cloud eingefügten NETIO-Geräte.
  • Über eine Webseite können Dutzende und Hunderte von elektrischen Leistungsausgängen gesteuert werden.
  • NETIO Cloud ist ein gut abgesicherter und zuverlässiger Service, der vom Hersteller gegen eine Gebühr zur Verfügung gestellt wird.
  • Mit jedem NETIO-Gerät erhält der Kunde eine „Willkommensgutschrift“ für 3 Jahre Betrieb in der NETIO-Cloud kostenlos. Das Willkommensguthaben wird automatisch aufgeladen, wenn Sie Ihr Gerät zum ersten Mal mit Ihrem Konto verbinden.

 

Wie funktioniert die NETIO Cloud?

  • Jeder Benutzer hat ein eigenes Konto bei https://cloud.netio-products.com/
  • Ein Benutzerkonto kann mit einer unbegrenzten Anzahl von Geräten verknüpft werden.
  • Jeder Ausgang kann über das Web ein-/ausgeschaltet oder mit Strom versorgt werden.
  • Jedes Gerät kann jedoch nur mit einem NETIO Cloud-Konto verbunden werden.
  • Alle Ausgänge sind auf einem einzigen Bildschirm sichtbar.
  • Die Webseite mit den Steuerelementen kann auf jedem Gerät, einschließlich eines Mobiltelefons, angezeigt werden.
  • Bei gemessenen Ausgaben zeigt der Dienst den aktuellen Gesamtverbrauchswert (kWh) an.
  • Es gibt ein Ereignisprotokoll, das Abrechnungsdetails für die letzten 24 Stunden anzeigt.
  • Jeder Ausgang und jedes Gerät kann mit einem Namen versehen und einer definierten Gruppe zugeordnet werden.
  • Die Ausgänge können nach Gruppen sortiert werden (Gebäude, Standort, Kundentyp, …).

 

Euch gefällt das Konzept der NETIO Cloud? Dann schaut bei uns mal vorbei – denn hier gibt es die dazugehörigen Geräte! Unter anderem bieten wir Geräte der Serien NETIO PowerPDU und NETIO PowerCable sowie die NETIO PowerBOX an.

Bei Fragen rund um die Hardware aus unserem Shop helfen wir gerne persönlich weiter – wir sind erreichbar per Mail oder telefonisch unter der 0911 92885-44. Wer uns gerne bei der Arbeit ein bisschen über die Schulter schauen oder den Shop und die angebotenen Produkte verfolgen möchte, kann uns auch auf Twitter folgen – über @NetwaysShop twittert das NETWAYS Shop Team!

Einbinden von NWS Icinga 2 Satelliten

Über unsere SaaS Plattform NWS bieten wir seit Beginn die Möglichkeit, Icinga 2 Satelliten Systeme zu betreiben und diese in die eigene Icinga 2 Monitoring Infrastruktur zu integrieren.
Dadurch wird ermöglicht, dass bspw. Webseiten oder andere externe Dienste (Mail, DNS, FTP, etc.) von außen überwacht werden können und die Ergebnisse in das Hausinterne Monitoring übertragen werden.
Hosted man bspw. einen Webshop wie wir (shop.netways.de), reicht es nicht nur zu überprüfen ob die MariaDB oder Apache Dienste funktionieren und die virtuelle Maschine in unserer Cloud verfügbar ist, sondern es ist auch wichtig die externe Sicht der Kunden zu überwachen. Somit erfährt man gleich ob eine externe Erreichbarkeit sichergestellt ist und Kunden bspw. einkaufen können.
In diesem Blogartikel möchte ich beschreiben, wie man den Icinga 2 Satelliten aufsetzt und per Icinga 2 Cluster Protokoll in das eigene Monitoring integriert.
Hat man sich in der NWS Plattform angemeldet, erreicht man über den oberen Reiter „Apps“ alle von uns angebotenen Produkte. Nachdem man einen Icinga 2 Satelliten gestartet hat, klickt man auf diese App und folgender Bildschirm erscheint:
mehr lesen…

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales 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".

Steckdosen via Raspberry Pi und Webinterface steuern

Um sein Zuhause oder Büro kostengünstig mit einem Raspberry Pi zu steuern benötigt es garnicht mal so viel. Steuerbare Funksteckdosen, einen Pi und ein 433 Mhz Sendemodul reichen schon aus.
Diese Woche geht es um die Steuerung der Funksteckdosen per Komandozeile und Webinterface.
pi
Raspberry Pi mit 433 MHz Sender
Hier erstmal die Liste der genutzen Teile:
Funksteckdosen von Brennenstuhl (Amazon)
433 MHz Funk-Sende- und Empfänger-Modul (Amazon)
Jumperwires female (Amazon)
Antenne (Amazon)
Schritt 1:
Zunächst müssen wir das Sendemodul an den Raspberry Pi anschließen. Bei dem vorgeschlagenen 433 MHz Sender ist dies die quadratische Platine mit drei Pins und einem Anschluss oben rechts (ANT beschriftet).

  • Pin 1 (links): ATAD (Daten)
  • Pin 2 (mitte): VCC (Versorgungsspannung)
  • Pin 3 (rechts): GND (Masse)

Anschluss: Ant (Antenne)Die ersten 3 Pins verbinden wir mit dem Raspberry Pi. Pin 1 kommt hierfür (wie in der untenstehenden Grafik zu sehen) an Pin 11 (GPIO-Pin 17) auf dem Raspberry Pi. Danach bekommt das Modul noch Strom. Dafür den Pin 2 auf Pin 4 am Raspberry Pi anschließen (Auf diesem sind 5V angelegt). Pin 3 (GND) kommt an den Groundpin des Pi’s (Pin 6).
Um die Reichweite zu erhöhen muss noch die Antenne an (ANT) angelötet werden . Ansonsten hat das Modul nur eine Reichweite von ungefähr 2 Metern. Mit Antenne beträgt die Reichweite ca. 30 Meter.rpi_433cct
(Quelle: Einplatinencomputer)
Schritt 2:
Zuerst bringen wir unser Pi auf den neusten Stand. Außerdem brauchen wir zum Installieren der benötigten Software Git , welches wir über den Paketmanager installieren.

sudo apt-get install git

Schritt 3:
Zur Ansteuerung des 433 MHz Senders benötigen wir WiringPi. Hiervon holen wir uns mit Hilfe von Git den Quellcode und führen das Build-Script aus, welches uns einige Dateien kompiliert.

git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
cd ..

Schritt 4:
Außerdem brauchen wir Raspberry-remote. Diese Software bietet uns eine Anwendung mit deren Hilfe wir die benötigten Funkbefehle absetzen können.

git clone git://github.com/xkonni/raspberry-remote.git
cd raspberry-remote
make send

Schritt 5:
Nun müssen wir noch unsere Funksteckdose einstellen (um an die Pins ranzukommen muss man die kleine Schraube an der Rückseite der Dose öffnen). Damit niemand anderes auf diese zugreifen kann, werden wir zuerst einen zufälligen Code einstellen. Dazu einfach die Kippschalter (1, 2, 3, 4, 5) hoch oder runter stellen. In meinem Fall habe ich jetzt alle Schalter hoch gestellt, was dem Unitcode 1 1 1 1 1 entspricht. Danach stellen wir noch ein auf welchem Channel die Dose hören soll. Ich habe hier „B“ gewählt. Um den Channel zu setzen muss man einfach nur den gewünschten Buchstaben auf 1 (hochstellen) setzen.
dose
Schritt 6:
Nachdem alles nach unserem Wunsch eingestellt ist können wir nun testen ob wir die Funksteckdose ansteuern können. Dazu geben wir den folgenden Befehl ein:
sudo ~/raspberry-remote/send [Systemcode] [Steckdosen-Nummer] [Zustand]
Beispiel: Unsere Steckdose einschalten

sudo ~/raspberry-remote/send 11111 2 1

Schritt 7:
Um die Steckdose jetzt per Handy oder Laptop zu steuern können wir gleich das von Raspberry-Remote mitgebrachte Webinterface nutzen. Um dieses zu benutzen müssen noch weitere Pakete installiert werden. Ich werde in diesem Fall den Apache 2 Webserver und PHP5 verwenden. Zusätzlich installieren wir noch den Texteditor VIM.

sudo apt-get install apache2 php5 vim

Nun müssen wir noch den Order in das richtige Verzeichnis kopieren. Das machen wir mit:

mv ~/raspberry-remote/webinterface/* /var/www/send443

Damit das PHP-Skript ordnungsgemäßg funktioniert müssen wir noch die Datei config.php bearbeiten.

cd /var/www/send443
vim config.php

In der Datei ändern wir den Inhalt der Variable $target auf die IP-Adresse unseres Pi´s. Gleichzeitig können wir im unteren Bereich der Konfigurationsdatei die Hauscodes und Funksteckdosennummern, sowie deren Bezeichnung im Webinterface festlegen. Anschließend kann die Datei geschlossen und gespeichert werden. Damit wir diesen nutzen können, muss dieser erstmal installiert bzw. kompiliert werden.

cd raspberry-remote
make daemon

Ist der Daemon installiert können wir ihn mit folgendem Befehl starten. Das & im in der folgenden Zeile bewirkt, dass der Prozess im Hintergrund ausgeführt wird.

sudo ./daemon &

Nun können wir das Webinterface mit einem Browser unter http://<IP>/send433 erreichen.
Screenshot from 2015-11-25 09:28:42
Schritt 8:
Damit wir den Daemon nicht bei jedem Systemstart manuell starten müssen, schreiben wir uns kurz ein kleines Skript dafür:

sudo vim /home/pi/raspberry-remote/send443.sh

In die Datei schreiben wir folgenden Inhalt:

#!/bin/bash
cd /home/pi/raspberry-remote/
sudo ./daemon &
exit 0

Abschließend setzen wir noch die entsprechenden Rechte.

sudo chmod 755 /home/pi/raspberry-remote/send443.sh

Damit sich das Skript automatisch startet müssen wir noch was in der /etc/rc.local ändern.

sudo vim /etc/rc.local

Dort fügen wir folgende Zeile ein und speichern die Datei.

/home/pi/raspberry-remote/send443.sh

Geschafft! Jetzt können wir sowohl über die Konsole, als auch bequem über ein Webinterface unsere Funksteckdosen steuern.