Skip to content

Commit

Permalink
uptake kineticpulse library for metrics logic in acdc (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
schowsf authored Jan 12, 2023
1 parent 6dcc7c3 commit 87ecac3
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 212 deletions.
4 changes: 2 additions & 2 deletions acdc-ws/app/Filters.scala
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import utils.MetricFilter

import javax.inject.Inject

import play.api.http.DefaultHttpFilters

import com.salesforce.mce.kineticpulse.MetricFilter

class Filters @Inject() (
metricsFilter: MetricFilter
) extends DefaultHttpFilters(metricsFilter)
3 changes: 2 additions & 1 deletion acdc-ws/app/Module.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

import com.google.inject.AbstractModule

import services.{Metric, PrometheusMetric}
import com.salesforce.mce.kineticpulse.{Metric, PrometheusMetric}

import tasks.{AuthSettingReloadTask, DataCountTask, DataInstExpirationTask}
import utils.{Authorization, AuthorizationSettings}

Expand Down
25 changes: 0 additions & 25 deletions acdc-ws/app/controllers/MetricController.scala

This file was deleted.

112 changes: 0 additions & 112 deletions acdc-ws/app/services/Metric.scala

This file was deleted.

13 changes: 6 additions & 7 deletions acdc-ws/app/tasks/DataCountTask.scala
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,13 @@ import com.salesforce.mce.acdc.db.{
DatasetLineageQuery,
DatasetQuery
}
import services.{DatabaseService, Metric}
import utils.DbConfig
import services.DatabaseService
import utils.{AcdcMetric, DbConfig}

class DataCountTask @Inject() (
actorSystem: ActorSystem,
dbService: DatabaseService,
dbConfig: DbConfig,
metric: Metric
dbConfig: DbConfig
)(implicit
ec: ExecutionContext
) extends Logging {
Expand All @@ -39,9 +38,9 @@ class DataCountTask @Inject() (
logger.debug(s"Counted $datasetInstanceCount records from dataset_instance ...")
logger.debug(s"Counted $datasetLineageCount records from dataset_lineage ...")

metric.countDB("dataset", datasetCount.toDouble)
metric.countDB("dataset-instance", datasetInstanceCount.toDouble)
metric.countDB("dataset-lineage", datasetLineageCount.toDouble)
AcdcMetric.countDB("dataset", datasetCount.toDouble)
AcdcMetric.countDB("dataset-instance", datasetInstanceCount.toDouble)
AcdcMetric.countDB("dataset-lineage", datasetLineageCount.toDouble)

refresh()
}
Expand Down
17 changes: 17 additions & 0 deletions acdc-ws/app/utils/AcdcMetric.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package utils

import io.prometheus.client.Gauge

object AcdcMetric {
val dbCountGauge: Gauge = Gauge
.build()
.name("acdc_db_record_count")
.labelNames("table")
.help("acdc DB table records count")
.register

def countDB(table: String, cnt: Double): Unit = {
dbCountGauge.labels(table).set(cnt)
}

}
49 changes: 0 additions & 49 deletions acdc-ws/app/utils/MetricFilter.scala

This file was deleted.

28 changes: 20 additions & 8 deletions acdc-ws/conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,26 @@ acdc.db {
count-task-frequency-minute = ${?COUNT_TASK_FREQUENCY_MINUTE}
}

com.salesforce.mce.kineticpulse.metrics {

enabled = true

# some http request paths are not interesting to capture metrics such as http duration
# Disable metric collection for these request paths
bypass.paths = ["/__status", "/", "/__metrics"]

# routes segments to track in api_duration_seconds_summary, matched values go to the metric label "path"
# example: ["eci", "model/predict", "model/accuracy"]
routes-to-track = ["instance", "instances", "dataset", "datasets", "lineage"]

# delimiter is used within metric label "path" to replace the "/" in the request.path
delimiter = "-"

# label value to be used when a path is not bypass, but did not match routes-to-track,
unmatched-path = ""

}

## Akka
# https://www.playframework.com/documentation/latest/ScalaAkka#Configuration
# https://www.playframework.com/documentation/latest/JavaAkka#Configuration
Expand Down Expand Up @@ -369,11 +389,3 @@ play.assets {
path = "/public"
urlPrefix = "/assets"
}

# some http request paths are not interesting to capture metrics such as http duration
acdc.metrics {
enable = true

# Disable metric collection for these request paths
bypass.paths = ["/__status", "/", "/__metrics"]
}
2 changes: 1 addition & 1 deletion acdc-ws/conf/routes
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
GET /__status controllers.StatusController.status()
GET /__metrics controllers.MetricController.collect()
GET /__metrics com.salesforce.mce.kineticpulse.MetricController.collect()

-> /api/v1 routers.ApiRouter
8 changes: 2 additions & 6 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
val slickVersion = "3.4.1"

val scalaTestArtifact = "org.scalatest" %% "scalatest" % "3.2.+" % Test
val prometheusClient = "io.prometheus" % "simpleclient" % "0.16.0"
val prometheusCommon = "io.prometheus" % "simpleclient_common" % "0.16.0"
val prometheusHotSpot = "io.prometheus" % "simpleclient_hotspot" % "0.16.0"
val kineticpulse = "com.salesforce.mce" %% "kineticpulse-metric" % "0.2.+"

lazy val commonSettings = Seq(
scalacOptions ++= Seq("-deprecation", "-feature", "-Xlint"), // , "-Xfatal-warnings"),
Expand Down Expand Up @@ -48,9 +46,7 @@ lazy val ws = (project in file("acdc-ws")).
buildInfoPackage := "com.salesforce.mce.acdc.ws",
libraryDependencies ++= Seq(
guice,
prometheusClient,
prometheusCommon,
prometheusHotSpot
kineticpulse
),
dependencyOverrides ++= Seq(
// fix https://nvd.nist.gov/vuln/detail/CVE-2022-42003
Expand Down
2 changes: 1 addition & 1 deletion version.sbt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ThisBuild / version := "0.8.12"
ThisBuild / version := "0.8.13"

0 comments on commit 87ecac3

Please sign in to comment.