将Spring Boot指标暴露给flowxDB以实现grafana可视化

时间:2015-09-18 15:53:10

标签: spring-boot cloudfoundry influxdb grafana

我在Cloud Foundry上运行了一个Spring Boot应用程序,它通过/ metrics& amp; /健康终点分别。我想将这些指标作为连续流发布到flowfDB用户提供的服务,以便在grafana仪表板上进行可视化。我正在寻找解释数据流如何工作的任何资源,并希望得到任何建议。

感谢。

5 个答案:

答案 0 :(得分:7)

据我所知,没有现成的解决方案。 但是,您可以为InfluxDB实现自定义Exporter

可以在here找到有关如何在Spring Boot中执行此操作的详细信息。 实质上,您需要实现的是一个导出器,它将Spring Boot度量数据转换为InfluxDB line protocol

另一种可能的解决方案是获取Spring Boot metrics into Dropwizard metrics,然后使用this外部库将Dropwizard指标报告给InfluxDB(或使用已经成为InfluxDB的dropwizard指标的master分支后端)。

最后,如果您想放弃InfluxDB而是将数据保存到Graphite的存储(Whisper数据库)中,您应该查看thisthis。一旦数据在Graphite中,Grafana就可以轻松地将其显示为here

答案 1 :(得分:3)

有可能编写一个telegraf插件来向InfluxDB发布指标。否则,influxdb-java库可能会简化直接从Spring Boot发出指标。

答案 2 :(得分:1)

使用Influxdb可以实现两种实现: -

a)对于Influxdb版本< = 0.8.8,您可以使用metrics-Influxdb jar将您的应用时间序列数据放在正在运行的Influxdb服务器上。

b)对于Influxdb版本> 0.8.8您可以使用Influxdb-java jar将您的应用时间序列数据放在运行的Influxdb服务器上。

现在关于如何安装&使用grafana管理Influxdb,您可以按照以下有用链接: - 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

答案 3 :(得分:0)

Telegraf符合您的要求。它从jolokia中提取数据并保存到InfluxDB。

您需要做的就是为SpringbootApplication启用执行器和jolokia,很容易为您的maven添加依赖:

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

在此之后,您需要配置telegraf来连接您的Web服务器和InfluxDB,这是一个示例配置:

[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"

确保上层配置的网络可用,然后您将获得潮流数据库中的数据。

配置grafana以显示存储在InfluxDB中的数据:

  1. 添加InfluxDB类型数据源
  2. 创建新的仪表板和图表面板。
  3. 配置图表面板,然后在“指标”设置中选择要显示的字段。
  4. 您将在面板上看到数据。

答案 4 :(得分:0)

InfluxDB(与Prometheus不同)是基于推送的系统。它无法轮询HTTP端点以收集指标。您的应用程序需要连续/定期将数据推入InfuxDB实例。

为将应用程序推送到InfluxB中,其他人建议使用influxdb-java,metrics-influxdb等库。

还有一个(也是更好的IMO)解决方案。

您可以看看Spring团队开发的名为micrometer的新库。

Micrometer是一个指标收集库,它支持大量的TSDB(Influx是其中之一)。它是在Spring 2中首次引入的,此后一直移植到Spring 1.3 +。

千分尺开箱即用发布all of default actuator metricsget started with非常容易。您可以了解所有功能here