赞
踩
Prometheus作为可靠的数据采集工具,常用于后台系统的流量、CPU利用率、时延等指标数据采集。
Grafana作为指标展示工具,常用于后台系统的流量、CPU利用率、时延等指标数据展示,并可针对不同的指标配置告警。
本文以SpringBoot后台系统为例,讲解Prometheus采集后台接口相关数据、Grafana配置并展示相关数据。
在SpringBoot中引入actuator组件监控系统信息并对外暴露信息URI,
供调用方查看SpringBoot的相关运行信息,
引入Prometheus组件,生成统计信息,
通过Actuator暴露出Prometheus统计信息的URI,
供Prometheus读取SpringBoot中premetheus组件采集的数据。
配置如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
management:
endpoints:
web:
exposure:
include: '*'
base-path: /api/v1
package com.monkey.tutorial; import io.micrometer.core.instrument.MeterRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; @SpringBootApplication @EnableCaching @EnableFeignClients @ServletComponentScan public class TutorialApplication { private static final Logger logger = LoggerFactory.getLogger(TutorialApplication.class); public static void main(String[] args) { SpringApplication.run(TutorialApplication.class, args); logger.info("Tutorial 成功启动"); } @Bean MeterRegistryCustomizer<MeterRegistry> prometheusConfiguration() { return (registry) -> registry.config().commonTags("application", "tutorial"); } }
Prometheus数据采集,配置数据采集间隔、SpringBoot服务IP:PORT、采集信息的URI,
配置如下:
global: scrape_interval: 10s # 每10秒采集一次数据 evaluation_interval: 10s # 每10秒检测一次告警 scrape_configs: - job_name: current_system static_configs: - targets: ['192.168.211.129:9100'] labels: instance: system - job_name: app_tutorial # 任务名称 metrics_path: '/api/v1/prometheus' # 后台通过actuator暴露的URI static_configs: - targets: ['192.168.211.1:9121'] # 后台IP和PORT labels: instance: springboot # 实例名称
sudo docker run -d -p 9090:9090 -v /home/xindaqi/software/install/prometheus/config.yml:/etc/prometheus/prometheus.yml prom/prometheus
启动后台该服务,生成的数据接口:
http://localhost:9121/api/v1/prometheus
数据统计标识:
| 序号 | 标识 | 描述 |
|---|---|---|
| 1 | http_server_requests_seconds_count | 请求量 |
| 2 | http_server_requests_seconds_sum | 请求总耗时 |
| 3 | http_server_requests_seconds_max | 请求最大耗时 |

Grafana连接Prometheus参考:
合集:Ubuntu20部署Prometheus和Grafana
配置Grafana最终的效果如下图所示。

在Grafana中配置监控指标。
表达式:
rate(http_server_requests_seconds_count{uri="/api/v1/prometheus/test"}[5m])





计算公式:
接
口
耗
时
=
单
位
时
间
内
总
耗
时
单
位
时
间
内
请
求
数
量
接口耗时=\frac{{单位时间内总耗时}}{{单位时间内请求数量}}
接口耗时=单位时间内请求数量单位时间内总耗时
Grafana表达式:
rate(http_server_requests_seconds_sum{uri="/api/v1/prometheus/test"}[1m])/rate(http_server_requests_seconds_count{uri="/api/v1/prometheus/test"}[1m])
其余和QPS配置方式一致,单位选择秒,参考配置如下图:

Metrics browser中选择jvm_gc_pause_seconds_count,其余和QPS配置方式一致。
Grafana表达式:
jvm_gc_pause_seconds_count{action=~"end of major GC|end of minor GC",job="app_tutorial"}
要点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。