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:45 UTC

[openwhisk] 02/08: Add pod creation consume time 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 db90668bd46485c468a5f74763dbc7f575c06ca4
Author: ning.yougang <ni...@navercorp.com>
AuthorDate: Sun Apr 24 15:40:51 2022 +0800

    Add pod creation consume time metric
---
 .../containerpool/kubernetes/KubernetesClient.scala    | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/kubernetes/KubernetesClient.scala b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/kubernetes/KubernetesClient.scala
index 9dd588eda..5ba09f11d 100644
--- a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/kubernetes/KubernetesClient.scala
+++ b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/kubernetes/KubernetesClient.scala
@@ -22,7 +22,6 @@ import java.net.SocketTimeoutException
 import java.time.format.DateTimeFormatterBuilder
 import java.time.temporal.ChronoField
 import java.time.{Instant, ZoneId}
-
 import akka.actor.ActorSystem
 import akka.event.Logging.ErrorLevel
 import akka.event.Logging.InfoLevel
@@ -38,11 +37,18 @@ import collection.JavaConverters._
 import io.fabric8.kubernetes.api.model._
 import io.fabric8.kubernetes.client.utils.Serialization
 import io.fabric8.kubernetes.client.{ConfigBuilder, DefaultKubernetesClient}
+import kamon.metric.MeasurementUnit
 import okhttp3.{Call, Callback, Request, Response}
 import okio.BufferedSource
 import org.apache.commons.lang3.exception.ExceptionUtils
-import org.apache.openwhisk.common.LoggingMarkers
-import org.apache.openwhisk.common.{ConfigMapValue, Logging, TransactionId}
+import org.apache.openwhisk.common.{
+  ConfigMapValue,
+  LogMarkerToken,
+  Logging,
+  LoggingMarkers,
+  MetricEmitter,
+  TransactionId
+}
 import org.apache.openwhisk.core.ConfigKeys
 import org.apache.openwhisk.core.containerpool.docker.ProcessRunner
 import org.apache.openwhisk.core.containerpool.{ContainerAddress, ContainerId}
@@ -145,6 +151,7 @@ class KubernetesClient(
       log.info(this, s"Pod spec being created\n${Serialization.asYaml(pod)}")
     }
     val namespace = kubeRestClient.getNamespace
+    val t0 = System.currentTimeMillis()
     val start = transid.started(
       this,
       LoggingMarkers.INVOKER_KUBEAPI_CMD("create"),
@@ -176,6 +183,11 @@ class KubernetesClient(
         waitForPod(namespace, createdPod, start.start, config.timeouts.run)
           .map { readyPod =>
             transid.finished(this, start, logLevel = InfoLevel)
+            val t1 = System.currentTimeMillis()
+            MetricEmitter.emitHistogramMetric(
+              LogMarkerToken("kubeapi", "create", "duration", Some("create"), Map("cmd" -> "create"))(
+                MeasurementUnit.time.milliseconds),
+              t1 - t0)
             toContainer(readyPod)
           }
           .recoverWith {