Akka Stream 和 Kamon-Prometheus 不返回任何指标但加载一个空页面
Akka Stream & Kamon-Prometheus not returning any metrics but loads an empty page
我尝试将 kamon-prometheus 与 akka 流项目集成,但在 http://localhost:9095/ it loads an empty page.In the console I could see the message that metrics information is available at http://localhost:9095/。
当我尝试使用 akka quickstart 项目时,它运行良好。
akka 流是否支持 kamon?
Kamon 大量使用 aspecj 来收集一些指标。请确保将 java 代理 aspectj-weaver 添加到 JVM 的引导中。请参阅此 documentation.
中的不同选项
你还需要添加依赖build.sbt
libraryDependencies += "io.kamon" %% "kamon-core" % "1.1.0"
libraryDependencies += "io.kamon" %% "kamon-prometheus" % "1.0.0"
通过更改 application.conf
文件中的此设置键,禁用 kamon-prometheus
中的内置服务器。
kamon.prometheus.start-embedded-http-server = no
将PrometheusReporter
添加到Kamon
import kamon.Kamon
import kamon.prometheus.PrometheusReporter
private val reporter = new PrometheusReporter()
private val registry = Kamon.addReporter(reporter)
并通过定义路由并从 reporter.scrapeData()
获取数据来提供 akka-http
指标的结果。
val metrics = path("metrics") {
encodeResponse {
val prometheusContentType: ContentType.NonBinary = {
ContentType.parse("text/plain; version=0.0.4; charset=utf-8").right.get.asInstanceOf[ContentType.NonBinary]
}
Kamon.gauge("metrics_called").increment()
complete(
HttpResponse(
status = StatusCodes.OK,
entity = HttpEntity(prometheusContentType, reporter.scrapeData())
)
)
}
}
或者使用代码
为任何传入的 http 请求提供指标
akka.http.scaladsl
.Http(actorSystem)
.bindAndHandleSync(
_ => {
Kamon.gauge("metrics_called").increment()
HttpResponse(
status = StatusCodes.OK,
entity = HttpEntity(prometheusContentType, reporter.scrapeData())
)
},
"0.0.0.0",
9015
)
如果您收到空白页,请确保 Kamon
在系统中收集了一些指标。例如,您可以通过将 Kamon.gauge("metrics_called").increment()
添加到 http 路由中来对此进行测试。
我试图 运行 来自 Intellij 的 Main,这就是为什么我没有得到 metrics.With 来自@Ivan Stanislavciuc 的建议的原因,我尝试了 sbt run
并且成功了.
我尝试将 kamon-prometheus 与 akka 流项目集成,但在 http://localhost:9095/ it loads an empty page.In the console I could see the message that metrics information is available at http://localhost:9095/。 当我尝试使用 akka quickstart 项目时,它运行良好。
akka 流是否支持 kamon?
Kamon 大量使用 aspecj 来收集一些指标。请确保将 java 代理 aspectj-weaver 添加到 JVM 的引导中。请参阅此 documentation.
中的不同选项你还需要添加依赖build.sbt
libraryDependencies += "io.kamon" %% "kamon-core" % "1.1.0"
libraryDependencies += "io.kamon" %% "kamon-prometheus" % "1.0.0"
通过更改 application.conf
文件中的此设置键,禁用 kamon-prometheus
中的内置服务器。
kamon.prometheus.start-embedded-http-server = no
将PrometheusReporter
添加到Kamon
import kamon.Kamon
import kamon.prometheus.PrometheusReporter
private val reporter = new PrometheusReporter()
private val registry = Kamon.addReporter(reporter)
并通过定义路由并从 reporter.scrapeData()
获取数据来提供 akka-http
指标的结果。
val metrics = path("metrics") {
encodeResponse {
val prometheusContentType: ContentType.NonBinary = {
ContentType.parse("text/plain; version=0.0.4; charset=utf-8").right.get.asInstanceOf[ContentType.NonBinary]
}
Kamon.gauge("metrics_called").increment()
complete(
HttpResponse(
status = StatusCodes.OK,
entity = HttpEntity(prometheusContentType, reporter.scrapeData())
)
)
}
}
或者使用代码
为任何传入的 http 请求提供指标 akka.http.scaladsl
.Http(actorSystem)
.bindAndHandleSync(
_ => {
Kamon.gauge("metrics_called").increment()
HttpResponse(
status = StatusCodes.OK,
entity = HttpEntity(prometheusContentType, reporter.scrapeData())
)
},
"0.0.0.0",
9015
)
如果您收到空白页,请确保 Kamon
在系统中收集了一些指标。例如,您可以通过将 Kamon.gauge("metrics_called").increment()
添加到 http 路由中来对此进行测试。
我试图 运行 来自 Intellij 的 Main,这就是为什么我没有得到 metrics.With 来自@Ivan Stanislavciuc 的建议的原因,我尝试了 sbt run
并且成功了.