重拾prometheus
1、引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
package com.xf.config; import java.time.Duration; import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.micrometer.core.instrument.Meter; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.config.MeterFilter; import io.micrometer.core.instrument.distribution.DistributionStatisticConfig; import lombok.extern.slf4j.Slf4j; @Configuration @Slf4j public class MeterService { @Bean MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() { return registry -> { registry.config().commonTags("application", "epayapi").meterFilter(new MeterFilter() { @Override public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) { if (id.getType() == Meter.Type.TIMER && id.getName().matches("^(http|hystrix){1}.*")) { return DistributionStatisticConfig.builder().percentilesHistogram(true) .percentiles(0.5, 0.90, 0.95, 0.99) .sla(Duration.ofMillis(50).toNanos(), Duration.ofMillis(100).toNanos(), Duration.ofMillis(200).toNanos(), Duration.ofSeconds(1).toNanos(), Duration.ofSeconds(5).toNanos()) .minimumExpectedValue(Duration.ofMillis(1).toNanos()) .maximumExpectedValue(Duration.ofSeconds(5).toNanos()).build().merge(config); } else { return config; } } }); }; } }
P90 P50要加上面的代码
2、暴露端点
management: endpoints: web: exposure: include: prometheus endpoint: health: show-details: always metrics: export: datadog: application-key: ${spring.application.name}
ps:暴露端点不要写*,不要写*,不要写*
3、prometheus.yml配置
scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. metrics_path: /epayapi/actuator/prometheus scrape_interval: 5s static_configs: - targets: ["127.0.0.1:7011"]
4、下载地址整理
prometheus下载: https://prometheus.io/download/
grafana下载:https://grafana.com/get/?tech=target&plcmt=top-nav&cta=A-downloads&tab=self-managed
grafana模板:https://grafana.com/grafana/dashboards/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人