Commit Graph

187 Commits

Author SHA1 Message Date
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
Satnam Singh
7ddc75c41b Squashed commit of the following:
commit 6bf9fe89f6
Author: Satnam Singh <satnam@google.com>
Date:   Fri Sep 26 10:23:16 2014 -0700

    Change error to warning during handling check.

commit c580907183
Author: Satnam Singh <satnam@google.com>
Date:   Fri Sep 26 10:21:41 2014 -0700

    Decapatalise fmt.Errorf error messages.

commit 3ecc5745d6
Author: Satnam Singh <satnam@google.com>
Date:   Fri Sep 26 10:19:15 2014 -0700

    Fix misunderstanding about when CanHandle fails.

commit adce0c5433
Author: Satnam Singh <satnam@google.com>
Date:   Fri Sep 26 10:13:32 2014 -0700

    Change the interface of CanHandle to return error information.
2014-09-26 18:06:58 -07:00
Satnam Singh
1a9d2298dc And yet another if. 2014-09-24 11:07:48 -07:00
Satnam Singh
8551d376d8 Undo changes to if statements as requested by vmarmol. Fix typos in my changes. 2014-09-24 10:59:18 -07:00
Satnam Singh
bae82a583d A few minor Go style suggestions. 2014-09-24 10:53:52 -07:00
Victor Marmol
ebf231e4df Fix name resolution in Systemd systems 2014-09-23 20:01:35 -07:00
Rohit Jnagal
932d2a6959 Merge pull request #251 from vmarmol/shutdown
Supporting graceful signal shutdown.
2014-09-23 14:28:39 -07:00
Victor Marmol
6f35cf8e6c Supporting graceful signal shutdown.
Adding a signal handler and gracefully shutting down all threads.
2014-09-23 14:13:58 -07:00
Victor Marmol
e929ffd846 Merge pull request #247 from rjnagal/diskio
Add diskio stats to cAdvisor.
2014-09-22 17:40:31 -07:00
Rohit Jnagal
6aee4c03b0 Flatten diskio stats and use struct key.
Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
2014-09-22 23:24:34 +00:00
Rohit Jnagal
9a76da9993 Add diskio stats to cAdvisor.
Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
2014-09-22 22:48:59 +00:00
Vish Kannan
195772a1bc Merge pull request #245 from vmarmol/tests
Refactor and dependency inject containerData deps
2014-09-22 10:39:55 -07:00
Victor Marmol
e759059a09 Refactor and dependency inject containerData deps 2014-09-22 10:20:54 -07:00
Victor Marmol
e22831f1bd Flatten ContainerSpec. 2014-09-19 10:14:22 -07:00
Victor Marmol
100170beca Wording changes to SubcontainerEvent comments 2014-09-18 12:56:01 -07:00
Victor Marmol
c326475ede Remove unused filter ContainerHandlers. 2014-09-18 12:52:09 -07:00
Victor Marmol
b63d61ca97 Use inotify to watch for new containers.
This reduces cAdvisor CPU usage below 1% in my CoreOS system.

We also reduce global housekeeping to every 60s as a fallback in case we
miss an event.
2014-09-18 12:52:09 -07:00
Victor Marmol
f9c45094ab Only register the Docker driver in systems using libcontainer. 2014-09-05 13:37:18 -07:00
Victor Marmol
b75dea4021 Adding --docekr_root to customize where Docker stores state.
Fixes #199
2014-08-29 14:54:40 -07:00
Vishnu Kannan
3e390e0f33 Use glog instead of 'log' library.
Docker-DCO-1.1-Signed-off-by: Vishnu Kannan <vishnuk@google.com> (github: vishh)
2014-08-07 18:38:58 +00:00
Victor Marmol
00f4f840ea Move from filepath -> path for Join. 2014-08-03 10:06:39 -07:00
Victor Marmol
56054e3e31 Remove SplitName().
This is possible thanks to the new libcontainer interface that allows
the use of absolute paths.
2014-08-02 11:36:10 -07:00
Victor Marmol
fe23ba6d60 Merge pull request #140 from monnand/test-libcontainer
unit test for SplitName()
2014-07-29 08:32:03 -07:00
Nan Monnand Deng
fb5074a2f1 unit test for SplitName() 2014-07-29 01:52:59 -04:00
Nan Monnand Deng
d6551d888b list processes 2014-07-29 01:20:19 -04:00
Nan Deng
afc84e85c3 use init's cgroup to get nest level 2014-07-28 18:13:54 -07:00
Victor Marmol
7a3f7b9a29 Return an empty state for old versions of Docker.
Fixes #127.
2014-07-25 08:20:55 -07:00
Victor Marmol
5812f10db0 Merge pull request #117 from rjnagal/cpumask
Handle cpumask in raw driver for unified hierarchy.
2014-07-24 11:36:01 -07:00
Rohit Jnagal
f5fde119f8 Grab a new spec.Cpu while updating masks if cpu root didn't exist.
Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
2014-07-24 18:23:04 +00:00
Rohit Jnagal
b120cee75c Handle cpumask in raw driver for unified hierarchy.
Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
2014-07-24 17:53:38 +00:00
Victor Marmol
4d1291cf93 Merge pull request #116 from rjnagal/cpumask
Fix handling of cpumask for docker driver
2014-07-24 08:46:59 -07:00
Rohit Jnagal
1fa48e8c39 Fix handling of cpumask for docker driver. Raw driver still reports all
cpus. Will fix it to read cpumask for cgroup seperately.

