springboot配置的prometheus自定义数据源未生效

描述:在使用springboot配置的项目时发现,如果时自己动态添加的数据源(非通过配置文件注入到IOC的模式)明明已经配置各数据项,然而在grafana中却取不到动态添加的数据源。CollectionRegistry使用default也是一样。通过代码排查发现是自动配置的原因。

  1. 项目配置依赖:
  		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
            <version>1.5.2</version>
        </dependency>
  1. 开放端点:yml配置
management:
  metrics:
    export:
      prometheus:
        enabled: true
        step: 1m
        descriptions: true
  web:
    server:
      auto-time-requests: true
  endpoints:
    prometheus:
      id: springmetrics
    web:
      exposure:
        include: "*"
  1. 查找endpoint的endpoint位置:

actuator的endpoint:

    {
      "name": "management.endpoint.prometheus",
      "type": "org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint",
      "sourceType": "org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint"
    },

后面考虑到actuator是通过autoconfig进行配置的,跟踪源码发现这一段代码:
在这里插入图片描述

    @Bean
	@ConditionalOnMissingBean
	public PrometheusMeterRegistry prometheusMeterRegistry(PrometheusConfig prometheusConfig,
			CollectorRegistry collectorRegistry, Clock clock) {
		return new PrometheusMeterRegistry(prometheusConfig, collectorRegistry, clock);
	}

	@Bean
	@ConditionalOnMissingBean
	public CollectorRegistry collectorRegistry() {
		return new CollectorRegistry(true);
	}

也就是说spring管理的collectorRegistry是由spring autoconfig阶段,配置的容器组件。所以和使用default的仓库是不同的。
如果想使用一样的CollectorRegistry,通过IOC注入。
否则,新建一个CollectorRegistry,保持数据干净。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值