# Prometheus installieren, Mailcow-Exporter installieren und die "Mailcow" in Grafana visuell darstellen

Also meine Grundlage ist eine VM auf Proxmox mit Docker und Docker-Compose. Wobei Letzteres nicht benötigt wird.  
Ebenfalls empfehle ich immer ein Snapshot / Backup anzulegen! :)  
  
Auf der Docker-VM habe ich erstmal Prometheus installiert:

```
wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz
```

[![capture_001_27022025_021731.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-001-27022025-021731.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-001-27022025-021731.jpg)

Datei entpacken:

```
tar xvfz prometheus-2.53.3.linux-amd64.tar.gz
```

[![capture_002_27022025_021855.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-002-27022025-021855.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-002-27022025-021855.jpg)

Dann ins Prometheus-Verzeichnis gewechselt:

```
cd prometheus-2.53.3.linux-amd64/
```

[![capture_003_27022025_021916.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-003-27022025-021916.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-003-27022025-021916.jpg)

Dort dann die "prometheus.yml" angepasst an die URL inkl. API-Key der Mailcow ( s. 2. Screenshot ):

```
nano prometheus.yml
```

[![capture_004_27022025_022125.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-004-27022025-022125.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-004-27022025-022125.jpg)

[![capture_005_27022025_022209.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-005-27022025-022209.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-005-27022025-022209.jpg)  
  
Den API-Key kann man im Mailcow Config-Menü ganz einfach generieren.  
  
[![capture_004_27022025_022130.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-004-27022025-022130.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-004-27022025-022130.jpg)  
  
Ich habe dann einmal den Container manuell mit der Config-Datei gestartet:

```
docker run     -p 9090:9090     -v /root/prometheus-2.53.3.linux-amd64/prometheus.yml:/etc/prometheus/prometheus.yml     prom/prometheus
```

[![capture_004_27022025_022136.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-004-27022025-022136.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-004-27022025-022136.jpg)

Um den Prometheus-Container immer automatisch zu starten, habe ich per Portainer den Prometheus-Container bei "Restart" auf "Always" gesetzt.  
Alternativ geht das aber auch mit dem Befehl

```
docker run --restart always <image_name>
```

In meinem Fall heißt der Container "prom/prometheus:latest".

[![capture_007_27022025_022708.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-007-27022025-022708.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-007-27022025-022708.jpg)

Am Besten ist es aber, über den Portainer diese Einstellung vorzunehmen, da per CLI ein neuer Container angelegt wird, warum auch immer.

Bezüglich Prometheus sind wir auf der Docker-VM fertig.

Auf der Mailcow habe ich ebenfalls Portatiner laufen. Hier müssen wir nicht so viel machen. Lediglich den Container "thej6s/mailcow-exporter" laden.

```
docker run -p '9099:9099' thej6s/mailcow-exporter
```

Auch hier habe ich per Portainer den "Restart" auf "Always" gestellt, damit dieser immer automatisch geladen wird.

[![capture_008_27022025_023040.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-008-27022025-023040.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-008-27022025-023040.jpg)

Das war's im Grunde schon.  
Sobald auf der Mailcow der "thej6s/mailcow-exporter" läuft, werden die Daten schon zum Prometheus geschoben und wir können unser Dashboard im Grafana "basteln" bzw. eher gesagt "klauen". :)

Im Grafana dann noch die Datenquelle "Prometheus" hinzufügen:

[![capture_009_27022025_023640.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-009-27022025-023640.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-009-27022025-023640.jpg)

Danach können wir die Dashboards in Grafana importieren.  
Ich habe diese beide Dashboards genommen ( sind aber einfach nur importiert, da ist noch nichts angepasst. Daher die wilden Werte ).:  
[https://github.com/hagaram/mailcow-grafana-dashboard](https://github.com/hagaram/mailcow-grafana-dashboard)

[![capture_010_27022025_031204.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-010-27022025-031204.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-010-27022025-031204.jpg)  
[https://github.com/remkolodder/mailcow-dashboard](https://github.com/remkolodder/mailcow-dashboard)

[![capture_010_27022025_031420.jpg](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/scaled-1680-/capture-010-27022025-031420.jpg)](https://bookstack.christian-kiwitt-online.de/uploads/images/gallery/2025-02/capture-010-27022025-031420.jpg)

Fertig. :)