Commit Graph

342 Commits

Author SHA1 Message Date
Miguel Perez
e0fef76668 Add support ZFS filesystem
- fix container usage stat not loading on first load
2015-12-15 15:41:19 -05:00
Vishnu kannan
a6daa760c8 Fix goroutine leak in docker fs handler logic.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2015-12-04 11:19:49 -08:00
Jonathan Boulle
4965f069b7 Fix case statements dealing with storageDriver
cf0adcc817 introduced two switch
statements to facilitate the addition of the `overlayStorageDriver`;
unfortunately neither of them conform to the Go switch semantic, which
does not fallthrough unless explicitly requested. In one case this was
innocuous (because a `break` was effectively the same as a no-op) but in
the other it would cause the `HasFilesystem` bool to not be set
appropriately in the case of `aufsStorageDriver` being used.

IMHO it's also more idiomatic to perform the default behaviour in the
default case rather than pre-setting and overriding it.
2015-12-02 16:04:01 -08:00
Vishnu Kannan
cf0adcc817 Add support for Overlayfs.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
2015-12-02 15:43:34 -08:00
Lei Xue
15b34b0131 add test case for compatibility.go 2015-12-02 11:01:50 +08:00
Lei Xue
7343ae4583 fix unmarshal container config failure with Docker 1.8.3 2015-12-02 11:01:12 +08:00
Lei Xue
dbbe38dfed re-order the import package 2015-11-30 16:43:22 +08:00
Jimmi Dyson
1f679cee70 Clean up unused struct fields (via structcheck linter) 2015-11-27 22:06:16 +00:00
Jimmi Dyson
82810f13cd Remove unused code (via deadcode linter) 2015-11-27 21:48:33 +00:00
Jimmi Dyson
360c73c6fd Improve perf of interface stats parsing 2015-11-27 14:12:41 +00:00
Jimmi Dyson
f9eb56e800 Merge pull request #966 from afein/godep_update_runc
[Godeps] changed docker/libcontainer dependency to runc/libcontainer
2015-11-26 15:19:28 +00:00
Jimmi Dyson
cec96eb68b Merge pull request #978 from jimmidyson/regexp-perf
Regexp tidy up
2015-11-26 09:45:27 +00:00
Jimmi Dyson
d1fce20304 Regexp tidy up 2015-11-26 09:14:26 +00:00
Jimmi Dyson
17622ecba1 Rename readInt64 -> readUInt64 for clarity 2015-11-25 16:42:33 +00:00
Alex Mavrogiannis
4533dd7d18 changed libcontainer dependency to runc 2015-11-21 14:04:01 -08:00
Vishnu kannan
401cbbc48f Add a --nosystemd flag to avoid assuming systemd to be the cgroups
owner for docker containers.

