Bloonix-Monitoring mit Nginx, Let’s Encrypt und MySQL

Datum

Gesucht wurde ein Monitoring welches ohne Apache auskommt. Bei der Suche bin ich da auf Bloonix gestoßen.
Dies ist ein selbstentwickeltes Monitoring eines managed Hosters.

Die Bloonix WebGUI ist eine reine FastCGI Applikation, daher ist die Wahl des Webservers offen. Er muss einzig als ReverseProxy die Requests an die FastCGI Applikation über IP:Port weiterleiten können. Es wird auch eine vHost Config für Nginx mitgeliefert.

Hier am Beispiel in einem Ubuntu 16.04.

Bloonix Repositories eintragen

Da das Repository nur über HTTPS erreichbar ist, müssen die entsprechenden Pakete installiert werden.
apt install apt-transport-https ca-certificates

Anschließend den Key hinterlegen und das Repository einbinden.

wget -q -O- https://download.bloonix.de/repos/debian/bloonix.gpg | apt-key add -
echo "deb https://download.bloonix.de/repos/ubuntu/ xenial main"     >>/etc/apt/sources.list.d/bloonix.list

Java installieren

Um die Metriken und Events zu speichern wird ein Elasticsearch genutzt, welches Java benötigt.

apt-get install -y python-software-properties software-properties-common
add-apt-repository ppa:webupd8team/java -y
apt-get update
apt-get install -y oracle-java8-installer

Mit java -version kann überprüft werden ob Java auch richtig installiert wurde.

Elasticsearch installieren

Nun kann man den Elasticsearch Repo Key einbinden, das eigentlich Repo hinterlegen und Elasticsearch installieren. Es ist nur die Version 5.x kompatibel, Elasticsearch 6 nicht.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
apt update
apt install elasticsearch

Elasticsearch startet standardmäßig mit 2GB RAM Reservierung, um dies anzupassen muss man die /etc/elasticsearch/jvm.options anpassen. Hier am Beispiel habe ich 512MB eingestellt:

-Xms512m
-Xmx512m

Der Elasticsearch Port ist normalerweiße komplett erreichbar, dies wird hier nicht benötigt und sollte daher nur von Localhost erreichbar sein. Den passenden Eintrag gibt es bereits und muss nur auskommentiert werden. Daher muss nur unter /etc/elasticsearch/elasticsearch.yml die Raute bei #network.host 127.0.0.1 entfernt werden, damit nur noch network.host 127.0.0.1 steht.

Datenbankserver installieren

Es wird eine Datenbank benötigt, ua. für die Agentverwaltung. Hier steht die Wahl frei zwischen MySQL und PostgreSQL. Hier habe ich mich für MySQL entschieden. Anschließend den Command mysql_secure_installation um den MySQL etwas zu härten.

apt-get install mysql-server
mysql_secure_installation

Installation Nginx

apt-get install nginx

Hiernach muss man in der /etc/nginx/nginx.conf den Eintrag server_names_hash_bucket_size 64; in der HTTP Sektion auskommentieren.

Nun kann die Webgui installiert werden mit apt-get install bloonix-webgui.

Es gibt nun eine vorbereitete Nginx Config unter /etc/bloonix/webgui/nginx.conf. Diese muss noch included werden:

vim /etc/nginx/conf.d/001_bloonix.conf
include /etc/bloonix/webgui/nginx.conf;
/etc/init.d/nginx restart

Nach dem Include muss der Nginx neu gestartet werden, damit die Config geladen wird.

In der Bloonix Nginxconfiguration ist nur der Port 443 konfiguriert. Daher kann man noch eine Weiterleitung von Port 80 einrichten.
Dazu kann man den default vHost nutzen: /etc/nginx/sites-enabled/default. Die ursprüngliche Config kann man sichern oder einfach löschen.

vim /etc/nginx/sites-enabled/default
server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name _;
	return 301 https://$host$request_uri;
}

Auch hier ist ein Neustart des Nginx notwendig, damit die Änderung wirksam wird.

Datenbank und Elasticsearch einrichten

Mit /srv/bloonix/webgui/schema/init-database --mysql wird der MySQL eingerichtet. Es wird ein User namens „Bloonix“ angelegt, das automatisch generierte Passwort wird unter /etc/bloonix/database/main.conf hinterlegt.

Um das Template für Elasticsearch anzulegen, muss /srv/bloonix/webgui/schema/init-elasticsearch localhost:9200 ausgeführt werden.

mögliche Probleme:

Programm curl ist nicht verfügbar.
Lösung: apt install curl

