You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ni...@apache.org on 2022/05/26 08:00:48 UTC
[openwhisk] 05/08: Add namespace and action tags for container metric
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 <ni...@navercorp.com>
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)
})