Migrate pkg/kubelet/stats to structured logging

This commit is contained in:
Krzysztof Gibuła 2021-03-01 18:52:34 +01:00
parent f6152d1521
commit 7097d4f8e2
4 changed files with 20 additions and 20 deletions

View File

@ -144,11 +144,11 @@ func (p *cadvisorStatsProvider) ListPodStats() ([]statsapi.PodStats, error) {
logStats, err := p.hostStatsProvider.getPodLogStats(podStats.PodRef.Namespace, podStats.PodRef.Name, podUID, &rootFsInfo) logStats, err := p.hostStatsProvider.getPodLogStats(podStats.PodRef.Namespace, podStats.PodRef.Name, podUID, &rootFsInfo)
if err != nil { 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) etcHostsStats, err := p.hostStatsProvider.getPodEtcHostsStats(podUID, &rootFsInfo)
if err != nil { 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) 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) podNamespace := kubetypes.GetPodNamespace(cinfo.Spec.Labels)
managed := podName != "" && podNamespace != "" managed := podName != "" && podNamespace != ""
if !managed && podName != podNamespace { if !managed && podName != podNamespace {
klog.Warningf( klog.InfoS(
"Expect container to have either both podName (%s) and podNamespace (%s) labels, or neither.", "Expect container to have either both podName and podNamespace labels, or neither",
podName, podNamespace) "podNameLabel", podName, "podNamespaceLabel", podNamespace)
} }
return managed return managed
} }
@ -412,7 +412,7 @@ func getCadvisorContainerInfo(ca cadvisor.Interface) (map[string]cadvisorapiv2.C
if _, ok := infos["/"]; ok { if _, ok := infos["/"]; ok {
// If the failure is partial, log it and return a best-effort // If the failure is partial, log it and return a best-effort
// response. // response.
klog.Errorf("Partial failure issuing cadvisor.ContainerInfoV2: %v", err) klog.ErrorS(err, "Partial failure issuing cadvisor.ContainerInfoV2")
} else { } else {
return nil, fmt.Errorf("failed to get root cgroup stats: %v", err) return nil, fmt.Errorf("failed to get root cgroup stats: %v", err)
} }

View File

@ -198,7 +198,7 @@ func (p *criStatsProvider) listPodStats(updateCPUNanoCoreUsage bool) ([]statsapi
// container stats // container stats
caStats, caFound := caInfos[containerID] caStats, caFound := caInfos[containerID]
if !caFound { 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 { } else {
p.addCadvisorContainerStats(cs, &caStats) p.addCadvisorContainerStats(cs, &caStats)
} }
@ -283,7 +283,7 @@ func (p *criStatsProvider) ListPodCPUAndMemoryStats() ([]statsapi.PodStats, erro
// container stats // container stats
caStats, caFound := caInfos[containerID] caStats, caFound := caInfos[containerID]
if !caFound { 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 { } else {
p.addCadvisorContainerCPUAndMemoryStats(cs, &caStats) p.addCadvisorContainerCPUAndMemoryStats(cs, &caStats)
} }
@ -356,17 +356,17 @@ func (p *criStatsProvider) ImageFsDevice() (string, error) {
// nil. // nil.
func (p *criStatsProvider) getFsInfo(fsID *runtimeapi.FilesystemIdentifier) *cadvisorapiv2.FsInfo { func (p *criStatsProvider) getFsInfo(fsID *runtimeapi.FilesystemIdentifier) *cadvisorapiv2.FsInfo {
if fsID == nil { 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 return nil
} }
mountpoint := fsID.GetMountpoint() mountpoint := fsID.GetMountpoint()
fsInfo, err := p.cadvisor.GetDirFsInfo(mountpoint) fsInfo, err := p.cadvisor.GetDirFsInfo(mountpoint)
if err != nil { 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 { if err == cadvisorfs.ErrNoSuchDevice {
klog.V(2).Info(msg) klog.V(2).InfoS(msg, "mountpoint", mountpoint, "err", err)
} else { } else {
klog.Error(msg) klog.ErrorS(err, msg, "mountpoint", mountpoint)
} }
return nil return nil
} }
@ -396,7 +396,7 @@ func (p *criStatsProvider) makePodStorageStats(s *statsapi.PodStats, rootFsInfo
} }
logStats, err := p.hostStatsProvider.getPodLogStats(podNs, podName, podUID, rootFsInfo) logStats, err := p.hostStatsProvider.getPodLogStats(podNs, podName, podUID, rootFsInfo)
if err != nil { 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 // 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. // the old log path. For those pods, no pod log stats is returned.
// We should continue generating other stats in that case. // 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) etcHostsStats, err := p.hostStatsProvider.getPodEtcHostsStats(podUID, rootFsInfo)
if err != nil { 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)) ephemeralStats := make([]statsapi.VolumeStats, len(vstats.EphemeralVolumes))
copy(ephemeralStats, vstats.EphemeralVolumes) copy(ephemeralStats, vstats.EphemeralVolumes)
@ -436,7 +436,7 @@ func (p *criStatsProvider) addPodNetworkStats(
} }
// TODO: sum Pod network stats from container stats. // 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( func (p *criStatsProvider) addPodCPUMemoryStats(
@ -580,7 +580,7 @@ func (p *criStatsProvider) makeContainerStats(
var err error var err error
result.Logs, err = p.hostStatsProvider.getPodContainerLogStats(meta.GetNamespace(), meta.GetName(), types.UID(meta.GetUid()), container.GetMetadata().GetName(), rootFsInfo) result.Logs, err = p.hostStatsProvider.getPodContainerLogStats(meta.GetNamespace(), meta.GetName(), types.UID(meta.GetUid()), container.GetMetadata().GetName(), rootFsInfo)
if err != nil { 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 return result
} }
@ -680,7 +680,7 @@ func (p *criStatsProvider) getAndUpdateContainerUsageNanoCores(stats *runtimeapi
if err != nil { if err != nil {
// This should not happen. Log now to raise visibility // 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 return usage
} }

View File

@ -43,7 +43,7 @@ func (p *criStatsProvider) listContainerNetworkStats() (map[string]*statsapi.Net
for _, c := range containers { for _, c := range containers {
cstats, err := fetchContainerStats(c) cstats, err := fetchContainerStats(c)
if err != nil { 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 continue
} }
if len(cstats.Network) > 0 { if len(cstats.Network) > 0 {
@ -86,7 +86,7 @@ func hcsStatsToNetworkStats(timestamp time.Time, hcsStats []hcsshim.NetworkStats
for _, stat := range hcsStats { for _, stat := range hcsStats {
iStat, err := hcsStatsToInterfaceStats(stat) iStat, err := hcsStatsToInterfaceStats(stat)
if err != nil { 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 continue
} }

View File

@ -246,7 +246,7 @@ func cadvisorInfoToUserDefinedMetrics(info *cadvisorapiv2.ContainerInfo) []stats
for name, values := range stat.CustomMetrics { for name, values := range stat.CustomMetrics {
specVal, ok := udmMap[name] specVal, ok := udmMap[name]
if !ok { 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 continue
} }
for _, value := range values { for _, value := range values {