• 服务监控(四)之SpringBoot整合Prometheus


    1、新建一个springboot项目

    (我这里版本是:2.2.4.RELEASE),pom中加入如下必要依赖:

    
    <!--https://micrometer.io/docs/registry/prometheus-->
    	<dependency>
    			<groupId>io.micrometer</groupId>
    			<artifactId>micrometer-registry-prometheus</artifactId>
    			<version>1.8.5</version>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-actuator</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-security</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    			<version>${lombok.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    2、配置:

    server:
      port: 8080
    spring:
      application:
        name: books-service
       
    management:
      endpoints:
        web:
          exposure:
            include: '*'
          # 监控路径前缀
          base-path: /actuator
      endpoint:
        # 开启允许远程shutdown,通过post请求。
        shutdown:
          enabled: true
        health:
          show-details: always
      metrics:
        tags:
          application: ${spring.application.name}
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    3、实例化MeterRegistryCustomizer

    @SpringBootApplication
    public class DemoApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(DemoApplication.class, args);
    	}
    	
    	/**
    	 * 实例化MeterRegistryCustomizer
    	 */
    	@Bean
    	MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
    		return (registry) -> registry.config().commonTags("application", applicationName);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3、打包,将jar上传到安装Prometheus的服务器上

    mvn clean package
    java -jar demo.jar
    问题:起初使用最新版本1.8.5,启动报错(java.lang.ClassNotFoundException: io.micrometer.core.instrument.config.validate.Validated),最后是将版本指定去掉,发现自动获取的是1.3.2版本。
    在这里插入图片描述
    在这里插入图片描述

    4、Prometheus 接入工程

    修改配置文件prometheus.yml 来接入该springboot工程
    在scrape_configs下,增加一个服务,和prometheus服务并列。

    scrape_configs:
      - job_name: "prometheus"
        static_configs:
          - targets: ["localhost:9090"]
      - job_name: "books-service"
        #注意:我这边是springboot加了配置server.servlet.context-path为/books-service,所以有/books-service前缀哈,如果没有该配置,只有/actuator/prometheus
        metrics_path: "/books-service/actuator/prometheus"
        scheme: "http"
        static_configs:
          - targets: ["localhost:8080"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5、在Prometheus查看结果

    访问 http://yourIP:9090/targets 查看Targets,如下,发现该springBoot已经存在了
    在这里插入图片描述
    查看服务发现,如下图,该springboot服务被自动注册上了。
    在这里插入图片描述

    6、问题:

    如果出现 ““INVALID” is not a valid start token” 错误
    1)检查prometheus.yml是否有格式错误,或者少配置了项目
    2)检查你后台是否拦截了/actuator/**/**的路径,也就是是否加了权限,得将/actuator/**/**加入白名单。

    END

  • 相关阅读:
    编译CentOS6.10系统的OpenSSHV9.4rpm安装包
    springboot+vue框架搭建教程
    [学习记录] SpringBoot 4. 开发技巧
    [Python]图片转字符画——这就是我的表情!!!!!!
    免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
    2022.11.30 WAVE SUMMIT+ 深度学习开发者峰会
    多项式全家桶
    【AI】机器学习——绪论
    高压功率放大器在微孔压电超声雾化研究中的应用
    原来Spring能注入集合和Map的computeIfAbsent是这么好用!
  • 原文地址:https://blog.csdn.net/wdy_2099/article/details/124205552