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
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.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Icinga