Zum Inhalt

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:

sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

Der Status des Dienstes kann ebenfalls mit systemctl überprüft werden:

sudo systemctl status prometheus

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