Skip to content

Commit

Permalink
Fix docker stats to make it work on centos 7.
Browse files Browse the repository at this point in the history
issue #58
issue #84
  • Loading branch information
neezgee authored and sparrc committed Sep 11, 2015
1 parent d8482cc commit bd00f46
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ will still be backwards compatible if only `url` is specified.
- [#175](https:/influxdb/telegraf/issues/175): Set write precision before gathering metrics
- [#178](https:/influxdb/telegraf/issues/178): redis plugin, multiple server thread hang bug
- Fix net plugin on darwin
- [#84](https:/influxdb/telegraf/issues/84): Fix docker plugin on CentOS. Thanks @neezgee!

## v0.1.8 [2015-09-04]

Expand Down
18 changes: 14 additions & 4 deletions plugins/system/ps/docker/docker_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package docker

import (
"encoding/json"
"os"
"os/exec"
"path"
"strconv"
Expand Down Expand Up @@ -48,9 +49,13 @@ func CgroupCPU(containerid string, base string) (*cpu.CPUTimesStat, error) {
if len(base) == 0 {
base = "/sys/fs/cgroup/cpuacct/docker"
}
path := path.Join(base, containerid, "cpuacct.stat")
statfile := path.Join(base, containerid, "cpuacct.stat")

lines, err := common.ReadLines(path)
if _, err := os.Stat(statfile); os.IsNotExist(err) {
statfile = path.Join("/sys/fs/cgroup/cpuacct/system.slice", "docker-" + containerid + ".scope", "cpuacct.stat")
}

lines, err := common.ReadLines(statfile)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -86,12 +91,17 @@ func CgroupMem(containerid string, base string) (*CgroupMemStat, error) {
if len(base) == 0 {
base = "/sys/fs/cgroup/memory/docker"
}
path := path.Join(base, containerid, "memory.stat")
statfile := path.Join(base, containerid, "memory.stat")

if _, err := os.Stat(statfile); os.IsNotExist(err) {
statfile = path.Join("/sys/fs/cgroup/memory/system.slice", "docker-" + containerid + ".scope", "memory.stat")
}

// empty containerid means all cgroup
if len(containerid) == 0 {
containerid = "all"
}
lines, err := common.ReadLines(path)
lines, err := common.ReadLines(statfile)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit bd00f46

Please sign in to comment.