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.