Docker-DCO-1.1-Signed-off-by: Rohit Jnagal <jnagal@google.com> (github: rjnagal)
2014-07-24 01:50:32 +00:00
Victor Marmol
0126cec903 Don't fail ListContainers() on missing cgroup hierarchies. 2014-07-23 17:59:57 -07:00
Vish Kannan
6213f8b0c3 Merge pull request #107 from vmarmol/full-names
Added parent prefix to all Docker container and aliases.
2014-07-23 16:05:25 -07:00
Vishnu Kannan
41d9275b51 Fixed network stats handling. The UI now reports network errors. 2014-07-23 22:24:43 +00:00
Victor Marmol
239f4bad11 Added parent prefix to all Docker containers. 2014-07-23 13:23:27 -07:00
Victor Marmol
2e9176ae64 Fix Docker container slice in systemd systems.
It should be in /system.slice/docker-*.
2014-07-23 07:46:46 -07:00
monnand
99da79b0a9 Merge pull request #104 from vmarmol/fix
Remove lmctfy driver in favor of the raw driver
2014-07-22 21:18:01 -04:00
Victor Marmol
eef8c01e4e Better handle nested containers and libcontainer. 2014-07-22 18:04:08 -07:00
Victor Marmol
07b9ed3244 Remove lmctfy driver in favor of the raw driver 2014-07-22 14:09:42 -07:00
Victor Marmol
e951d03be6 Implement GeSpec() in the simple raw driver. 2014-07-22 13:51:24 -07:00
Vishnu Kannan
a748b53743 Docker ListContainers will work only for the '/docker' container. 2014-07-22 19:55:14 +00:00
Vishnu Kannan
f147996e9d Ignore non '/docker' containers in the docker driver. 2014-07-22 19:55:14 +00:00
Vishnu Kannan
5dfa7b64ba Removed NotActive error message from container package.
Imporved error messages.
2014-07-22 19:55:14 +00:00
Vishnu Kannan
ef13440034 Addressed comments. Another series of bug fixes.
Modified the docker driver and lmctfy driver to skip containers they cannot handle.
2014-07-22 19:55:14 +00:00
Vishnu Kannan
5aae36726f Fixed bugs introduced in previous patches. 2014-07-22 18:58:16 +00:00
Vishnu Kannan
7f96c90c72 Fix raw cgroups handler. 2014-07-22 18:58:16 +00:00
Vishnu Kannan
1edb798de5 Features:
Added Network Stats to Container Info. It still not exposed via the HTTP UI.
Bug fixes:
1. Modified docker handler to use libcontainer.GetStats instead of quering the fs package.
2. cAdvisor will not stall if any of its core operations fail.
3. cAdvisor will safely ignore any inactive or leaked docker containers. When containers are leaked cgroup state exists but docker is not aware of them.
2014-07-22 18:58:16 +00:00
Victor Marmol
a187d74e5b Enable the simple raw driver.
It doesn't yet get the spec, but it is functional enough to use.
This removed the registration of lmctfy, the code will be removed in a
future PR once raw GetSpec() is complete.
2014-07-21 19:02:07 -07:00
Victor Marmol
3854ea6970 Remove cpuset cgroup for listing on raw driver.
Also a couple of fixes/simplifications.
2014-07-21 18:00:55 -07:00
Victor Marmol
4c52e2ea1c Implement ListContainers and no-op GetSpec(). 2014-07-17 14:22:37 -07:00
Victor Marmol
a8863e6367 Initial version of the raw container driver. 2014-07-17 10:45:59 -07:00
Victor Marmol
1636c3e759 Change ContainerHandlerFactories to decide what containers they support.
This allows a ContainerHandlerFactory to register a CanHandle() function
which is called to determine whether the factory can handle a particular
container.

This commit disables being able to run cAdvisor without lmctfy. This
should be enabled again with a "no-op" global factory which I would like
to do in a separate PR.
2014-07-16 16:48:45 -07:00
Victor Marmol
c4c604c278 Handle systemd when it is present. 2014-07-14 10:00:21 -07:00
Nan Deng
018d514981 mock container 2014-07-03 21:03:04 -07:00
Nan Deng
0ade2f1c23 mock container handler 2014-07-03 23:39:08 +00:00