pixel
Seite wählen

NETWAYS Blog

So repliziert man Daten mit InfluxDB

Mit InfluxDB 2.0 hat influxdata einen großen Schritt gewagt und viele Neuerungen eingeführt. Hierzu gehören unter anderem die Integration von Webinterface und Task-Engine und DBMS, aber auch die neue Abfragesprache Flux. Ein paar Funktionen, die in es in InfluxDB 1.x gab, wurden zunächst jedoch noch nicht Umgesetzt. Hierzu gehörte bis jetzt das Thema Replikation.
Von Replikation spricht man, wenn Daten von einem Server automatisiert auf einen oder mehrere weitere Server kopiert werden um beispielsweise die Datensicherheit zu erhöhen oder den Zugriff zu beschleunigen.

Seit influxDB 2.2 ist Replikation als technical preview in der Open Source Version enthalten und kann schnell und einfach über das influx command line interface eingerichtet werden. Bei diesem Verfahren werden die Daten TLS gesichert an die API eines oder mehrerer InfluxDB Server gesendet. Wird die Verbindung zwischen Quell- und Zielserver unterbrochen, werden die Daten zu einem späteren Zeitpunkt übertragen.

Einrichtung

Vorab werden hierfür ein Quell-Bucket und ein Authentifizierungstoken auf Server1, und ein Ziel-Bucket plus Authentifizierungstoken auf Server2 benötigt. Bei der Gelegenheit sollte man sich auch schon einmal die Organisations-IDs und Bucket-IDs notieren

# Server 1
user@server1$ influx org ls
user@server1$ influx bucket create -n example-local-bucket
user@server1$ influx auth create ...
# Server 2
user@server2$ influx org ls
user@server2$ influx bucket create -n example-remote-bucket
user@server2$ influx auth create ...

Nach dieser Vorarbeit muss zunächst Remote-Verbindung zu Server 2 angeben werden. Diese wird dann mit im folgenden Schritt genutzt um die Replikation zu aktivieren. In einer nicht gesicherten Testumgebung können zudem die Schalter -allow-insecure-tls und –skip-verify hilfreich sein.

user@server1$ influx remote create \
--name myremote \
--org-id <org ID> \
--token <token> \
--remote-url <remote URL> \
--remote-api-token <remote token> \
--remote-org-id <remote org ID> \

user@server1$ influx replication create \
--name myreplication
--local-bucket example-local-bucket
--remote-bucket example-remote-bucket
--remote-id 0ooxX0xxXo0x

Das ganze ist auch noch weitergehend konfigurierbar, es kann z.B. die Länge des Replay-Logs oder das maximale Alter von zu replizierenden Daten geändert werden.

Weitergehende Informationen finden sich in der Influxdb-Doku:

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

It’s just an Influx Task – Scrapers

Ein Scraper in Influx ist eine einfache Möglichkeit Performancedaten von einer Prometheus Datenquelle abzurufen. Das Prometheus Datenformat besteht aus verschiedenen Typen von Metriken, die in Plain-Text über http von einem Agenten oder einer Software angeboten werden. Der Scraper ist ein Task, der regelmäßig ausgeführt wird, alle angebotenen Daten abruft und in einen InfluxDB bucket schreibt.

Influx UI

Scraper stehen ab InfluxDB 2.0 zur Verfügung und können einfach über die UI für eine beliebige URL aktiviert werden. Hierbei wird auch immer ein “Default” vorgeschlagen. Dieser zeigt auf die InfluxDB selber, da auch die InfluxDB ihre eigenen Performancedaten in diesem Format anbietet.

Influx CLI

Das Influx command-line interface bietet keine Option an, um einen Scraper zu aktivieren. Aber ein Scraper ist eigentlich auch nur ein Task.
Tasks werden in influxDB in der Sprache Flux geschrieben. Also kann man den Scraper auch einfach selber schreiben.

Hierzu brauchen wir 2 Funktionen:

  • prometheus.scrape
    • Mit prometheus.scrape werden die Daten von einer gegebenen URL abgerufen.
  • to
    • Mit der “to” Funktion werden Daten in einen Bucket geschrieben.

Zusammengefasst sieht das dann folgendermaßen aus:

import "experimental/prometheus"

prometheus.scrape(url: "https://prometheus.endpoint.example/metrics")
|> to(
org: "example-org",
bucket: "example-bucket"
)

 

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Neues von den Influxdays EMEA 2021

Auf den influxdays kündigt Paul Dix, CTO von InfluxData, einen neuen Core names iOx für influxDB an. Dieser Schritt löst spontan Unsicherheit aus. Hier ein paar Fakten um die Gemüter zu beruhigen:

