Login
Newsletter
Werbung

Do, 11. August 2016, 15:00

Simpler CMDB-Import mit Icinga Director

In diesem Artikel wird dem Icinga Director beigebracht, Daten automatisiert aus der Datenbank eines Konfigurationsverwaltungssystems zu übernehmen.

Mein letzter Artikel widmete sich Icinga 2 und der neuen Konfigurationsoberfläche Icinga Director. Ich habe beiläufig erwähnt, dass sich der Director auch an bestehende Configuration Management Database-Systeme (CMDB) anbinden lässt, um den Datenimport zu erleichtern. In diesem Artikel werden wir beispielhaft eine kleine MySQL-Datenbank als »Dummy-CMDB« definieren und automatisiert Host-Informationen einlesen und umsetzen.

Mithilfe des Directors können wir folgende Informationen automatisiert einlesen und umsetzen:

  • Hosts und Hostgruppen
  • Services und Servicegruppen
  • Benutzer und Benutzergruppen
  • Endpunkte und Zonen
  • Kommandos

Datenbank-Vorbereitung

Als Beispiel dient eine simple Tabelle mit Host-Informationen. Essentiell sind hier für Icinga der Hostname sowie eine dazugehörige IP-Adresse - ohne diese Informationen lässt sich ein System nicht überwachen. Aus bestehenden CMDB-Systemen lassen sich diese Informationen in aller Regel ebenso gewinnen - nur ist vermutlich mit bedeutend komplexeren Datenbank-Abfragen zu rechnen (z.B. Abfragen über mehrere Tabellen, etc.). Benötigt wird in jedem Fall ein entsprechender Zugang zur Datenbank - lesender Zugriff reicht hier vollkommen aus. Dieser Punkt ist je nach CMDB-Produkt nicht ganz trivial - macht euch also auf stundenlanges Konsultieren der Datenbank-Dokumentation (sofern vorhanden) und Testen unter Koffein-Einfluss gefasst.

Als Beispiel wurde hier eine Tabelle mit folgenden Einträgen erstellt:

hosts
host_id host_name host_ip host_desc
1 dummyhost 127.0.0.1
2 dummyhost2 127.0.0.2 Test host
3 dummyhost3 127.0.0.3 Test host 2

Die einzelnen Spalten sind selbsterklärend: neben einer fortlaufenden Nummer werden Hostnamen, IP-Adressen und eine optionale Beschreibungen definiert. In MySQL lässt sich eine solche Tabelle samt Datenbank und Benutzer wie folgt definieren:

mysql> CREATE DATABASE cmdb CHARACTER SET 'utf8';
mysql> GRANT ALL ON cmdb.* TO 'cmdb'@'localhost' IDENTIFIED BY '...';
mysql> FLUSH PRIVILEGES;
$ mysql -u cmdb cmdb -p
mysql> CREATE TABLE hosts(
        host_id INTEGER PRIMARY KEY AUTO_INCREMENT,
        host_name TEXT NOT NULL,
        host_ip TEXT NOT NULL,
        host_desc TEXT NULL
);
mysql> INSERT INTO hosts (host_name, host_ip) VALUES ("dummyhost", "127.0.0.1");
mysql> INSERT INTO hosts (host_name, host_ip, host_desc) VALUES ("dummyhost2", "127.0.0.2", "Test host");
mysql> INSERT INTO hosts (host_name, host_ip, host_desc) VALUES ("dummyhost2", "127.0.0.2", "Test host 2");

Die Abfrage der relevanten Informationen wird über das folgende SQL-Statement erreicht:

SELECT host_name, host_ip, host_desc from hosts;

Ziel ist es nun, Icinga Director dazu zu bringen, diese Informationen auszulesen und in valide Host-Objekte zu verwandeln - und das natürlich vollautomatisiert.

Kommentare (Insgesamt: 1 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung