All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.samstarling.prometheusfinagle.MetricLabeller.scala Maven / Gradle / Ivy

package com.samstarling.prometheusfinagle

class MetricLabeller {
  def labelNamesFor(name: Seq[String]): Seq[String] = name match {
    case Seq(_, "requests")           => Seq("serviceName")
    case Seq(_, "success")            => Seq("serviceName")
    case Seq(_, "request_latency_ms") => Seq("serviceName")
    case Seq(_, "pending")            => Seq("serviceName")
    case Seq(_, "http", "time", _)    => Seq("serviceName", "statusCode")
    case Seq(_, "http", "status", _)  => Seq("serviceName", "statusCode")
    case default                      => Seq.empty
  }

  def labelsFor(name: Seq[String]): Seq[String] = name match {
    case Seq(serviceName, "requests")           => Seq(serviceName)
    case Seq(serviceName, "success")            => Seq(serviceName)
    case Seq(serviceName, "request_latency_ms") => Seq(serviceName)
    case Seq(serviceName, "pending")            => Seq(serviceName)
    case Seq(serviceName, "http", "time", statusCode) =>
      Seq(serviceName, statusCode)
    case Seq(serviceName, "http", "status", statusCode) =>
      Seq(serviceName, statusCode)
    case default => Seq.empty
  }

  def sanitizeName(name: Seq[String]): String = {
    name match {
      case Seq(_, "requests")           => "requests"
      case Seq(_, "success")            => "success"
      case Seq(_, "request_latency_ms") => "request_latency_ms"
      case Seq(_, "pending")            => "pending"
      case Seq(_, "http", "time", _)    => "http_time"
      case Seq(_, "http", "status", _)  => "http_status"
      case default                      => name.map(_.replaceAll("[^\\w]", "_")).mkString("__")
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy