Add container health metrics to docker input (#3666)

This commit is contained in:
Jacob McCann
2018-01-12 19:43:51 -06:00
committed by Daniel Nelson
parent 97f6c9d8e1
commit 7ab0d50116
3 changed files with 25 additions and 5 deletions

View File

@@ -391,12 +391,13 @@ func (d *Docker) gatherContainer(
}
}
info, err := d.client.ContainerInspect(ctx, container.ID)
if err != nil {
return fmt.Errorf("Error inspecting docker container: %s", err.Error())
}
// Add whitelisted environment variables to tags
if len(d.TagEnvironment) > 0 {
info, err := d.client.ContainerInspect(ctx, container.ID)
if err != nil {
return fmt.Errorf("Error inspecting docker container: %s", err.Error())
}
for _, envvar := range info.Config.Env {
for _, configvar := range d.TagEnvironment {
dock_env := strings.SplitN(envvar, "=", 2)
@@ -408,6 +409,14 @@ func (d *Docker) gatherContainer(
}
}
if info.State.Health != nil {
healthfields := map[string]interface{}{
"health_status": info.State.Health.Status,
"failing_streak": info.ContainerJSONBase.State.Health.FailingStreak,
}
acc.AddFields("docker_container_health", healthfields, tags, time.Now())
}
gatherContainerStats(v, acc, tags, container.ID, d.PerDevice, d.Total, daemonOSType)
return nil