Signed-off-by: Vishnu kannan <vishnuk@google.com>
2015-11-16 10:37:54 -08:00
Vishnu Kannan
419dd8a778 Include log usage for aufs driver.
Signed-off-by: Vishnu Kannan <vishnuk@google.com>
2015-11-10 14:16:20 -08:00
Vish Kannan
47a1fa4fff Merge pull request #936 from mqliang/master
Fix imported package names to not use mixedCaps or under_scores
2015-11-04 10:47:48 -08:00
Jimmi Dyson
561cc1da4f Use file reader directly for net stats 2015-10-28 12:51:19 +00:00
Jimmi Dyson
c72e0c23a5 Add test for net dev stats 2015-10-28 12:51:13 +00:00
Jimmi Dyson
da771a0977 Drop regexp for net stats parsing
Reported in kubernetes/kubernetes#16296
2015-10-27 20:16:49 +00:00
Jimmi Dyson
8b6e002e0a Disable tcp stats collection
Fixes #938
2015-10-22 21:05:46 +01:00
mqliang
ce001dcd4e Fix imported package names to not use mixedCaps or under_scores 2015-10-22 12:10:57 +08:00
Jimmi Dyson
b8b6e1bac1 Support devicemapper storage for docker images dir
Fixes #920
2015-10-21 09:56:33 +01:00
Jimmi Dyson
357e6a0f23 Reuse cached docker client
Fixes #925
2015-10-20 20:15:54 +01:00
Jimmi Dyson
5a5d0575f5 Docker, libcontainer, docker client bumps 2015-10-20 09:22:12 +01:00
Jimmi Dyson
b4a6819291 Switch to select on time.After & close channel for track usage 2015-10-14 09:58:42 +01:00
Vishnu kannan
dd8345ab32 Perform separate housekeeping for docker container filesystem stats. 2015-10-08 15:58:57 -07:00
Vishnu kannan
6e51487236 Compute fs usage for docker containers less often.
`du` can cause a lot of cpu usage.
2015-10-08 15:01:57 -07:00
Jimmi Dyson
6ee904d129 Merge pull request #821 from basvdlei/ignore
Reduce the amount of bad Docker.inspects when using docker_only flag in combination with Systemd
2015-10-02 15:31:43 +01:00
Tomas Kral
bd61caf0c3 add failcnt 2015-10-02 14:24:22 +02:00
Bas van der Lei
f8eb8cc982 validate name with isContainerName func 2015-10-02 13:49:27 +02:00
Bas van der Lei
9931854585 remove dead code 2015-10-02 13:42:40 +02:00
Bas van der Lei
13674cf06c optimize dockerCgroupRegexp 2015-09-27 00:20:52 +02:00
Florian Koch
e4262b91b1 move TCP and TCP6 stats to NetworkStats 2015-09-25 09:04:53 +02:00
Florian Koch
dd041457b5 some fixes 2015-09-24 15:44:42 +02:00
Florian Koch
c331982f21 add tcp/tcp6 statistics 2015-09-24 15:44:42 +02:00
Bas van der Lei
7788c8bd27 Ignore systemd 'containers' in the docker driver 2015-09-23 23:55:35 +02:00
Jimmi Dyson
b8fc8cd2ae Add container specs & cadvisor version info to prometheus metrics 2015-09-09 14:28:54 +01:00
Jimmi Dyson
7e10398a50 Use proc fs to get network stats.
Reasons discussed in
https://github.com/google/cadvisor/issues/822#issuecomment-135811901 &
following.
2015-08-29 00:20:07 +01:00
Jimmi Dyson
ff0796712b Add image name to container spec & prometheus metrics
Fixes #848
2015-08-28 12:38:16 +01:00
Jimmi Dyson
d5fa97c998 Get network stats by switching network namespace on newer Docker
versions.

Fixes #822
2015-08-25 23:27:01 +01:00
Rohit Jnagal
7a2f508b50 Fix network info for docker containers running with --net=host.
Docker still reports a loop device for these. Need to check for
more than one device to mark network as available.
2015-08-24 02:58:03 +00:00
Rohit Jnagal
a123fd72d8 Add logic to read custom metric config files from container root.
Docker does not provide the rootfs path through docker inspect or statefile
and the path is dependent on the storage driver being used.

Instead of enumerating the storage drivers, we pick a pid from the container
and get the config from /proc/pid/root. Although a bit expensive, this method
works for non-docker containers too.
2015-07-22 15:45:07 +00:00
Victor Marmol
4a9a57cdd0 Merge pull request #814 from anushree-n/typo
Fix typo
2015-07-13 10:41:01 -07:00
anushree-n
fff8880a8d Typo in helpers.go 2015-07-13 10:30:46 -07:00
anushree-n
ddfe10af54 Rename compatability.go to compatibility.go 2015-07-13 10:29:36 -07:00
Alex Mavrogiannis
9666c8b38f population of memory limit for the machine container 2015-07-07 14:15:38 -07:00
Victor Marmol
fc62b8c384 Copy stats before we convert them.
Fix # 782
2015-06-25 11:30:36 -07:00
Ananya Kumar
aaad776d5d 1 line fix for net host bug 2015-06-10 11:00:49 -07:00
Victor Marmol
72df0cb098 Send data for all interfaces for raw containers 2015-06-08 09:58:47 -07:00
Victor Marmol
b923eff11c Expose multiple network interfaces in API.
Part of #686
2015-06-07 17:01:53 -07:00
Victor Marmol
53bcd977b5 Detect systemd with cgroup hierarchy.
The previous approach was brittle from within a container and was inconsistend.

