【问题标题】:Can Dropwizard Metrics be integrated with Scalatra?Dropwizard Metrics 可以与 Scalatra 集成吗?
【发布时间】:2016-08-05 16:32:57
【问题描述】:

我尝试使用我们使用 Scala 构建的一项新服务来设置性能指标工具。我使用 Dropwizard Metrics,因为它很受欢迎。以下代码无法编译

@Timed
get("/greeting", operation(dummy)){
  val name: Option[String] = params.get("name")
  Ok(String.format("Hello %s", name.getOrElse(defaultName)))
} 

错误信息是

[error] ... expected start of definition
[error]   get("/greeting", operation(dummy)){
[error]   ^
[error] one error found

Dropwizard Metrics 能否与 Scalatra 集成?如果是,什么是正确的整合方式?

【问题讨论】:

    标签: scala dropwizard scalatra


    【解决方案1】:

    已经内置了对指标的支持:

    http://www.scalatra.org/2.4/guides/monitoring/metrics.html

    关于您的代码,它不适用于注释,因为您不是在这里定义方法,而是调用一个方法。

    【讨论】:

    • 感谢您的信息。我会查看文件。不过不要关注最后一条评论。
    • 文档在关于库的方面不正确。 "org.scalatra" %% "scalatra-metrics" % "2.4.0-SNAPSHOT" 产生未发现的依赖错误。它应该是 "org.scalatra" %% "scalatra-metrics" % "2.4.1"。
    • 另外,没有 context.mountMetricsAdminServlet("/metrics-admin") context.mountHealthCheckServlet("/health") context.mountMetricsServlet("/metrics") context.mountThreadDumpServlet("/thread-dump ") context.installInstrumentedFilter("/test/*") (在文档中说明)是有效代码。
    【解决方案2】:

    截至版本 "org.scalatra" % "scalatra-metrics_2.11" % “2.5.0”你可以通过添加下一个导入使context.mountMetricsAdminServlet("/metrics-admin")工作:

    import org.scalatra.metrics.MetricsSupportExtensions.metricsSupportExtensions
    

    它将隐式运行:

    metricsSupportExtensions(context).mountMetricsAdminServlet("/metrics-admin")
    

    【讨论】: