本文将会介绍下Metrics系统监控在SpringBoot下的实战,数据录入influxdb,使用grafana来做监控的可视化。
文章目录
引入依赖
本博客是基与SpringBoot+Metrics+Influxdb+maven的,所以需要引入Metrics、metrics-spring、metrics-influxdb三个maven依赖。
<dependency>
<groupId>com.ryantenney.metrics</groupId>
<artifactId>metrics-spring</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.github.davidb</groupId>
<artifactId>metrics-influxdb</artifactId>
<version>0.9.3</version>
</dependency>
SpringBoot中使用Metrics
加入metrics-spring依赖后,可以直接在Spring、SpringBoot中使用相关注解。@Timed, @Metered, @ExceptionMetered, @Counted等注解。具体含义可以参考上篇关于Metrics基础的介绍。 使用方法示例: @Metered(name = "request.ls", absolute = true)
@RequestMapping(value = "/loss", method = RequestMethod.GET)
public void handle(HttpServletRequest httpRequest, HttpServletResponse httpResponse) {
}
如上示例用来统计/loss的TPS,使用@Metered注解,参数name表示数据存储的key,后续可视化读取会用到。
Metrics写入数据到influxdb:
influxdb是一款支持时序的非关系型数据库,满足metrics的场景使用。1.引入依赖metrics-influxdb
第一步方便大家复制已经一起引入2.配置InfluxdbReporter
配置influxdbReporter,将metrics收集的数据推送到influxdb@Configuration
@EnableMetrics
public class MetricsConfig extends MetricsConfigurerAdapter {
@Override
public void configureReporters(MetricRegistry metricRegistry) {
initInfluxdbReporter(metricRegistry);
}
private void initInfluxdbReporter(MetricRegistry metricRegistry) {
Builder builder = InfluxdbReporter.forRegistry(metricRegistry);
builder.protocol(new HttpInfluxdbProtocol("127.0.0.1", 8086, "test-monitor"));
builder.convertRatesTo(TimeUnit.SECONDS);
builder.convertDurationsTo(TimeUnit.MILLISECONDS);
builder.filter(MetricFilter.ALL);
builder.skipIdleMetrics(false);
builder.tag("host", "host:port");
ScheduledReporter influxdbReporter = builder.build();
influxdbReporter.start(5, TimeUnit.SECONDS);
super.registerReporter(influxdbReporter);
}
}
1、 实例化ScheduledReporter:主要参数包含influxdb数据库的server+port,database(会在可视化读取的时候选择,声明当前节点的tag等参数。
2、将influxdbReporter 向MetricRegistry 注册。
Grafana可视化
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。
1.安装
官网下载:https://grafana.com/grafana/download2.读取influxdb
1、在Grafana中添加influxdb数据源。左上角 >> Data Source >> Add New,填写influxdb的ip+port及database名称。
2、新建Dashboard,用作新的可视化管理页面。
关于Grafana支持的数据源及展示的类型还有很多,感兴趣的可以多做了解。本篇仅分享使用方法。