README.md 5.25 KB
Newer Older
Karim El Aammari's avatar
Karim El Aammari committed
1
# vagrant-prometheus
k.elaammari's avatar
k.elaammari committed
2
3

## Einleitung
Karim El Aammari's avatar
Karim El Aammari committed
4
5

Mithilfe dieses Workflows können Sie mit Vagrant eine vollständige Monitoring-Infrastruktur aus den folgenden Komponenten, je auf einer virtuellen Maschine, idempotent erstellen.
k.elaammari's avatar
k.elaammari committed
6
7
8
9
10
11
12
13
14
15
16
17
18

* Grafana (Visualisierung, Graphen, Dashboards)
* Prometheus (Node-Metriken abgreifen und an DB weiterleiten)
* InfluxDB (Time-Series DB, Langzeitspeicher, Backup/Restore)
* Chronograf (Graphisches Interface zu InfluxDB)
* Node-Set (Beispielhafte zu überwachende Maschinen)

Es ist auf jeder dieser virtuellen Maschinen (VMs) der Prometehus-node-exporter für das Bereitstellen der zu erfassenden Metriken installiert.
Backup-mechanismus implementiert !

![overview](./docu/diagramme/overview.jpg)

## Voraussetzungen
Karim El Aammari's avatar
Karim El Aammari committed
19

k.elaammari's avatar
k.elaammari committed
20
Um diesen Workflow ausführen zu können müssen die folgenden Programme installiert sein:
Karim El Aammari's avatar
Karim El Aammari committed
21

