README.md 5.24 KB
Newer Older
k.elaammari's avatar
k.elaammari committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# MonitoringSetup

## Einleitung
Mithilfe dieses Workflows können Sie mit Vagrant eine vollständige Monitoring-Infrastruktur aus den folgenden Komponenten, je auf einer virtuellen Maschine, idempotent erstellen. 

* 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
Um diesen Workflow ausführen zu können müssen die folgenden Programme installiert sein:
* 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.

k.elaammari's avatar
k.elaammari committed
25
26
27
```
$ git config --global core.autocrlf false
```
k.elaammari's avatar
k.elaammari committed
28
29
30
31
32
33
34
35
36
37
38
39

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

## Getting started

Um direkt zu starten, kopieren Sie mit folgendem Befehl das Projekt auf ihren Rechner und anschließend wechseln Sie in das erstellte Verzeichnis. 

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

k.elaammari's avatar
k.elaammari committed
40
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

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

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

```shell
vagrant up 
```

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. 

```shell
vagrant up {node-1 node-2 ... node-10 | /node-.*/} 
```

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

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. 

* https://127.0.0.1:3000 (Grafana)
* https://127.0.0.1:8888 (Chronograf)
* http://127.0.0.1:9090 (Prometheus)

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
71
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

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

## Backup- und Restore-Workflow
### Backup
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
./scripts/influx_backup.sh <PFAD>
```

Mit der <PFAD> Variable geben Sie den Ausgabepfad des Backups an. Dabei beschreibt der Pfad einen Speicherort innerhalb der VM.

### Restore
Um ein Backup in die InfluxDB wieder zurück zuspielen, benutzen Sie folgendes Skript.

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

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.

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