Add and monitor running docker containers in Zabbix Server
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docker_service
tests
.gitignore
LICENSE
README.md
docker_stats.py
requirements.txt
zbx_export_templates.xml

README.md

Goal

Monitor resource used by running containers

TODO

  • Get informations about percent used CPU, percent used RAM memory and network
  • Add options to get information from all containers and not only using id container
  • Create DockerService package
  • Write tests for package
  • Create zabbix module
  • Create python package, to install with pip

Requirements

install all libraries (docker-py and py-zabbix)

# pip install -r requirements.txt

install libraries separately

docker-py library

# pip install docker-py

or

# git clone git@github.com:docker/docker-py.git
# cd docker-py
# python setup.py install

py-zabbix library

# pip install py-zabbix

or

# git clone git@github.com:blacked/py-zabbix.git
# cd py-zabbix
# python setup.py install

Debian problem to use pip

To fix this problem

ImportError: cannot import name 'IncompleteRead'

Reinstall pip package

easy_install -U pip

Packages used

  • python 2.7.9
  • docker 1.6
  • zabbix agent and server 2.4

Initial Configuration

Docker host server

# apt-get install zabbix-agent sudo
# git clone git@gitlab.com:Gomex/docker-zabbix.git
# cd docker-docker
# cp *.py /etc/zabbix
# chown -R zabbix /etc/zabbix/
# chmod u+x /etc/zabbix/*.py
# echo 'Defaults:username !requiretty' >> /etc/sudoers
# echo "zabbix ALL=NOPASSWD: /etc/zabbix/docker_stats.py" >> /etc/sudoers
# echo "EnableRemoteCommands=1" >> /etc/zabbix/zabbix_agentd.conf
# echo "Timeout=30" >> /etc/zabbix/zabbix_agentd.conf
# /etc/init.d/zabbix-agent restart

Zabbix server

  1. Import that template
  2. Create a host to your Docker host server and link the template "Template Docker Host"
  3. Wait the containers :P

If you don't have a zabbix server to test

# docker pull berngp/docker-zabbix
# docker run --name zabbix-server -d -P berngp/docker-zabbix

Check which port was mapped to tcp/80

# docker ps | grep "docker-zabbix"

Check which ip was mapped to new zabbix server container and put in your zabbix-agent conf file

# docker inspect zabbix-server | grep -i ipaddress

Using python3

To use python 3 is necessary install pip for python3

# aptitude install python3-pip

And install its requiriments

# pip3 install -r requirements.txt

Debian problem to use pip

To fix this problem

ImportError: cannot import name 'IncompleteRead'

Reinstall pip package

easy_install3 -U pip

Inspiration

I decided create this solution after read that news and used part of code to start my own.