Prometheus:播放控制器未显示计数器结果

Prometheus: play controller is not showing counter result

我是 Prometheus 的新手,使用的是 play framework 2.4 我正在使用计数器指标,这是我的代码

object CounterDemo {
  val requestTotal = Counter.build()
 .name("requests_total")
 .help("Total number of requests")
 .register();  
}

object MyController extends Controller {
   def counter() = Action {
   val responseWriter = new StringWriter();
   val result = TextFormat.write004(responseWriter, CollectorRegistry.defaultRegistry.metricFamilySamples()) 
   log.info("result is "+result)
   responseWriter.close()
   Ok("result"+result)  
   }

  def getAllDirectUser = Action {
    CounterDemo.requestTotal.inc()
    //other functionality 
  }
}

这是路由文件

GET    /pom-metric                             controllers.MyController.counter

GET    /direct-user/list                                controllers.MyController.getAllDirectUser

我点击了路由 direct-user/list 和 /pom-metric 路由它没有返回值 'result' 是空的 我是普罗米修斯的初学者,请帮助我犯错的地方

类型可以提供帮助。查看 result 的类型。它是 Unit(又名无效)!

显然,TextFormat.write004 的 return 类型也是 Unit,这就是为什么 Scala 编译器推断 result 变量的类型必须是 Unit 还有。

这意味着 TextFormat.write004 不是纯函数,即。它有副作用,并且没有 return 任何 值。如果打印 Unit 类型的变量,则会得到 ().

此外,你构造了一个StringWriter,将它交给TextFormat,但你从来不看它的内容。

TextFormat.write004(
  responseWriter, CollectorRegistry.defaultRegistry.metricFamilySamples())

responseWriter.close()

val result = responseWriter.getBuffer.toString

Ok("result" + result)