pixel
Select Page

Meerkat (Dashboard für Icinga 2)

by | Aug 26, 2021 | Icinga

Was ist Meerkat? Wie kann man Meerkat installieren, und konfigurieren?

Meerkat ist ein Dienstprogramm, geschrieben in go und javascript, und nicht nur zum Erstellen und Teilen von Dashboards für Icinga 2 geeignet, sondern auch leicht zu installieren und bedienen. Meerkat hat ein Web-Interface, in dem man Dashboards mit beliebigem Hintergrund und Elemente festlegt und aktualisiert, wobei das Meerkat-Backend Abfragen an die Icinga-2-Api zur Darstellung des Status schickt. Hier werden wir Meerkat installieren und konfigurieren und zudem auch Dashboards – als Beispiel für die verschiedenen Visualisierungen und darstellbaren Objekte – bauen.

  • Hier wird Meerkat  mittels Docker als Container installiert, wofür die Installation von docker und docker-compose erforderlich ist.
  • Es gibt auch die Möglichkeit, Meerkat ohne Docker zu installieren.
  • Meerkat wird auf Centos7 mit aktiviertem SELinux installiert, weshalb die SELinux-Berechtigungen für Schreiben und Lesen bei den ContainerVolumes zu beachten sind.

 

Installation

Wir laden zuerst die Meerkat-Repository runter und passen die Konfiguration-Datei docker-compose.yml an, wobei hier nur die Mount-Option Z gesetzt wird, damit das SELInux-Label für private Volumes gesetzt werden und die Volumes lesbar und beschreibbar eingehängt werden können.

Zunächst wird der Meerkat-Zugriff auf das Icinga-2-System konfiguriert – wie vorhin erwähnt, erfolgt dieser über API-Anfragen. Dafür legen wir eine API-User auf dem Icinga-2-System an und starten den Icinga2-Service neu. Danach muss die Datei meerkat.toml auf dem Meerkat-System angepasst werden. Im Anschluss können wir den Meerkat-Container starten!

 

Auf dem Host für den Meerkat-Container:
$ git clone https://gitlab.sol1.net/oss/meerkat.git
$ vim ~centos/meerkat/docker-compose.yml
...
    volumes:
      - ./config:/meerkat/config:Z
      - ./dashboards:/meerkat/dashboards:Z
      - ./dashboards-data:/meerkat/dashboards-data:Z
...
 
 
Auf dem Icinga-2-System:
$ vim cd /etc/icinga2/conf.d/api-user.conf
object ApiUser "meerkat" {
  password = "meerkatpassword"
permissions = [ "objects/query/Host""objects/query/Service"
"objects/query/ServiceGroup""objects/query/HostGroup" ]
}
$ systemctl restart icinga2.service
Auf dem Host für den Meerkat-Container:
$ cd ~centos/meerkat/config
$ cp meerkat.toml.example meerkat.toml
$ vim meerkat.toml
 
HTTPAddr = "[::]:8585"
IcingaURL      = "https://icinga.example.com:5665"
IcingaUsername = "meerkat"
IcingaPassword = "meerkatpassword"
IcingaInsecureTLS = true
 
$ cd ~centos/meerkat
$ docker-compose up
Zunächst loggen wir uns in den Container ein, um herauszufinden, welcher User der Besitzer von dem meerkat-Prozess im Container ist. Anhand der User-ID legen wir einen User auf dem Host-System an und berechtigen ihn Zugang zu den Verzeichnissen, um darunter neue Dashboards anlegen zu können.
$ docker exec -it meerkat_app_1 /bin/sh
/meerkat $ ps -ef
PID   USER     TIME  COMMAND
1 9001      0:00 /meerkat/meerkat -config /meerkat/config/meerkat.toml
27 9001      0:00 /bin/sh
33 9001      0:00 ps -ef
$ sudo useradd -u 9001 meerkat 
$ sudo chown meerkat:meerkat dashboards/ dashboards-data/

 

Meerkat Web-Interface

Nachdem der Meerkat-Container installiert und aktiviert ist, rufen wir das Meerkat-Webinterface auf. Hier habe ich ein paar Dashboards zum Testen gebaut.

  • Create New Dashboard: Dashboardsname eingeben.
  • Background Image: Hintergrund hochladen – hier kann man jedes Bild-Format hochladen, welches im Browser angezeigt werden kann. Getestet wurden die Formate PNP,JPEG,WebP und GIF.
  • Global Status Alerts: Hier kann man den status-alert festlegen – Meerkat bietet neben Visual-Aufbau auch die Möglichkeit, einen status-alert-sound für verschiedene Status festzulegen. In diesem Projekt habe ich diese auf Mute eingestellt.
  • Element: Hier werden die ElementEigenschaften festgelegt, wie Visual-Type (also in welcher Form das Element auf dem Hintergrund angezeigt werden soll) und Element-Type (für Host, Service, Groups oder Filter).
  • Linking URL: Man kann das Element zu einer URL linken.
  • Performance Data: Es gibt die Möglichkeit, Abfragen, die einen Performance-Wert haben, anzeigen zu lassen.

 

Icinga SVG (für Hosts)

 

Icinga Card (für Hosts und Services)

Icinga Image, static Image und Text, Icinga Line

Im folgenden Beispiel sieht man die restlichen Element-Typen wie Icinga-Image (Status-Element für Hosts), static-Image (Logo), static-Text (IP-Adressen) und Icinga-Line (SSh-Verbindung Status).

Saeid Hassan-Abadi
Saeid Hassan-Abadi
Junior Consultant

Saeid hat im September 2019 seine Ausbildung zum Fachinformatiker im Bereich Systemintegration gestartet. 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.
More posts on the topicIcinga

Icinga 2 mit InfluxDB 2

Die Überwachung von Infrastruktur und Software ist eine grundlegende Sache in der IT. Beim Monitoring spielt aber nicht nur der Status und die Benachrichtigung der zu überwachenden Objekte eine wesentliche Rolle, sondern auch die Aufbewahrung und die nachträgliche...

Icinga for Windows v1.6.0 – Einfacher. Zentraler. Sicherer.

Die Kollegen von Icinga haben letzte Woche Icinga for Windows in Version v1.6.0 veröffentlicht. Auch wenn diese Version keine neuen Plugins für die Überwachung bietet, hat sich im Bereich des Icinga PowerShell Frameworks einiges getan. Dadurch ist die Lösung nicht nur...

Icinga Installation mit Director in 10 Minuten

Herausforderung angenommen. Helfen wird mir der Icinga-Installer und das Director-Installations-Paket aus unserem Extras-Repository. Das hier folgende Beispiel werde ich auf einem RHEL8 durchführen, ist aber auch für Debian und Ubuntu zu adaptieren, da der Installer...

Icinga Plugins in Golang

Golang ist an sich noch eine relativ junge Programmiersprache, ist jedoch bei vielen Entwicklern und Firmen gut angekommen und ist die Basis von vielen modernen Software Tools, von Docker bis Kubernetes. Für die Entwicklung von Icinga Plugins bringt die Sprache einige...