Skip to content
This repository has been archived by the owner on Jul 27, 2023. It is now read-only.

Commit

Permalink
Limit docker and k8s error logging
Browse files Browse the repository at this point in the history
Prevent noisy logs if we're failing on the same thing over and over
(such as permissions or different API versions)
  • Loading branch information
conorbranagan committed Jun 29, 2017
1 parent 10799c4 commit fada8d8
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
12 changes: 9 additions & 3 deletions checks/containers.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ const (
kubernetesMetaTTL = 3 * time.Minute
)

var lastKubeErr string

func GetKubernetesMeta() *agentpayload.KubeMetadataPayload {
if os.Getenv("KUBERNETES_SERVICE_HOST") == "" {
// If this is not defined then we're not running in a k8s cluster.
Expand All @@ -26,13 +28,17 @@ func GetKubernetesMeta() *agentpayload.KubeMetadataPayload {
if !ok {
payload, err := kubernetes.GetPayload()
if err != nil {
// Swallowing this error for now with an error as it shouldn't block collection.
log.Errorf("Unable to get kubernetes metadata: %s", err)
if err.Error() != lastKubeErr {
// Swallowing this error for now with an error as it shouldn't block collection.
log.Errorf("Unable to get kubernetes metadata: %s", err)
// Only log the same error once to prevent noisy logs.
lastKubeErr = err.Error()
}
return nil
}
kubeMeta = payload.(*agentpayload.KubeMetadataPayload)
cache.SetWithTTL(cacheKey, kubeMeta, kubernetesMetaTTL)
} else {
} else if payload != nil {
kubeMeta = payload.(*agentpayload.KubeMetadataPayload)
}
return kubeMeta
Expand Down
7 changes: 6 additions & 1 deletion checks/process.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ const (
cpuDelta = 1 * time.Second
)

var lastDockerErr string

func CollectProcesses(cfg *config.AgentConfig, groupID int32) ([]model.MessageBody, error) {
start := time.Now()
var err error
Expand All @@ -32,8 +34,11 @@ func CollectProcesses(cfg *config.AgentConfig, groupID int32) ([]model.MessageBo
pids = append(pids, fp.Pid)
}
containerByPID, err := docker.ContainersByPID(pids)
if err != nil && err != docker.ErrDockerNotAvailable {
if err != nil && err != docker.ErrDockerNotAvailable && err.Error() != lastDockerErr {
// Limit docker error logging to once per Agent run to prevent noise when permissions
// aren't correct.
log.Warnf("unable to get docker stats: %s", err)
lastDockerErr = err.Error()
}

info, err := collectSystemInfo(cfg)
Expand Down

0 comments on commit fada8d8

Please sign in to comment.