k.elaammari's avatar
k.elaammari committed
22
23
24
25
26
27
* Vagrant (<https://www.vagrantup.com/>)
* VirtualBox(<https://www.virtualbox.org/>) oder ein anderer unterstützter Hypervisor
* Git (<https://git-scm.com/>)

Im Weiteren wird vorausgesetzt, dass Sie sich auf einem Linux basierten Betriebssystem befinden. Der Workflow funktioniert auch auf Windows, hierbei ist aber zu beachten, dass unter Windows standardmäßig Zeilenumbrüche mit CR & LF kodiert werden. Im Gegensatz zum einfachen LF Zeilenumbruch unter Linux. Da die Dateien mit dem File-Provisionierer übertragen werden, muss darauf geachtet werden, dass die Dateien mit einem einfachen LF gespeichert werden. In der Git-Konfiguration sollte demensprechend folgende Funktion abgeschaltet werden.

Karim El Aammari's avatar
Karim El Aammari committed
28
29
```shell
git config --global core.autocrlf false
k.elaammari's avatar
k.elaammari committed
30
```
k.elaammari's avatar
k.elaammari committed
31
32
33
34
35

Diese ist normalerweise unter Windows eingeschaltet und ersetzt beim auschecken ein LF mit einem CRLF.

## Getting started

Karim El Aammari's avatar
Karim El Aammari committed
36
Um direkt zu starten, kopieren Sie mit folgendem Befehl das Projekt auf ihren Rechner und anschließend wechseln Sie in das erstellte Verzeichnis.
k.elaammari's avatar
k.elaammari committed
37
38
39
40
41
42

```shell
#TODO zur Gitlab-Gruppe verschieben
git clone git@git.gsi.de:k.elaammari/monitorsetup.git
```

k.elaammari's avatar
k.elaammari committed
43
Bevor die VMs gestartet werden, müssen die nötigen TLS-Zertifikate erzeugt werden. Hierfür führen Sie folgenden Befehl aus.
k.elaammari's avatar
k.elaammari committed
44
45
46
47
48
49
50
51

```shell
./scripts/openssl_generate.sh
```

 Nachdem die Zertifikate erzeugt wurden, können die VMs gestartet werden.

```shell
Karim El Aammari's avatar
Karim El Aammari committed
52
vagrant up
k.elaammari's avatar
k.elaammari committed
53
54
```

Karim El Aammari's avatar
Karim El Aammari committed
55
Anschließen starten nacheinander Influx, Prometheus, Grafana und Chronograf. Die Nodes, dessen Metriken erfasst werden sollen, müssen explizit gestartet werden, entweder einzeln oder als Regex.
k.elaammari's avatar
k.elaammari committed
56
57

```shell
Karim El Aammari's avatar
Karim El Aammari committed
58
vagrant up {node-1 node-2 ... node-10 | /node-.*/}
k.elaammari's avatar
k.elaammari committed
59
60
61
62
63
64
```

In der hier mitgelieferten Konfiguration ist auf den Influx-, Prometheus-, Grafana- und Chronograf-VMs derselbe node-exporter installiert wie auf den Nodes, sodass der Start der Nodes optional ist.  

## Überwachen der Maschinen

Karim El Aammari's avatar
Karim El Aammari committed
65
Nachdem die Maschinen gestartet und die Provisionierung korrekt ausgeführt wurde, können wir über die von Vagrant weitergeleiteten Ports direkt auf die Dienste zugreifen.
k.elaammari's avatar
k.elaammari committed
66

Karim El Aammari's avatar
Karim El Aammari committed
67
68
69
* <https://127.0.0.1:3000> (Grafana)
* <https://127.0.0.1:8888> (Chronograf)
* <http://127.0.0.1:9090> (Prometheus)
k.elaammari's avatar
k.elaammari committed
70
71
72

Wenn auf ihrem Betriebssystem diese Ports schon in Verwendung sind, können Sie in der Vagrantfile eine andere Zuordnung konfigurieren.

k.elaammari's avatar
k.elaammari committed
73
Da die Dienste Grafana und Chronograf ein signiertes TLS-Zertifikat besitzen, können Sie ihrem Browser das unter ```./openssl/data/certificates/cacert.pem``` gespeicherte Root-Zertifikat als Zertifizierungsstelle eintragen, um Warnungen und mögliche Zweifel beim Aufruf der Seiten zu vermeiden. Und mit folgendem Befehl können Sie die Fingerprints der erzeugen Zertifikate anzeigen lassen, um Sie beim Hinzufügen zu verifizieren.
k.elaammari's avatar
k.elaammari committed
74
75
76
77
78
79

```shell
./scripts/openssl_fingerprint.sh
```

## Backup- und Restore-Workflow
Karim El Aammari's avatar
Karim El Aammari committed
80

k.elaammari's avatar
k.elaammari committed
81
### Backup
Karim El Aammari's avatar
Karim El Aammari committed
82

k.elaammari's avatar
k.elaammari committed
83
84
85
86
87
Die InfluxDB ist durch einen Backup- und Restore-Mechanismus ausgestattet, mit dem wir die gesammelten Daten des Monitoringsystems extern speichern und zurück spielen können. In diesem Workflow wird Standardmäßig um 1 Uhr täglich ein Vollbackup ausgelöst, das separat zu den vorherigen Backups in einem Ordner mit Zeitstempel abgelegt wird. Konfigurieren können Sie den Timer mit der Datei: ```./provision/influx/config/backup.timer```. Wichtig zu beachten ist, dass das Backup in einen von VirtualBox geteilten Ordner zwischen VM ```/vagrant/backup``` und Projektverzeichnis ```./backup``` gespeichert wird! Wenn Ihr Hypervisor diese Funktion nicht unterstützt, müssen Sie die Backups von Hand aus der Influx-VM kopieren. Vagrant bietet hier alternativ Rsync oder SMB an.

Um ein manuelles Backup zu starten, führen Sie folgendes Skript aus.

```shell
Karim El Aammari's avatar
Karim El Aammari committed
88
./scripts/influx_backup.sh %PFAD%
k.elaammari's avatar
k.elaammari committed
89
90
```

Karim El Aammari's avatar
Karim El Aammari committed
91
Mit der %PFAD% Variable geben Sie den Ausgabepfad des Backups an. Dabei beschreibt der Pfad einen Speicherort innerhalb der VM.
k.elaammari's avatar
k.elaammari committed
92
93

### Restore
Karim El Aammari's avatar
Karim El Aammari committed
94

k.elaammari's avatar
k.elaammari committed
95
96
97
98
99
100
Um ein Backup in die InfluxDB wieder zurück zuspielen, benutzen Sie folgendes Skript.

```shell
./scripts/influx_restore.sh <PFAD>
```

Karim El Aammari's avatar
Karim El Aammari committed
101
Die %PFAD% Variable ist hierbei der Ordner indem sich die Backupdateien befinden. Sollte in Ihrer Influx-Instanz schon die Datenbank "prom" existieren, werden Sie gefragt ob Sie diese löschen wollen, um die "prom"-Datenbank aus dem Backup laden zu können. Diese Operation ist notwendig, da hier bei jedem Backup die vollständige Datenbank gesichert wird und dementsprechend eine vollständige Datenbank zurück gespielt wird.
k.elaammari's avatar
k.elaammari committed
102
103

Weitere Informationen und die Dokumentation finden Sie im Ordner ```./docu```.