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 df68fc2a51e397dc8bdaed4fc7cc4d45071dfe09 Author: ning.yougang <[email protected]> AuthorDate: Sun Apr 24 15:47:23 2022 +0800 Add docker container creation consume time metric --- .../openwhisk/core/containerpool/docker/DockerClient.scala | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/DockerClient.scala b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/DockerClient.scala index b594f74ef..296c5eb58 100644 --- a/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/DockerClient.scala +++ b/core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/docker/DockerClient.scala @@ -21,7 +21,6 @@ import java.io.FileNotFoundException import java.nio.file.Files import java.nio.file.Paths import java.util.concurrent.Semaphore - import akka.actor.ActorSystem import scala.collection.concurrent.TrieMap @@ -32,9 +31,10 @@ import scala.util.Failure import scala.util.Success import scala.util.Try import akka.event.Logging.{ErrorLevel, InfoLevel} +import kamon.metric.MeasurementUnit import pureconfig._ import pureconfig.generic.auto._ -import org.apache.openwhisk.common.{Logging, LoggingMarkers, MetricEmitter, TransactionId} +import org.apache.openwhisk.common.{LogMarkerToken, Logging, LoggingMarkers, MetricEmitter, TransactionId} import org.apache.openwhisk.core.ConfigKeys import org.apache.openwhisk.core.containerpool.ContainerId import org.apache.openwhisk.core.containerpool.ContainerAddress @@ -203,8 +203,15 @@ class DockerClient(dockerHost: Option[String] = None, LoggingMarkers.INVOKER_DOCKER_CMD(args.head), s"running ${cmd.mkString(" ")} (timeout: $timeout)", logLevel = InfoLevel) + val t0 = System.currentTimeMillis() executeProcess(cmd, timeout).andThen { - case Success(_) => transid.finished(this, start) + case Success(_) => + val t1 = System.currentTimeMillis() + MetricEmitter.emitHistogramMetric( + LogMarkerToken("docker", "runCmd", "duration", Some(args.head), Map("cmd" -> args.head))( + MeasurementUnit.time.milliseconds), + t1 - t0) + transid.finished(this, start) case Failure(pte: ProcessTimeoutException) => transid.failed(this, start, pte.getMessage, ErrorLevel) MetricEmitter.emitCounterMetric(LoggingMarkers.INVOKER_DOCKER_CMD_TIMEOUT(args.head))
