重拾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/