- [X] Installieren Sie mit Hilfe eines Docker-Compose-Files die Zeitreihendatenbank InfluxDB 2.1. Geben Sie der InfluxDB die IPv6-Adresse 2001:638:408:200:FC??::12 aus Ihrem Adressraum.
Dazu wird die docker-compose.yml im Bereich Service erweitert.
- [X] Installieren Sie mit Hilfe eines Docker-Compose-Files die Zeitreihendatenbank InfluxDB 2.1. Geben Sie der InfluxDB die IPv6-Adresse 2001:638:408:200:FC??::12 aus Ihrem Adressraum.<br>
Dazu wird die docker-compose.yml im Bereich Service erweitert. (Port nicht manuell festlegen, bei mir kam es da zu Problemen, funktioniert dennoch ohne festlegen des Ports wie erwartet)
```shell
influxdb:
image: influxdb:2.1
container_name: influxdb
ports:
- 8086:8086
image: influxdb:latest
# ports:
# - 8186:8186
volumes:
- /home/mchen2s/influx/db:/var/lib/influxdb2
- /home/mchen2s/influx/db:/var/lib/influxdb2:rw
networks:
my_ipv6:
ipv6_address: "2001:638:408:200:fc59::12"
ipv6_address: "2001:638:408:200:fc59:cafe::12"
restart: always
```
Konfigurieren Sie Ihre InfluxDB 2.1 mit einem ersten Start-Bucket mybucket.
Machen Sie sich mit der Oberfläche Ihrer InfluxDB 2.1 vertraut.
- [X] Konfigurieren Sie Ihre InfluxDB 2.1 mit einem ersten Start-Bucket mybucket.<br>
Aufrufen der folgenden Adresse im Broweser und registieren in der influxdb:
- Name: admin
- Passwort: ...
- Organisation: monitoring
- Bucket Name: mybucket
Optional: Nach dem ersten Einlogenn kann die bucket über das linke Menü Settings - bucket gerändert werden.
- [X] Machen Sie sich mit der Oberfläche Ihrer InfluxDB 2.1 vertraut.
## Aufgabe 2 - Einrichten von Telegraf als Datenquelle der InfluxDB
In Praktikumsblatt 3, Aufgabe 1 haben wir auf unserem Server moni21 den Data Exporter Telegraf installiert und so konfiguriert, dass er die CPU-Daten sammelt. Richten Sie Telegraf so ein, dass er die gesammelten CPU-Daten an den Bucket mybucket Ihrer InfluxDB sendet. Geben Sie Ihre Konfigurationsdatei telegraf.conf an.
Mit welchem Protokoll werden die gesammelten Daten versendet? Wie könnte diese Verbindung abgesichert werden?
Fragen Sie mit dem InfluxDB-Data-Explorer die CPU-Zeiten Ihres Servers moni21 im User-Modus ab. Geben Sie den erzeugten Flux-Code der zugehörigen Query an und interpretieren Sie diesen Code.
- [X] In Praktikumsblatt 3, Aufgabe 1 haben wir auf unserem Server moni21 den Data Exporter Telegraf installiert und so konfiguriert, dass er die CPU-Daten sammelt. Richten Sie Telegraf so ein, dass er die gesammelten CPU-Daten an den Bucket mybucket Ihrer InfluxDB sendet. Geben Sie Ihre Konfigurationsdatei telegraf.conf an.
Aktivieren von Telegraf und Prüfung des Status
```shell
sudo systemctl enable--now telegraf
systemctl status telegraf
```
Der Status sollte auf Aktiv stehen.
Öffnen der Configdatei:
```shell
sudo nano /etc/telegraf/telegraf.conf
```
Inhalt einfügen und URL sowie Token anpassen:
```shell
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "Os"
flush_interval = "10s"
flush_jitter = "Os"
precision = ""
hostname = ""
omit_hostname = false
[[outputs.influxdb_v2]]
## The URLs of the InfluxDB cluster nodes.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## HTTP Proxy override, if unset values the standard proxy environment
## variables are consulted to determine which proxy, if any, should be used.
# http_proxy = "http://corporate.proxy:3128"
## HTTP User-Agent
# user_agent = "telegraf"
## Content-Encoding for write request body, can be set to "gzip" to
## compress body or "identity" to apply no encoding.
# content_encoding = "gzip"
## Enable or disable uint support for writing uints influxdb 2.0.
# influx_uint_support = false
## Optional TLS Config for use on HTTP connections.
# tls_ca = "/etc/telegraf/ca.pem"
# tls_cert = "/etc/telegraf/cert.pem"
# tls_key = "/etc/telegraf/key.pem"
## Use TLS but skip chain & host verification
# insecure_skip_verify = false
[[inputs.cpu ]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
```
- [X] Mit welchem Protokoll werden die gesammelten Daten versendet? Wie könnte diese Verbindung abgesichert werden?
HTTP, sicherer wäre HTTPS
- [X] Fragen Sie mit dem InfluxDB-Data-Explorer die CPU-Zeiten Ihres Servers moni21 im User-Modus ab. Geben Sie den erzeugten Flux-Code der zugehörigen Query an und interpretieren Sie diesen Code.
Im oben abgebildet Code sieht man die Verknüpfung zu mybucket, sowie die filter für den Server moni21, User und CPU
**Aus einem nicht nachvollziehbaren grund werden mir in influxdb nur die CPU0 - CPU3 angezeigt.**
Die restlcihen Aufgaben, habe ich dann best möglich gelöst.
## Aufgabe 3 - Verbinden der InfluxDB mit Grafana
Richten Sie auf Grafana den Zugriff auf die "Data Source" InfluxDB ein. Wählen Sie als Query Sprache Flux. Sobald die grüne Schrift 3 Buckets found erscheint, haben Sie es geschafft.
Erstellen Sie ein Grafana-Dashboard Praktikumsblatt7 mit folgenden beiden Panels P1 und P2:
P1: CPU-Usermode für Server moni21 mit InfluxDB+Telegraf+Flux.
- [X] Richten Sie auf Grafana den Zugriff auf die "Data Source" InfluxDB ein. Wählen Sie als Query Sprache Flux. Sobald die grüne Schrift 3 Buckets found erscheint, haben Sie es geschafft.
Dazu muss in Grafana unter Configuration in der Linken Spalte eine neue Datenuelle angelegt werden.
Über den Button Add Data Source, gefolgt von der Anwenugn des Filter "Influx", kann man Influx als Quelle auswählen.
- Querry Language = Flux
- URL = http://[2001:638:408:200:....:12]:8086 <- eigene URL der influxdb einsetzen
- Access = Server (default)
- Unter Auth - Basic auth Aktivieren
- User und Passwort der influxdb eingeben
- Organization = monitoring
- token = admin Token aus influx db
- Default Bucket = mybucket
Save & Test -> Ergebniss sollte "3 buckets found" sein.
- [X] Erstellen Sie ein Grafana-Dashboard Praktikumsblatt7 mit folgenden beiden Panels P1 und P2:<br>
P1: CPU-Usermode für Server moni21 mit InfluxDB+Telegraf+Flux.<br>
P2: CPU-Usermode für Server moni21 mit Prometheus+NodeExporter+PromQL.
Vergleichen Sie die beiden Graphen.
Nun soll Last erzeugt werden. Mit dem commando htop können Sie die aktuelle Auslastung Ihrer CPUs überprüfen. Mit dem Kommando
- [X] Vergleichen Sie die beiden Graphen.<br>
Die Graphen sind fast identisch, die Abweichungen entstehen nur durch die verschiebung der Messzeitpunkte und der zum Zeitpunkt höheren bzw. geringeren Auslastung.
- [X] Nun soll Last erzeugt werden. Mit dem commando htop können Sie die aktuelle Auslastung Ihrer CPUs überprüfen. Mit dem Kommando
while : ; do : ; done
erzeugen Sie eine Unendlichschleife, mit der Sie eine CPU auf Ihrem Host voll auslasten (siehe: superuser). Wenn Sie die Schleifen nochmals starten, werden zwei CPUs voll ausgelastet. Testen Sie mit dieser Methode Ihre Panels 1 und 2. Erstellen Sie Snapshots auf dem vergleichende CPU-Messungen dargestellt sind.
Nach Ihren Tests beenden Sie unbedingt die Lasterzeugung!
...
...
@@ -43,12 +179,24 @@ Beurteilen und bewerten Sie Ihre Ergebnisse?
## Aufgabe 4 - Abfrage des Prometheus-Referenz-Exporters
Richten Sie für Ihre InfluxDB einen Datenscraper ReferenzExporter auf den Prometheus-Referenz-Exporter http://dh-ipv6.docklab.de:8777/metrics ein. Der Datenscraper soll die gescrapten Daten in den Bucket mybucket schreiben.
Erweitern Sie Ihr Grafana-Dashboard Praktikumsblatt7 mit folgenden beiden Panels P3 und P4:
P3 zeigt die CPU-Auslastung der virtuellen CPU5 des Prometheus-Referenz-Exporters.
P3 benutzt zur Abfrage und Auswertung der Werte die InfluxDB mit der Abfragesprache Flux.
P4 zeigt ebenfalls die CPU-Auslastung der virtuellen CPU5 des Prometheus-Referenz-Exporter.
P4 jedoch benutzt jedoch zur Abfrage und Auswertung der Werte das System Prometheus mit der Abfragesprache PromQL.
Vergleichen Sie die beiden Graphen. Was beurteilen Sie das Ergebnis?
Mit welcher Flux-Abfrage haben Sie das Panel P4 erzeugt? Erläutern Sie Ihren Code.
- [X] Richten Sie für Ihre InfluxDB einen Datenscraper ReferenzExporter auf den Prometheus-Referenz-Exporter http://dh-ipv6.docklab.de:8777/metrics ein. Der Datenscraper soll die gescrapten Daten in den Bucket mybucket schreiben.<br>
In influxdb muss dazu unter Data - Scrapers - +Create Scraper ein neuer Scraper angelegt werden.<br>