Fixes #666
2015-06-02 13:11:46 -07:00
Victor Marmol
0525d40a4a Add DebugInfo() API and put the information on /validate 2015-05-21 14:46:35 -07:00
Victor Marmol
1f248ee956 Add inotify watches as debug information 2015-05-21 14:40:49 -07:00
Victor Marmol
392e1be9e5 Use one InotifyWatcher 2015-05-21 14:40:49 -07:00
Victor Marmol
ab032efda9 Report the last cgroup destroy event. 2015-05-21 10:11:09 -07:00
Victor Marmol
36a6e68169 Separate inotify handling into its own object.
This makes it easier to ensure the error conditions are handled well and
that we don't leak watches.

Fixes #703
2015-05-21 08:36:47 -07:00
Rohit Jnagal
379e5aac57 Add manager methods to get docker status and images.
This is only meant to populate /docker UI page.
2015-05-13 22:07:09 +00:00
Rohit Jnagal
5e10989a78 Add an api to support ps/top. 2015-05-12 00:06:47 +00:00
Victor Marmol
86dd6cc99d Merge pull request #706 from rjnagal/docker
Add 'bytes available' to fs info.
2015-05-11 15:12:37 -07:00
Rohit Jnagal
e43ada2e00 Add 'bytes available' to fs info.
The current capacity and usage numbers are insufficient to figure out
actual bytes available for a non-root user for the fs. Available is the
value used by df and the one we need to track to detect low diskspace
condition.
2015-05-11 19:27:40 +00:00
Victor Marmol
757ad9e1ae WorkingSet should use inactive file 2015-05-11 09:49:29 -07:00
Victor Marmol
8928d487de Min working set should be 0.
Fixes #685
2015-05-11 09:49:23 -07:00
Rohit Jnagal
4b4312b290 Improve approximation of container creation time.
Containers with subcontainers always report creation time to be same as the time
of creation of the latest subcontainer.

Still not an ideal solution, but accurate for most practical purposes.
2015-05-07 18:14:54 +00:00
Victor Marmol
1a1a1faa7e Update inotify dependency. 2015-05-04 10:15:21 -07:00
Victor Marmol
a7a7aacebc Add flags to customize the events StoragePolicy. 2015-05-01 12:04:11 -07:00
Victor Marmol
1e09f9012d Adding container labels 2015-04-30 23:09:03 -07:00
Rohit Jnagal
d0424eca0f Add --docker_only flag to enable tracking for only docker containers and root.
This reduces unnecessary load on the system and also cleans up the UI clutter.
Currently defaulted to false.
2015-04-30 23:34:44 +00:00
Victor Marmol
11462d80bc Lowering log levels.
Reduce common logging using Kubernetes logging standards.
2015-04-13 15:05:41 -07:00
Rohit Jnagal
dfcc05a953 Fix networking stats by switching Tx and Rx stats.
A better fix is to directly use stats collected by libcontainer.
2015-04-13 17:01:06 +00:00
Victor Marmol
64c0d3d8c3 Migrating cAdvisor to new libcontainer.
Backwards compatability is maintained with older versions of
libcontainer.
2015-04-10 14:51:29 -07:00
Victor Marmol
e97e203d76 Adding translation layer for pre-API libcontainer configs. 2015-04-10 14:51:29 -07:00
Clayton Coleman
9ce178f707 Lazily init DBus only when it is needed
OpenShift has some cAdvisor packages in its import chain. The init() here
invokes Dbus start even when cAdvisor is not actively running or being
used (in our packages).  This change makes the systemd check and dbus
initialization and connection lazy, occuring only the first time someone
invokes UseSystemd().
2015-03-19 16:35:48 -04:00
Rohit Jnagal
e685067a04 Merge pull request #579 from vmarmol/master
Start() exits gracefully when there are no factories.
2015-03-11 23:24:16 -07:00
Victor Marmol
ffdb6f5c7d Start() exits gracefully when there are no factories.
This allows us to handle the case where there are no factories as
happens when testing in a non-container environment. We will still serve
the machine information that is available.
2015-03-11 21:22:16 -07:00
Rohit Jnagal
a0a419614f Add /storage endpoint to 2.0 API.
/storage returns {device, mountpoint, capacity, usage} for all filesystems.
In addition, it also detect and applies label for each filesystem - currently two - "root", "docker-images".

