Einrichtung von Prometheus
Möchte man Server in der NETWAYS Cloud monitoren, ist das bspw. mit Prometheus möglich, bspw. durch eine Integration mit dem Prometheus Managed Service.
Installation
Standalone Binary
Das Prometheus-Projekt veröffentlicht Binaries aller Releases auf seiner Downloadseite.
Diese kann man direkt auf den Server herunterladen und entpacken:
cd /tmp
curl -LO $(curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \
| grep browser_download_url \
| grep linux-amd64 \
| cut -d '"' -f 4)
tar xvf prometheus-*.tar.gz
cd prometheus-*/
Im Anschluss müssen einige Verzeichnisse und Berechtigungen für einen reibungslosen Betrieb angelegt werden:
sudo mv prometheus /usr/local/bin
sudo mv promtool /usr/local/bin
sudo mkdir -p /etc/prometheus
sudo mkdir -p /var/lib/prometheus
sudo mv prometheus.yml /etc/prometheus
sudo useradd --no-create-home --shell /bin/false prometheus
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool
systemd Dienst
Für einen dauerhaften Betrieb empfiehlt es sich, Prometheus als systemd Dienst zu betreiben.
Eine beispielhafte Service-Definition kann wie folgt aussehen:
# /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/var/lib/prometheus \
--web.listen-address=0.0.0.0:9090
[Install]
WantedBy=multi-user.target
Im Anschluss muss man systemd neu laden und Prometheus starten:
Der Status des Dienstes kann ebenfalls mit systemctl überprüft werden:
Installation via Docker
Alternativ zur Standalone Binary kann man Prometheus auch in Docker betreiben.
Docker Installation
Docker muss zuerst installiert werden. Je nach Betriebssystem ist das auf unterschiedliche Arten möglich.
Mehr Informationen findet man in der Docker Dokumentation.
Hierfür bietet es sich an, die von Prometheus benötigten Verzeichnisse
/etc/prometheus/für Konfigurationsdateien/var/lib/prometheus/für die persistente Speicherung der gesammelten Metriken
wie oben beschrieben anzulegen.
Anschließend kann man Prometheus als Container mit folgendem Befehl starten:
docker run -d --name=prometheus \
-p 9090:9090 \
-v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /var/lib/prometheus:/prometheus \
--restart unless-stopped \
prom/prometheus
Alternativ kann man auch Docker Compose für die Einrichtung von Prometheus nutzen.
Konfiguration
Nach erfolgter Konfiguration kann man Prometheus entsprechend seiner Anforderungen konfigurieren.
Eine minimale, beispielhafte Konfiguration, die lediglich Prometheus selbst monitort, kann wie folgt aussehen:
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
Mehr Informationen findet man in der Prometheus Dokumentation.
Anbindung an den Prometheus Managed Service
Betreibt man den in MyNWS verfügbaren Prometheus Managed Service, kann man gesammelte Daten auch dort zentral speichern.
Hierfür richtet man im lokalen Prometheus auf einem Server das sogenannte Remote Write Feature ein:
# /etc/prometheus/prometheus.yaml
remote_write:
- url: <managed-service-remote-write-url>
remote_timeout: 30s
name: prometheus_app
basic_auth:
username: <managed-service-user>
password: <managed-service-password>
Security Groups am Server
Je nach Konfiguration des Servers kann es sein, dass das lokal laufende Prometheus keine Verbindung zum Prometheus Managed Service aufbauen kann.
Zur Behebung kann man eine weitere Security Group mit Freigabe für HTTPS-Egress anlegen.
Zugangsdaten für den Prometheus Managed Service
Die Zugangsdaten sowie Remote Write URL für den Prometheus Managed Service findet man in der entsprechenden Produktübersicht in MyNWS