springboot+prometheus+grafana程序使⽤实例
1、新建SpringBoot项⽬
2、引⼊pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<!--<version>1.6.2</version>-->
</dependency>
3、更改application.properties
server.port=8088
spring.application.name=spg
#注意此处使⽤,访问的时候必须访问/actuator/prometheus,如不配置则访问/prometheus
4、启动SpringBoot⼯程
5、安装启动Prometheus
5.1、编辑l
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
#SpringBoot应⽤配置
- job_name: 'spg'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['172.24.83.202:8088']
5.2、容器⽅式启动Prometheus
docker run \
-
p 9090:9090 \
-v /Users/zhangxm/l:/etc/l \ --name prometheus-9090 prom/prometheus
6、安装配置Grafana
6.1、安装启动
docker run -d --name=grafana-3000 -p 3000:3000 grafana/grafana
6.2、登录Grafana,增加Prometheus数据源
7、Micrometer 介绍
Micrometer 为 Java 平台上的性能数据收集提供了⼀个通⽤的 API,
它提供了多种度量指标类型(Timers、Guauges、Counters等),
同时⽀持接⼊不同的监控系统,例如 Influxdb、Graphite、Prometheus 等。
我们可以通过 Micrometer 收集 Java 性能数据,配合 Prometheus 监控系统实时获取数据,并最终在 Grafana 上展⽰出来,从⽽很容易实现应⽤的监控。
Micrometer 中有两个最核⼼的概念,分别是计量器(Meter)和计量器注册表(MeterRegistry)。
计量器⽤来收集不同类型的性能指标信息,Micrometer 提供了如下⼏种不同类型的计量器:
计数器(Counter): 表⽰收集的数据是按照某个趋势(增加/减少)⼀直变化的,也是最常⽤的⼀种计量器,例如接⼝请求总数、请求错误总数、队列数量变化等。
计量仪(Gauge): 表⽰搜集的瞬时的数据,可以任意变化的,例如常⽤的 CPU Load、Mem 使⽤量、Network 使⽤量、实时在线⼈数统计等,
计时器(Timer): ⽤来记录事件的持续时间,这个⽤的⽐较少。
分布概要(Distribution summary): ⽤来记录事件的分布情况,表⽰⼀段时间范围内对数据进⾏采样,可以⽤于统计⽹络请求平均延迟、请求延迟占⽐等。
8、⾃定义监控指标并展⽰到 Grafana
上边是 spring-boot-actuator 集成了 Micrometer 来提供的默认监控项,覆盖 JVM 各个层间的监控,配合 Grafana Dashboard 模板基本可以满⾜我们⽇常对 Java 应⽤的监控。
当然,它也⽀持⾃定义监控指标,实现各个⽅⾯的监控,
例如统计访问某⼀个 API 接⼝的请求数,统计实时在线⼈数、统计实时接⼝响应时间等功能,⽽这些都可以通过使⽤上边的四种计量器来实现。
接下来,来演⽰下如何⾃定义监控指标并展⽰到 Grafana 上。
8.1、监控某些api的调⽤次数
我们继续在 spg⼯程上添加 DemoController.java,来实现分别统计访问 index 及 core 接⼝请求次数,代码如下:
@RestController
@RequestMapping("/counter")
public class DemoController {
@RequestMapping("/hello")
public String hello(){
return "hello spg";
}
@Autowired
MeterRegistry registry;
private Counter counter_core;
private Counter counter_index;
@PostConstruct
private void init(){
counter_core = unter("app_requests_method_count", "method", "");
counter_index = unter("app_requests_method_count", "method", "DemoController.index");
}
@RequestMapping(value = "/index")
public Object index(){
try{
counter_index.increment();
} catch (Exception e) {
return e;
}
return unt() + " index of spg.";
}
@RequestMapping(value = "/core")
public Object coreUrl(){
try{
counter_core.increment();
} catch (Exception e) {
return e;
}
return unt() + " core Url Monitor by Prometheus.";
}
}
这⾥是⼀个简单的 RestController 接⼝,使⽤了 Counter 计量器来统计访问 /counter/index 接⼝访问量。因为访问数会持续的增加,所以这⾥使⽤ Counter ⽐较合适。
启动服务,我们来分别访问⼀下这两个接⼝,为了更好的配合下边演⽰,可以多访问⼏次。
sql语句实现的四种功能
接下来,我们可以到 Prometheus UI 界⾯上使⽤ PromSQL 查询⾃定义的监控信息了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论