Effortless monitoring with collectd, Graphite and Docker

At dotCloud, we are very happy users of collectd. collectd is a metrics collection daemon, an alternative (much superior, in my opinion) to Munin that you might know. At dotCloud we use collectd to collect system metrics, but it could also be used for business or application oriented metrics quite easily. collectd is basically a big loop, which read (i.e: collect) and/or write (in a storage backend like RRDs, on the network, etc.) metrics at a configurable interval. collectd is very efficient at that, and since it’s modular, a collectd daemon can be configured to collect metrics, store them or simply route them to other collectd servers using its efficient binary protocol; all of that from a large list of plugins. However, collectd doesn’t do any graphing at all and you have to use something on top of the storage Continue reading…

Jérôme Petazzoni

Unionize: network superpowers for your docker containers

Some people asked for special network setups with docker containers: Bryan Berry wants to run Cassandra nodes and specify their IP addresses [1]; Matt Parlane wants to expose arbitrary IP addresses to docker containers [2]; Jeremy Grosser wants to plumb docker containers with openvswitch; I personally want to play with doozerd[3], but it requires UDP, which is not yet available in docker. Generally speaking, specifying IP addresses for containers obviously leads to setups which are not reproducible. But it is also obviously very useful for many test setups. To encourage people to use docker in those scenarios (rather than switching to plain LXC!), let me introduce: unionize[4]. Unionize: is a simple bash script, using basic tools (brctl, ip, ifconfig) lets you create private networks for your containers lets you connect containers with the outside world, in arbitrary topologies. Sample use: Continue reading…

Jérôme Petazzoni

Docker containers can haz networking now!

TL,DR: The following command will allocate a random port on your machine, and map it to port 1234 inside a container: docker run -p 1234 base — nc -l 1234 Use docker inspect (and look under NetworkSettings) to see which random port was allocated. Good news, everyone! Networking support has been merged. This means that your containers can now talk to the outside world (duh!), and the outside world can talk to them as well.