/storage/<label> returns info about the filesystem with specific label. eg. /storage/root returns info for root filesystem.
2015-03-11 01:49:58 +00:00
Rohit Jnagal
872546ba3a Bulk move current info api to info/v1. Making room for info/v2. 2015-03-04 00:47:28 +00:00
Rohit Jnagal
e09f9684e6 Fix cpuset returned in spec on a single core machine.
Switch from "0-0" to "0".
2015-02-19 18:54:23 +00:00
Victor Marmol
131a0c21ea Detect Docker containers by asking the Docker.
No longer do deduction from the cgroup path (only to get the Docker
container ID).

Fixes #450.
2015-02-06 09:15:59 -08:00
Victor Marmol
45ba276ae8 Add container creation time to ContainerSpec. 2015-02-05 09:52:10 -08:00
Victor Marmol
86238d0179 Allow partial success of GetStats().
This should make us more robust in the face of failure (at the cost of
making the failures less prominent). We allow GetStats() to return an
error and a partial result. We will process the result and report the
error.

Fixes #306.
2015-02-03 15:26:31 -08:00
Victor Marmol
01b456c129 Fix detection of AUFS layers.
We were using the container name instead of the Docker ID which breaks
in systemd systems.

Fixes #475.
2015-02-03 10:06:19 -08:00
Vishnu Kannan
aedf42ba8c Adding 'HasDiskIo' to Container Spec to indicate if diskio stats are available for a given container. 2015-01-20 05:06:57 +00:00
Arkadi Shishlov
fe7df00aec Add blkio cgroup to list of supported subsystems 2015-01-17 17:09:35 +02:00
Victor Marmol
909fa133e1 Merge pull request #445 from rjnagal/docker
Add task load stats to containers.
2015-01-16 16:00:50 -08:00
Rohit Jnagal
cbdd96a554 Add task load stats to containers.
The stats are only populated when cAdvisor is running outside network namespaces.
We'll add a different backend to retrieve the same data from within namespaces.
2015-01-16 23:25:22 +00:00
Rohit Jnagal
ed155019ac Verify and fix error message nit :) 2015-01-14 01:15:13 +00:00
Rohit Jnagal
55fceed402 Add some more missing copyrights and script to verify copyright.
Add to travis next.
2015-01-09 19:31:25 +00:00
Victor Marmol
adfccb7c1c Updating to latest libcontainer. 2015-01-08 12:15:03 -08:00
Rohit Jnagal
3df5d4f08d Merge pull request #419 from vmarmol/cleanup
Cleanup of libcontainer state generation.
2015-01-05 14:25:20 -08:00
Victor Marmol
4e3629101d Cleanup of libcontainer state generation. 2015-01-05 13:47:35 -08:00
Victor Marmol
643d647761 Gofmt all files. 2015-01-05 11:26:23 -08:00
Vish Kannan
54834156eb Merge pull request #407 from rjnagal/diskinfo
Add network stats to root container.
2015-01-02 10:06:11 -08:00
Vish Kannan
5897f3e970 Merge pull request #410 from rjnagal/docker
Fix vet errors
2015-01-02 09:59:01 -08:00
Rohit Jnagal
aee5c36313 Fix vet errors 2015-01-01 22:41:55 +00:00
Rohit Jnagal
45334c6f71 Add network stats to root container. Provides machine-level networking stats. 2014-12-30 17:12:42 +00:00
Rohit Jnagal
cdd355421f Add check for state directory to validator. 2014-12-28 18:04:32 +00:00
Rohit Jnagal
275b3ed653 Don't use state.json from libcontainer to get cgroup paths.
This confuses cadvisor on systems where cadvisor doesn't see cgroup mounts at the same place as root namespace view.
2014-12-24 00:25:11 +00:00
Victor Marmol
6ad13d126b Check filesystem before accessing it in UI.
Fixes #377.
2014-12-18 16:09:50 -08:00
Victor Marmol
7ca63db2c5 Handle old versions of the libcontainer config.
Libcontainer recently changed its config by changing the type of a
field. This commit tries parsing the config as the new and old types.
2014-12-16 17:52:44 -08:00
Rohit Jnagal
8eec529106 Merge pull request #358 from vmarmol/update-libcontainer
Update libcontainer dependency
2014-12-15 17:01:44 -08:00
Victor Marmol
91c974e913 Generate CgroupPaths when not available.
This happens always for non-Docker containers and sometimes with older Docker
containers.
2014-12-15 16:57:30 -08:00
Victor Marmol
084e809507 Merge pull request #356 from rjnagal/rename
Add systemd information to validate output.
2014-12-16 07:35:30 +08:00
Rohit Jnagal
4ec9894ea2 Add systemd information to validate output. 2014-12-15 23:26:30 +00:00
Victor Marmol
0123fe1d07 Merge pull request #355 from rjnagal/syst
Fix Docker handler for machines that use systemd just as a naming service
2014-12-16 07:07:42 +08:00
Eric Paris
b74d2c6296 update to support newest libcontainer update 2014-12-15 15:00:45 -08:00
Rohit Jnagal
f585e4bc5e Fix Docker handler for machines that use systemd just as a naming service without controlling cgroups. 2014-12-15 22:58:44 +00:00
Rohit Jnagal
1953bd0e94 Bump minimum docker supported version to 1.0. 2014-12-15 16:57:22 +00:00
Victor Marmol
cb0387b41e Try to detect systemd by checking for its named cgroup hierarchy.
Fixes #342
2014-12-11 17:30:33 -08:00
Victor Marmol
ff9a4995a1 Report error while fetching network stats. 2014-12-10 13:26:42 -08:00
Victor Marmol
18e9394dbc Adding runtime options docs.
Also some cleanups of other docs.
2014-12-04 09:16:30 -08:00
Victor Marmol
e3ab15417c Ignore update errors for dead containers.
This adds an Exists() interface to detect when the container is dead.
Before reporting an update error we check is Exists() is true.

