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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
71
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
# 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.

```$ git config --global core.autocrlf false```

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
```

Bevor die VMs gestartet werden, müssen die nötigen X509-Zertifikate erzeugt werden. Hierfür führen Sie folgenden Befehl aus.

```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.

Da die Dienste Grafana und Chronograf ein signiertes X509-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.

```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```.