2015-09-18 8 views
8

Ich habe eine Spring Boot-Anwendung läuft auf Cloud Foundry, die Metriken und Gesundheitsinformationen über die/Metriken &/Gesundheit Endpunkte jeweils zur Verfügung stellt. Ich möchte diese Messwerte als kontinuierlichen Stream an einen von influxDB bereitgestellten Dienst zur Visualisierung auf einem Grafana-Dashboard senden. Ich suche nach Ressourcen, die erklären, wie der Datenfluss funktioniert und würde mich über Vorschläge freuen.Spring Boot-Metriken zu influxDB für grafana Visualisierung

Danke.

+0

Müssen Sie aus irgendeinem Grund Daten in InfluxDB importieren (andere, dass es großartig ist)? Ich frage, weil es Ressourcen gibt, die Metrikdaten in Graphite zu bekommen (und sie deshalb in Whisper db zu speichern). Sie könnten Grafana dann einfach auf den Graphite-Server richten und die Daten visualisieren. Das Hinzufügen zu InfluxDB könnte definitiv durchgeführt werden, aber ich schätze, es würde eine Menge manueller Codierung erfordern (mir ist keine vorgefertigte Lösung bekannt) – geoand

+0

Danke - ja, ich habe nur den influxDB (mit Grafana) in meiner Bindung Landschaft – citizenBane

Antwort

6

Soweit ich weiß gibt es keine fertige Lösung. Was Sie jedoch tun können, ist eine benutzerdefinierte Exporter für InfluxDB zu implementieren.

Die Details dazu in Spring Boot finden Sie here. Im Wesentlichen, was Sie implementieren müssen, ist ein Ausführer, dass die Feder-Boot-Metrik-Daten zu InfluxDB des line protocol

Eine andere mögliche Lösung, um die Spring Boot metrics into Dropwizard metrics konvertiert wäre zu bekommen und dann this externe Bibliothek verwenden, um die Dropwizard Metriken in InfluxDB für die Berichterstattung (oder Verwendung der Zweig master von Dropwizard-Metriken, der bereits ein InfluxDB-Backend ist).

Wenn Sie schließlich auf InfluxDB verzichten und die Daten stattdessen in den Speicher von Graphite (Whisper-Datenbank) speichern möchten, sollten Sie this oder this überprüfen. Sobald die Daten in Graphite sind, kann Grafana sie einfach visualisieren, wie gezeigt here

+0

Vielen Dank @geoand. Ich habe Ihren zweiten Vorschlag ausprobiert und bin mit der externen Bibliothek https://github.com/davidB/metrics-influxdb nicht weitergekommen, da er influxDB 0.8x nicht 0.9x unterstützt. Während ich auf eine Korrektur für diese Bibliothek warte, können Sie bitte die Ressourcen teilen, die Sie für das Melden von Daten in der Graphite API angegeben haben (Ihr erster Vorschlag)? – citizenBane

+0

Gern geschehen! Überprüfen Sie mich Update-Antwort für die zusätzlichen Vorschläge – geoand

+0

Nochmals vielen Dank. Allerdings werden nur counter. * - und gauge. * -Metriken vom/metrics-Endpunkt meiner Spring Boot-Anwendung in grafana angezeigt (über Graphite). Gibt es eine Möglichkeit, den gesamten Satz von Metriken wie jvm-Parameter, CPU-Utility usw. als einen geplanten Job verfügbar zu machen? Ich bin auf einige Links gestoßen, aber jeder scheint seinen eigenen Weg zu haben (und andere Bibliotheken zu benutzen), um dies zu tun. Was wäre der empfohlene Weg nach vorne? – citizenBane

3

Es könnte möglich sein, ein telegraf Plugin zu schreiben, um die Metriken an InfluxDB zu senden. Anderenfalls könnte die influxdb-java-Bibliothek die Ausgabe der Messwerte direkt aus Spring Boot vereinfachen.

1

Es gibt zwei Ausführungen möglich mit influxdb: -

a) Für influxdb Version < = 0.8.8 Sie Metriken-influxdb jar verwenden können Ihre App Zeitreihendaten auf Lauf influxdb Server zu setzen.

b) Für Influxdb-Version> 0.8.8 können Sie influxdb-java jar verwenden, um Ihre App-Zeitreihendaten auf den influxdb-Server zu übertragen.

nun darüber, wie & installieren verwalten influxdb mit grafana können Sie nützliche Links folgen folgende: - http://www.philipotoole.com/influxdb-and-grafana-howto/
http://blog.sflow.com/2014/12/influxdb-and-grafana.html
https://devops.profitbricks.com/tutorials/creating-a-grafana-and-influxdb-docker-container/
https://influxdb.com/docs/v0.6/ui/grafana.html

0

Telegraf Ihre Anforderungen erfüllt. Er zieht Daten von jolokia und speichert sie in InfluxDB.

Alles, was Sie tun müssen, ist für SpringbootApplication Antrieb und jolokia zu ermöglichen, ist es leicht Abhängigkeit zu Ihrem Maven hinzuzufügen:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.jolokia</groupId> 
     <artifactId>jolokia-core</artifactId> 
    </dependency> 

Danach Sie telegraf müssen konfigurieren Sie Ihren Web-Server und influxDB zu verbinden, ist hier ein Beispiel config:

[tags] 
dc = "local-1" 

[agent] 
interval = "10s" 

[[inputs.jolokia]] 
context = "/jolokia" 

[[inputs.jolokia.servers]] 
name = "catalog" 
host = "{web server ip address}" 
port = "{web server port}" 

[[inputs.jolokia.metrics]] 
name = "metrics" 
mbean = "org.springframework.boot:name=metricsEndpoint,type=Endpoint" 
attribute = "Data" 

[outputs] 
[outputs.influxdb] 
url = "{http://influxdb:port}" 
database = "telegraf" 
precision = "s" 

Stellen Sie sicher, Netzwerk oberer Konfiguration verfügbar ist, dann werden Sie Daten in Ihnen influxDB erhalten.

konfigurieren grafana, um die Daten in influxDB gespeichert anzuzeigen:

  1. hinzufügen Typ influxDB Datenquelle
  2. Erstellen Sie ein neues Armaturenbrett und Graph-Panel.
  3. Konfigurieren Sie das Diagrammfenster und wählen Sie aus, welches Feld in der Einstellung "Metriken" angezeigt werden soll.

Sie sehen die Daten auf dem Panel.