我是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
我点击了路由直接用户/列表和/ pom-metric路由,其返回的值“ result”为空 我是普罗米修斯的初学者,请在我犯错的地方提供帮助
答案 0 :(得分:2)
类型可以帮助您。查看result
的类型。是Unit
(又叫作空)!
很显然,TextFormat.write004
的返回类型也是Unit
,这就是为什么Scala编译器推断result
变量的类型也必须是Unit
的原因。 / p>
这意味着TextFormat.write004
不是纯函数,即。它具有副作用,并且不返回 any 值。如果您打印类型为Unit
的变量,则会得到()
。
此外,您构造一个StringWriter
,将其移交给TextFormat,但从不查看其内容。
TextFormat.write004(
responseWriter, CollectorRegistry.defaultRegistry.metricFamilySamples())
responseWriter.close()
val result = responseWriter.getBuffer.toString
Ok("result" + result)