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

 

posted @   wujf  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示