From 7097d4f8e21b7ced239b9475e4cd93d895e4877c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Gibu=C5=82a?= Date: Mon, 1 Mar 2021 18:52:34 +0100 Subject: [PATCH] Migrate pkg/kubelet/stats to structured logging --- pkg/kubelet/stats/cadvisor_stats_provider.go | 12 +++++----- pkg/kubelet/stats/cri_stats_provider.go | 22 +++++++++---------- .../stats/cri_stats_provider_windows.go | 4 ++-- pkg/kubelet/stats/helper.go | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pkg/kubelet/stats/cadvisor_stats_provider.go b/pkg/kubelet/stats/cadvisor_stats_provider.go index 2ea6e2b7635..7fa1dc64d1f 100644 --- a/pkg/kubelet/stats/cadvisor_stats_provider.go +++ b/pkg/kubelet/stats/cadvisor_stats_provider.go @@ -144,11 +144,11 @@ func (p *cadvisorStatsProvider) ListPodStats() ([]statsapi.PodStats, error) { logStats, err := p.hostStatsProvider.getPodLogStats(podStats.PodRef.Namespace, podStats.PodRef.Name, podUID, &rootFsInfo) if err != nil { - klog.Errorf("Unable to fetch pod log stats: %v", err) + klog.ErrorS(err, "Unable to fetch pod log stats", "pod", klog.KRef(podStats.PodRef.Namespace, podStats.PodRef.Name)) } etcHostsStats, err := p.hostStatsProvider.getPodEtcHostsStats(podUID, &rootFsInfo) if err != nil { - klog.Errorf("unable to fetch pod etc hosts stats: %v", err) + klog.ErrorS(err, "Unable to fetch pod etc hosts stats", "pod", klog.KRef(podStats.PodRef.Namespace, podStats.PodRef.Name)) } podStats.EphemeralStorage = calcEphemeralStorage(podStats.Containers, ephemeralStats, &rootFsInfo, logStats, etcHostsStats, false) @@ -294,9 +294,9 @@ func isPodManagedContainer(cinfo *cadvisorapiv2.ContainerInfo) bool { podNamespace := kubetypes.GetPodNamespace(cinfo.Spec.Labels) managed := podName != "" && podNamespace != "" if !managed && podName != podNamespace { - klog.Warningf( - "Expect container to have either both podName (%s) and podNamespace (%s) labels, or neither.", - podName, podNamespace) + klog.InfoS( + "Expect container to have either both podName and podNamespace labels, or neither", + "podNameLabel", podName, "podNamespaceLabel", podNamespace) } return managed } @@ -412,7 +412,7 @@ func getCadvisorContainerInfo(ca cadvisor.Interface) (map[string]cadvisorapiv2.C if _, ok := infos["/"]; ok { // If the failure is partial, log it and return a best-effort // response. - klog.Errorf("Partial failure issuing cadvisor.ContainerInfoV2: %v", err) + klog.ErrorS(err, "Partial failure issuing cadvisor.ContainerInfoV2") } else { return nil, fmt.Errorf("failed to get root cgroup stats: %v", err) } diff --git a/pkg/kubelet/stats/cri_stats_provider.go b/pkg/kubelet/stats/cri_stats_provider.go index dd92a96d643..e8fe923e41f 100644 --- a/pkg/kubelet/stats/cri_stats_provider.go +++ b/pkg/kubelet/stats/cri_stats_provider.go @@ -198,7 +198,7 @@ func (p *criStatsProvider) listPodStats(updateCPUNanoCoreUsage bool) ([]statsapi // container stats caStats, caFound := caInfos[containerID] if !caFound { - klog.V(5).Infof("Unable to find cadvisor stats for %q", containerID) + klog.V(5).InfoS("Unable to find cadvisor stats for container", "containerID", containerID) } else { p.addCadvisorContainerStats(cs, &caStats) } @@ -283,7 +283,7 @@ func (p *criStatsProvider) ListPodCPUAndMemoryStats() ([]statsapi.PodStats, erro // container stats caStats, caFound := caInfos[containerID] if !caFound { - klog.V(4).Infof("Unable to find cadvisor stats for %q", containerID) + klog.V(4).InfoS("Unable to find cadvisor stats for container", "containerID", containerID) } else { p.addCadvisorContainerCPUAndMemoryStats(cs, &caStats) } @@ -356,17 +356,17 @@ func (p *criStatsProvider) ImageFsDevice() (string, error) { // nil. func (p *criStatsProvider) getFsInfo(fsID *runtimeapi.FilesystemIdentifier) *cadvisorapiv2.FsInfo { if fsID == nil { - klog.V(2).Infof("Failed to get filesystem info: fsID is nil.") + klog.V(2).InfoS("Failed to get filesystem info: fsID is nil") return nil } mountpoint := fsID.GetMountpoint() fsInfo, err := p.cadvisor.GetDirFsInfo(mountpoint) if err != nil { - msg := fmt.Sprintf("Failed to get the info of the filesystem with mountpoint %q: %v.", mountpoint, err) + msg := "Failed to get the info of the filesystem with mountpoint" if err == cadvisorfs.ErrNoSuchDevice { - klog.V(2).Info(msg) + klog.V(2).InfoS(msg, "mountpoint", mountpoint, "err", err) } else { - klog.Error(msg) + klog.ErrorS(err, msg, "mountpoint", mountpoint) } return nil } @@ -396,7 +396,7 @@ func (p *criStatsProvider) makePodStorageStats(s *statsapi.PodStats, rootFsInfo } logStats, err := p.hostStatsProvider.getPodLogStats(podNs, podName, podUID, rootFsInfo) if err != nil { - klog.Errorf("Unable to fetch pod log stats: %v", err) + klog.ErrorS(err, "Unable to fetch pod log stats", "pod", klog.KRef(podNs, podName)) // If people do in-place upgrade, there might be pods still using // the old log path. For those pods, no pod log stats is returned. // We should continue generating other stats in that case. @@ -404,7 +404,7 @@ func (p *criStatsProvider) makePodStorageStats(s *statsapi.PodStats, rootFsInfo } etcHostsStats, err := p.hostStatsProvider.getPodEtcHostsStats(podUID, rootFsInfo) if err != nil { - klog.Errorf("unable to fetch pod etc hosts stats: %v", err) + klog.ErrorS(err, "Unable to fetch pod etc hosts stats", "pod", klog.KRef(podNs, podName)) } ephemeralStats := make([]statsapi.VolumeStats, len(vstats.EphemeralVolumes)) copy(ephemeralStats, vstats.EphemeralVolumes) @@ -436,7 +436,7 @@ func (p *criStatsProvider) addPodNetworkStats( } // TODO: sum Pod network stats from container stats. - klog.V(4).Infof("Unable to find network stats for sandbox %q", podSandboxID) + klog.V(4).InfoS("Unable to find network stats for sandbox", "sandboxID", podSandboxID) } func (p *criStatsProvider) addPodCPUMemoryStats( @@ -580,7 +580,7 @@ func (p *criStatsProvider) makeContainerStats( var err error result.Logs, err = p.hostStatsProvider.getPodContainerLogStats(meta.GetNamespace(), meta.GetName(), types.UID(meta.GetUid()), container.GetMetadata().GetName(), rootFsInfo) if err != nil { - klog.Errorf("Unable to fetch container log stats: %v ", err) + klog.ErrorS(err, "Unable to fetch container log stats", "containerName", container.GetMetadata().GetName()) } return result } @@ -680,7 +680,7 @@ func (p *criStatsProvider) getAndUpdateContainerUsageNanoCores(stats *runtimeapi if err != nil { // This should not happen. Log now to raise visibility - klog.Errorf("failed updating cpu usage nano core: %v", err) + klog.ErrorS(err, "Failed updating cpu usage nano core") } return usage } diff --git a/pkg/kubelet/stats/cri_stats_provider_windows.go b/pkg/kubelet/stats/cri_stats_provider_windows.go index 897598bb409..617a1f45546 100644 --- a/pkg/kubelet/stats/cri_stats_provider_windows.go +++ b/pkg/kubelet/stats/cri_stats_provider_windows.go @@ -43,7 +43,7 @@ func (p *criStatsProvider) listContainerNetworkStats() (map[string]*statsapi.Net for _, c := range containers { cstats, err := fetchContainerStats(c) if err != nil { - klog.V(4).Infof("Failed to fetch statistics for container %q with error '%v', continue to get stats for other containers", c.ID, err) + klog.V(4).InfoS("Failed to fetch statistics for container, continue to get stats for other containers", "containerID", c.ID, "err", err) continue } if len(cstats.Network) > 0 { @@ -86,7 +86,7 @@ func hcsStatsToNetworkStats(timestamp time.Time, hcsStats []hcsshim.NetworkStats for _, stat := range hcsStats { iStat, err := hcsStatsToInterfaceStats(stat) if err != nil { - klog.Warningf("Failed to get HNS endpoint %q with error '%v', continue to get stats for other endpoints", stat.EndpointId, err) + klog.InfoS("Failed to get HNS endpoint, continue to get stats for other endpoints", "endpointID", stat.EndpointId, "err", err) continue } diff --git a/pkg/kubelet/stats/helper.go b/pkg/kubelet/stats/helper.go index 10393a093e4..6af80ce3d97 100644 --- a/pkg/kubelet/stats/helper.go +++ b/pkg/kubelet/stats/helper.go @@ -246,7 +246,7 @@ func cadvisorInfoToUserDefinedMetrics(info *cadvisorapiv2.ContainerInfo) []stats for name, values := range stat.CustomMetrics { specVal, ok := udmMap[name] if !ok { - klog.Warningf("spec for custom metric %q is missing from cAdvisor output. Spec: %+v, Metrics: %+v", name, info.Spec, stat.CustomMetrics) + klog.InfoS("Spec for custom metric is missing from cAdvisor output", "metric", name, "spec", info.Spec, "metrics", stat.CustomMetrics) continue } for _, value := range values {