InfluxDB 2.x Open Source wird, so wie es jetzt existiert, parallel mit regelmäßigen Point-Releases weiterentwickelt.
InfluxDB IOx wird SQL, InfluxQL und Flux unterstützen.
InfluxDB IOx wird in einem zukünftigen Release ein optionales Speicher-Backend für InfluxDB werden.
Die Implementierung durch Rust und Apache Arrow soll eine höhere Sicherheit erreichen. Auf Grund verschiedener Optimierungen am Speicherverhalten soll die Datenmenge verringert und gleichzeitig die Abfragegeschwindigkeit erhöht werden.
InfluxDB Enterprise-Kunden werden in der zweiten Hälfte des Jahres 2021 über eine kommerziell unterstützte Version von InfluxDB IOx und InfluxDB Enterprise verfügen.

Das war nicht das einzige Thema auf der online abgehaltenen Konferenz.
In dem ausgewogenen Programm konnte man sich anschauen, wie man mittels Telegraf Daten in Richtung influxDB schreibt. In einem anderen Vortrag ging es um Dashboards, Alerts und Tasks.

Ein Highlight war für mich der Talk von Aengus Rooney, der zwar trotz des Titels “What’s New with Grafana and InfluxDB” erstaunlich wenig Neuerungen gezeigt hat, jedoch mit einem längeren Hands-On die Möglichkeiten von Grafana anhand eines selbst erstellten Handels Terminals für Kraken/Bitcoin demonstriert hat.

Alle Aufzeichnungen der Konferenz werden ab 31. Mai veröffentlicht. Man findet sie, wie auch die Videos vergangener Konferenzen, auf den Seiten der influxdays und auf youtube.

Wer mehr über influx und die Möglichkeiten erfahren möchte kann sich auch bei NETWAYS im Rahmen eines zweitägigen Trainings informieren.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Icinga2 und Influx2: So bringen wir beide zum reden

Influxdata LogoAuch wenn die Überschrift es vermuten lässt. Das hier ist kein Clickbait sondern eine Kurzanleitung zum Thema.

Das Problem: Seitdem die time series database influxdb in der Version 2.0 erschienen es kann man das icinga2 influx feature nicht mehr ohne weiteres nutzen. Ein Grund ist, es gibt keine influx database und keine influx retention policy mehr. Beides ist konzeptuell jetzt in sogenannten buckets zusammengefasst. Damit nicht genug. Man greift nicht mehr mit einem user/password auf influx zu, sondern mit Hilfe eines Tokens

Die Lösung: Es gibt den v1 compatibility mode. So legt man einen bucket mit einer retention policy von 14 Tagen an und nutzt ihn.

$ influx bucket create --name icinga2 --org myCompany --retention 336h
$ influx bucket list
ID Name Retention Organization ID
9be740dd7f1e5dd0 _monitoring 168h0m0s e3010cef6e5b64bf
d6e0a548f3ea1451 _tasks 72h0m0s e3010cef6e5b64bf
4d59849554d88e25 icinga2 336h0m0s e3010cef6e5b64bf
$ influx v1 auth create --username icinga2 --write-bucket 4d59849554d88e25
$ influx v1 dbrp create --bucket-id 4d59849554d88e25 --db icinga2 --rp 14Tage

Das ganze lässt sich jetzt einfach auf Seiten Icinga nutzen:

$ cat /etc/icinga2/features-enabled/influxdb.conf

object InfluxdbWriter “influxdb” {
host = “127.0.0.1”
port = 8086
database = “icinga2”
flush_threshold = 1024
flush_interval = 10s
username = “icinga2”
password = “password”
enable_send_thresholds = true
enable_send_metadata = true
[…]
}

Nach einem icinga restart kann man im influx Frontend sehen, dass Informationen eingehen. Um mehr über influx und grafana zu lernen bietet Netways eine 2-tägige InfluxDB Schulung  an.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

tooltip httrack

Bild der httrack WeibseiteIch stand letzte Woche vor einem kleinen Problem. Ein Freund von mir möchte seine WordPress-Seite aufgeben. Allerdings möchte er auch gerne ein Backup haben um, wie in einem Photoalbum, die schönsten Momente seines Blogs Revue passieren zu lassen.

Mit einem einem normalen “hier, DB-dump” war diesem Freund kein stück weitergeholfen und auch ein “Dann fahr dir das Setup doch in nem Docker hoch” stellte sich als nicht so zielführend heraus.

Also brauche ich ein Original-Weibseiten-Abbild, dass auch ohne DB, webserver und php schön aussieht und in weiten Teilen funktioniert.

Die einfache Lösung war für mich httrack. Ein tool das einfach genau das kann.

Kurzanleitung:

  1. installieren
  2. mkdir myExample; cd myExample
  3. httrack http://example.org

Für mich war noch der schalter –language de hilfreich. Um meine Wunschseite auch in der Wunschsprache herunterzuladen.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.