Fehler: {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
Ursache: Elasticsearch 6 wird nicht unterstützt. Hier muss wie unter „Elasticsearch installieren“ beschrieben, die Version 5 installiert werden.

Wenn nach /srv/bloonix/webgui/schema/init-elasticsearch localhost:9200 die Meldung {"acknowledged":true} folgt, wurde das Template richtig installiert. Anschließend muss die Webgui neu gestartet werden systemctl restart bloonix-webgui.service.

Dabei kann es zu der Fehlermeldung Active: failed kommen. Bei der Ursache Monitoring bloonix-webgui[6362]: no /usr/sbin/sendmail executable found at /srv/bloonix/webgui/scripts/bloonix-webgui line 8 fehlt ein Mailserver, um zb. die Notifications zu versenden.
Lösung: apt-get install postfix libsasl2-modules bsd-mailx

Lets Encrypt installieren und einrichten

Um Lets Encrypt zu installieren, muss das entsprechende Repo eingebunden werden und der Certbot für Nginx passend installiert werden.

add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install python-certbot-nginx

Anschliend muss mit certbot --nginx die Einrichtung starten.

IMPORTANT NOTES:
 - Unable to install the certificate
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/<FQDN>/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/<FQDN>/privkey.pem

Anschließend empfiehlt sich die automatisch erzeugen self signet Zertifikate zu sichern.

mv /etc/bloonix/webgui/pki/server.cert /etc/bloonix/webgui/pki/server.cert_backup
mv /etc/bloonix/webgui/pki/server.key /etc/bloonix/webgui/pki/server.key_backup

Die Zertifikate können per Symlink nun zugeordnet werden:

ln -s /etc/letsencrypt/live/<FQDN>/fullchain.pem /etc/bloonix/webgui/pki/server.cert
ln -s /etc/letsencrypt/live/<FQDN>/privkey.pem /etc/bloonix/webgui/pki/server.key

Alternativ unter /etc/bloonix/webgui/nginx.conf die folgenden Einträge durch die von Lets Encrypt erzeugen Zertifikate austauschen:

ssl_certificate /etc/bloonix/webgui/pki/server.cert;
 ssl_certificate_key /etc/bloonix/webgui/pki/server.key;

Die Zertifikate laufen nach 90 Tagen aus, daher bietet es sich an, dass die Zertifikate regelmäßig erneuert werden. Hierzu mit crontab -e ein Cronjob anlegen. Mit * 4 * * 1 certbot renew --post-hook "systemctl reload nginx" wird jeden Montag 4 Uhr versucht das Zertifikat neu auszustellen zu lassen, anschließend wird der Nginx neu gestartet.

Bloonix-Server installation

Die Installation kann auch wieder normal über das Repository mit apt-get install bloonix-server installiert werden.

Mit der Installation des Bloonix-Servers wird auch ein Dienst namens Service-Checker installiert. Dieser Dienst ist dafür zuständig, Hosts und Services zu prüfen, dessen Überwachung in einen Timeout gelaufen ist.

Normal sind alle notwendigen Dienste bereits im Autostart, ansonsten muss man den Server und den srvchk Dienst starten:

systemctl start bloonix-server.service
systemctl start bloonix-srvchk.service

Plugins installieren

Für die ganzen Checks sind noch einzelne Plugins notwendig. Diese lassen sich mit apt search bloonix-plugins anzeigen. Beispielsweiße habe ich das Plugin für das Linux installiert:

apt install bloonix-plugins-linux
create /etc/sudoers.d/60_bloonix_check_linux_updates
create /etc/bloonix/agent/conf.d/check-linux-updates.conf
create /etc/sudoers.d/60_bloonix_check_lsi_raid
create /etc/bloonix/agent/conf.d/check-lsi-raid.conf
create /etc/sudoers.d/60_bloonix_check_mdadm
create /etc/bloonix/agent/conf.d/check-mdadm.conf
create /etc/sudoers.d/60_bloonix_check_service
create /etc/bloonix/agent/conf.d/check-service.conf
create /etc/sudoers.d/60_bloonix_check_smart_health
create /etc/bloonix/agent/conf.d/check-smart-health.conf
create /etc/sudoers.d/60_bloonix_check_gluster_status
create /etc/bloonix/agent/conf.d/check-gluster-status.conf

Damit die Plugins geladen werden können, benötigt man ein weiteres Paket, dies kann mit apt-get install bloonix-plugin-config installiert werden.
Folgend werden die Plugins geladen mit bloonix-load-plugins --load-all

Login in die Webgui

Erreichbar ist die Webgui unter https://<IP oder FQDN des Servers>, die initialen Zugangsdaten sind admin/admin. Das Passwort muss nach der ersten Anmeldung geändert werden.

Autor
Kategorien Monitoring, Linux

PRTG Map