This is an automated email from the ASF dual-hosted git repository. ningyougang pushed a commit to branch add-container-count-metric in repository https://gitbox.apache.org/repos/asf/openwhisk.git
commit 998414f3c717b6b5e60fb7bb94145c9aee1f799e Author: ning.yougang <[email protected]> AuthorDate: Tue May 10 15:49:49 2022 +0800 Add namespace and action tags for container metric --- .../src/main/scala/org/apache/openwhisk/common/Logging.scala | 12 ++++++++++-- .../core/containerpool/v2/FunctionPullingContainerPool.scala | 10 +++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/common/scala/src/main/scala/org/apache/openwhisk/common/Logging.scala b/common/scala/src/main/scala/org/apache/openwhisk/common/Logging.scala index 53adfe23e..48230ee6a 100644 --- a/common/scala/src/main/scala/org/apache/openwhisk/common/Logging.scala +++ b/common/scala/src/main/scala/org/apache/openwhisk/common/Logging.scala @@ -412,8 +412,16 @@ object LoggingMarkers { LogMarkerToken(invoker, "sharedPackage", counter, None, Map("path" -> path))(MeasurementUnit.none) def INVOKER_CONTAINERPOOL_MEMORY(state: String) = LogMarkerToken(invoker, "containerPoolMemory", counter, Some(state), Map("state" -> state))(MeasurementUnit.none) - def INVOKER_CONTAINERPOOL_CONTAINER(state: String) = - LogMarkerToken(invoker, "containerPoolContainer", counter, Some(state), Map("state" -> state))(MeasurementUnit.none) + def INVOKER_CONTAINERPOOL_CONTAINER(state: String, tags: Option[Map[String, String]] = None) = { + var map = Map("state" -> state) + tags.foreach { mapTags => + for ((k, v) <- mapTags) { + map += (k -> v) + } + } + LogMarkerToken(invoker, "containerPoolContainer", counter, Some(state), map)(MeasurementUnit.none) + } + // System overload and random invoker assignment val MANAGED_SYSTEM_OVERLOAD = LogMarkerToken(controller, "managedInvokerSystemOverload", counter)(MeasurementUnit.none) diff --git a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/v2/FunctionPullingContainerPool.scala b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/v2/FunctionPullingContainerPool.scala index bfc65d33d..a1396b7a0 100644 --- a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/v2/FunctionPullingContainerPool.scala +++ b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/v2/FunctionPullingContainerPool.scala @@ -110,14 +110,22 @@ class FunctionPullingContainerPool( .emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_MEMORY("busy"), memoryConsumptionOf(busyPool)) MetricEmitter .emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_MEMORY("prewarmed"), memoryConsumptionOf(prewarmedPool)) + MetricEmitter + .emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_MEMORY("warmed"), memoryConsumptionOf(warmedPool)) MetricEmitter.emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_MEMORY("max"), poolConfig.userMemory.toMB) val prewarmedSize = prewarmedPool.size val busySize = busyPool.size val warmedSize = warmedPool.size + val warmedPoolMap: Map[(String, String), Int] = warmedPool groupBy { + case (_, warmedData) => (warmedData.invocationNamespace, warmedData.action.toString) + } mapValues (_.size) + for((data, size) <- warmedPoolMap) { + val tags: Option[Map[String, String]] = Some(Map("namespace" -> data._1, "action" -> data._2)) + MetricEmitter.emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_CONTAINER("warmed", tags), size) + } val allSize = prewarmedSize + busySize + warmedSize MetricEmitter.emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_CONTAINER("prewarmed"), prewarmedSize) MetricEmitter.emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_CONTAINER("busy"), busySize) - MetricEmitter.emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_CONTAINER("warmed"), warmedSize) MetricEmitter.emitHistogramMetric(LoggingMarkers.INVOKER_CONTAINERPOOL_CONTAINER("all"), allSize) })
