【发布时间】:2020-09-29 05:42:22
【问题描述】:
问题:
我们将 Spring Boot 版本从 2.2.2 升级到 2.3.0,在 2.2.2 的 Prometheus 端点中看到的所有 kafka_consumer_* 指标在 2.3.0 中都不可见。
例如,以下所有内容均缺失:
kafka_consumer_records_consumed_total_records_totalkafka_consumer_records_lag_recordskafka_consumer_fetch_latency_max_secondskafka_consumer_bytes_consumed_total_bytes_total
不确定我们是否遗漏了某种配置或隐藏在文档中的内容...
已经尝试过的:
- 梳理 Spring Boot 2.3.0 发行说明、更新的 micrometer 文档和更新的 spring-kafka 文档,了解为什么会发生这种情况
- 用 Google 搜索感觉就像是天涯海角
- 尝试升级到 Spring Boot 2.2.7 并且 kafka 指标仍然存在,似乎只有升级到 2.3.0 会导致问题
- 删除了我们项目代码中的所有不需要的依赖项/自定义项,并且只连接到本地主机上的 kafka 容器,但指标仍然没有出现
相关代码/详情:
- 我们将 Red Hat AMQ Streams 用于我们的 kafka 代理(kafka 版本 2.1.1)
- 我们在环境中唯一更改的是 Spring Boot 版本(以及自动引入/更新的依赖项)以重新创建此问题
以下是我们更改前的build.gradle.kts:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "2.2.2.RELEASE"
id("io.spring.dependency-management") version "1.0.9.RELEASE"
kotlin("jvm") version "1.3.72"
kotlin("plugin.spring") version "1.3.72"
}
group = "ourGroup"
version = "0.0.1"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
extra["springCloudVersion"] = "Hoxton.RELEASE"
dependencyManagement {
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("springCloudVersion")}")
}
}
dependencies {
implementation("org.springframework.cloud:spring-cloud-starter-stream-kafka")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("io.micrometer:micrometer-registry-prometheus")
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
}
testImplementation("io.projectreactor:reactor-test")
testImplementation("org.springframework.security:spring-security-test")
}
tasks.withType<Test> {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
现在,如果我们只是用新的 Spring Boot 版本更新我们的 build.gradle.kts,如下行所示,我们的 kafka 指标就会消失:
id("org.springframework.boot") version "2.3.0.RELEASE"
以下是我们在更改前后看到的 prometheus 指标的屏幕截图:
提前感谢您的帮助!如果您需要任何其他详细信息,请告诉我!
【问题讨论】:
-
我正在使用
spring-kafka并且刚刚测试了@AlanYeung 的问题。我可以确认在 Spring Boot2.3.0.RELEASE中,kafka_consumer_*指标在/actuator/prometheus中消失了。我仍然可以在2.2.7.RELEASE中看到它们。 -
Kafka 计量器已从抓取 JMX MBean 迁移到使用 Boot 2.0 中的本机指标。请参阅 this commit 和 this one。最后一个使用this。明天我看看能不能弄清楚是什么坏了。
-
真棒@GaryRussell,非常感谢您的指点!我在
2.3.0.RELEASE中有kafka_consumer_*指标。干杯! -
更正
>in Boot 2.0应该在 Boot 2.3 中。 -
我希望看到更多的新贡献者在他们的第一个问题上投入这么多精力。干得好,艾伦!
标签: spring-boot prometheus spring-kafka spring-cloud-stream spring-boot-actuator