diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 461c2e730a3..5ca5b805b56 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -1275,6 +1275,9 @@ func (kl *Kubelet) cleanupOrphanedVolumes(pods []api.BoundPod, running []*docker // SyncPods synchronizes the configured list of pods (desired state) with the host current state. func (kl *Kubelet) SyncPods(pods []api.BoundPod, podSyncTypes map[types.UID]metrics.SyncPodType, start time.Time) error { + defer func() { + metrics.SyncPodsLatency.Observe(metrics.SinceInMicroseconds(start)) + }() glog.V(4).Infof("Desired: %#v", pods) var err error desiredContainers := make(map[podContainer]empty) diff --git a/pkg/kubelet/metrics/metrics.go b/pkg/kubelet/metrics/metrics.go index b53cac9ac1c..629bcd0086e 100644 --- a/pkg/kubelet/metrics/metrics.go +++ b/pkg/kubelet/metrics/metrics.go @@ -45,8 +45,14 @@ var ( }, []string{"operation_type"}, ) + SyncPodsLatency = prometheus.NewSummary( + prometheus.SummaryOpts{ + Subsystem: kubeletSubsystem, + Name: "sync_pods_latency_microseconds", + Help: "Latency in microseconds to sync all pods.", + }, + ) // TODO(vmarmol): Containers per pod - // TODO(vmarmol): Latency of SyncPods DockerOperationsLatency = prometheus.NewSummaryVec( prometheus.SummaryOpts{ Subsystem: kubeletSubsystem, @@ -66,6 +72,7 @@ func Register(containerCache dockertools.DockerCache) { prometheus.MustRegister(ImagePullLatency) prometheus.MustRegister(SyncPodLatency) prometheus.MustRegister(DockerOperationsLatency) + prometheus.MustRegister(SyncPodsLatency) prometheus.MustRegister(newPodAndContainerCollector(containerCache)) }) }