Some documentation was added as well.
2014-11-22 05:31:11 +08:00
Vish Kannan
c005bc1722 Merge pull request #326 from vmarmol/integration
Register inotify watches on all cgroup hierarchies.
2014-11-21 09:11:10 -08:00
Victor Marmol
fa00344601 Register inotify watches on all cgroup hierarchies.
We used to only register them on the first hierarchy that was created (I
think this was unintentional). This caused some weird edgecases where
we'd try to delete a watch event we didn't create. It is an error we
ignore today (since we fix it in < 60s) but delays our destruction of
the container.
2014-11-21 20:05:50 +08:00
Rohit Jnagal
6885e0c8f2 Merge pull request #320 from vmarmol/docker-raw
Let the raw driver handle the /docker container.
2014-11-19 22:40:06 -08:00
Victor Marmol
0e603d2709 Let the raw driver handle the /docker container.
This will give us stats on this container and since the /docker UI
endpoint, it no longer serves the purpose it once did.
2014-11-20 06:44:35 +08:00
Victor Marmol
fc622a4b56 Fix raw driver's setting of CPU mask.
We used to include it with the trailing "\n" which gave us parsing
errors in the UI (and the reason why they didn't show up in any of those
containers).
2014-11-20 06:32:54 +08:00
Victor Marmol
f97e57df88 Simplify how the Docker containers are handled.
This is done by introducting the concept of "namespaces" of container
names. The aliases of a container are under this namespace. Namespace
names are of the form:

//<namespace>/<alias>

This allows us to (within cAdvisor) query all docker containers as
//docker regardless of whether this is a systemd or a non-systemd system.

This does break our ability to handle Docker aliases with the /container
endpoint. I think this is acceptable as our support there was not
consistent between system types.
2014-11-12 18:01:47 -08:00
Vish Kannan
4910466050 Merge pull request #296 from vmarmol/docker
Add /docker/ UI endpoint.
2014-11-12 09:48:52 -08:00
Victor Marmol
6e89bdef9f Add /docker/ UI endpoint.
Fixes #294
2014-11-07 08:53:52 -08:00
Vish Kannan
26921c3643 Merge pull request #277 from vmarmol/flat
Flatten ContainerStats struct
2014-11-05 11:26:10 -08:00
Victor Marmol
e695c3820e Only overwrite the Name and Parent in the libcontainer Cgroup.
Fixes #287
2014-10-29 11:41:23 -07:00
Abin Shahab
e6406ef6d0 Additional blkio stats
This adds blkio.io_wait_time, blkio.io_service_time, blkio.io_merged, and blkio.time to the api
2014-10-21 22:41:33 +00:00
Abin Shahab
7133ab0f7d gofmt all files 2014-10-21 05:23:23 +00:00
Abin Shahab
48129c03d1 code review fixes 2014-10-21 05:19:24 +00:00
Victor Marmol
add5147769 Flatten ContainerStats struct 2014-10-20 11:17:20 -07:00
Abin Shahab
e8ea485a0d Gofmt all files 2014-10-19 23:39:04 +00:00
Abin Shahab
e9d6289964 Added /proc/diskstats
Read disk io information from /proc/diskstats.
This will allow the user who provides partition container hints to get partition-specific io (blkio provides io for the container, but at the disk device level).
2014-10-19 23:36:08 +00:00
Rohit Jnagal
b1796da270 Merge pull request #278 from vmarmol/docker-api
Add API version v1.2 with /docker endpoint.
2014-10-21 09:58:32 -07:00
Victor Marmol
8aa05b0c39 Add API version v1.2 with /docker endpoint.
The /docker endpoint lists all Docker containers under one unified
namespace.
2014-10-20 22:24:01 -07:00
Abin Shahab
6b267575ad Renamed mount and removed dead code 2014-10-17 16:26:33 +00:00
Abin Shahab
751de4a0c9 code review fixes 2014-10-16 02:55:39 +00:00
Abin Shahab
b8ed0bd0e3 Mounted partitions space usage metrics per container
This computes the space usage for mounted partitions. It takes in a list of mounted partitions from containerHints
and computes the device's disk usage(so each mount must be a separate partition). This is useful for users who
mount partitions on containers and store most of the container's persistent data on those partitions.
2014-10-15 19:01:38 +00:00
Abin Shahab
c4d663c6ab minor fixes and gofmt 2014-10-15 11:10:54 +00:00
Abin Shahab
f170df0a76 Spec consistency 2014-10-15 07:58:58 +00:00
Abin Shahab
9264114895 some more renames 2014-10-14 23:19:46 +00:00
Abin Shahab
4c740cbc54 matches with the full path of the container 2014-10-14 20:01:44 +00:00
Abin Shahab
99d2c31f4d Renamed container description types 2014-10-14 20:01:44 +00:00
Abin Shahab
07fbd1ddab Fixed formatting 2014-10-14 20:01:44 +00:00
Abin Shahab
a02b7f1620 Added network stats to raw handler
Raw handler now parses an optional json file with the network interface information, and emits network stats.
2014-10-14 20:01:44 +00:00
Abin Shahab
e038729d67 Updated import and comments 2014-10-14 20:01:44 +00:00
Abin Shahab
808fd821ac NetworkInterface now contains both VethHost and VethChild 2014-10-14 20:01:44 +00:00
Abin Shahab
d009264986 LXC Factory and Handler
This factory and handler can retrieve memory, cpu, diskio, and network information of lxc containers.
The handler can be passed additional container information(e.g. network interface) using a cdesc.json file
2014-10-14 20:01:44 +00:00
Vishnu Kannan
0699e7029d Avoid storage usagge calculations when aufs driver is not being used. 2014-10-07 11:48:10 +00:00
Vishnu Kannan
5e8fecea6a Adding filesystem usage calculation for docker containers. This patch also includes some internal refactoring.
'machine' api now exports a list of all existing 'ext*' filesystems along with the capacity.
2014-10-06 09:51:32 +00:00
Vishnu Kannan
c21ff1f166 Adding a disk usage progress bar. 2014-10-01 00:28:01 +00:00
Vishnu Kannan
b9e70f0240 Filesystem stats are now per container. As of now, fs stats are reported only for the
root cgroup.
To make cadvisor detect all the disks, the rootfs of host needs to mounted
inside cadvisor.
2014-09-30 23:48:34 +00:00
Vishnu Kannan
946b18f789 Adding filesystem usage information to MachineInfo. 2014-09-29 23:24:06 +00:00
Vish Kannan
1ed9d122c1 Merge pull request #220 from vmarmol/coreos
Fix name resolution in Systemd systems
2014-09-29 11:28:23 -07:00