hopsoft
docker-graphite-statsd
Python

Docker image for Graphite & Statsd

Last updated Apr 17, 2026
867
Stars
299
Forks
35
Issues
0
Stars/day
Attention Score
65
Language breakdown
Python 65.3%
Dockerfile 18.9%
Shell 13.6%
JavaScript 2.3%
Files click to expand
README

Table of Contents

- Get Graphite & Statsd running instantly - Quick Start - Includes the following components - Mapped Ports - Mounted Volumes - Base Image - Start Using Graphite & Statsd - Send Some Stats - Visualize the Data - Secure the Django Admin - Change the Configuration - Statsd Admin Management Interface - Secure Grafana - Connect Grafana to Graphite - A Note on Volumes - Memcached config - Additional Reading - Contributors

Docker Pulls

NOTICE: Check out the official Graphite & Statsd Docker image at https://github.com/graphite-project/docker-graphite-statsd

Docker Image for Graphite & Statsd

Get Graphite & Statsd running instantly

Graphite & Statsd can be complex to setup. This image will have you running & collecting stats in just a few minutes.

Quick Start

docker run -d\
 --name graphite\
 --restart=always\
 -p 80:80\
 -p 81:81\
 -p 2003-2004:2003-2004\
 -p 2023-2024:2023-2024\
 -p 8125:8125/udp\
 -p 8126:8126\
 hopsoft/graphite-statsd

This starts a Docker container named: graphite

That's it, you're done ... almost.

Includes the following components

  • Nginx - reverse proxies the graphite dashboard
  • Graphite - front-end dashboard
  • Carbon - back-end
  • Statsd - UDP based back-end proxy
  • Grafana - front-end dashboard (more refined than Graphite)

Mapped Ports

Host | Container | Service ---- | --------- | ------------------------------------------------------------------------------------------------------------------- 80 | 80 | nginx - grafana 81 | 81 | nginx - graphite 2003 | 2003 | carbon receiver - plaintext 2004 | 2004 | carbon receiver - pickle 2023 | 2023 | carbon aggregator - plaintext 2024 | 2024 | carbon aggregator - pickle 8125 | 8125 | statsd 8126 | 8126 | statsd admin

By default, statsd listens on the UDP port 8125. If you want it to listen on the TCP port 8125 instead, you can set the environment variable STATSD_INTERFACE to tcp when running the container.

Mounted Volumes

Host | Container | Notes ----------------- | -------------------------- | ------------------------------- DOCKER ASSIGNED | /opt/graphite/conf | graphite config DOCKER ASSIGNED | /opt/graphite/storage | graphite stats storage DOCKER ASSIGNED | /etc/grafana | grafana config DOCKER ASSIGNED | /etc/nginx | nginx config DOCKER ASSIGNED | /opt/statsd | statsd config DOCKER ASSIGNED | /etc/logrotate.d | logrotate config DOCKER ASSIGNED | /var/log | log files

Base Image

Built using Phusion's base image.

  • All Graphite related processes are run as daemons & monitored with runit.
  • Includes additional services such as logrotate.

Start Using Graphite & Statsd

Send Some Stats

Let's fake some stats with a random counter to prove things are working.

while true; do echo -n "example:$((RANDOM % 100))|c" | nc -w 1 -u 127.0.0.1 8125; done

Visualize the Data

Open Graphite in a browser.

  • http://localhost:81/dashboard
  • http://localhost:81/render?from=-10mins&until=now&target=stats.example

Secure the Django Admin

Update the default Django admin user account. The default is insecure.

* username: root * password: root * email: root.graphite@mailinator.com

First login at: http://localhost:81/account/login Then update the root user's profile at: http://localhost:81/admin/auth/user/1/

Change the Configuration

Read up on Graphite's post-install tasks. Focus on the storage-schemas.conf.

  • Stop the container docker stop graphite.
  • Find the configuration files on the host by inspecting the container docker inspect graphite.
  • Update the desired config files.
  • Restart the container docker start graphite.
Note: If you change settings in /opt/graphite/conf/storage-schemas.conf be sure to delete the old whisper files under /opt/graphite/storage/whisper/.

Important: Ensure your Statsd flush interval is at least as long as the highest-resolution retention. For example, if /opt/statsd/config.js looks like this.

flushInterval: 10000

Ensure that storage-schemas.conf retentions are no finer grained than 10 seconds.

[all]
pattern = .*
retentions = 5s:12h # WRONG
retentions = 10s:12h # OK
retentions = 60s:12h # OK

Statsd Admin Management Interface

A management interface (default on port 8126) allows you to manage statsd & retrieve stats.

# show all current counters
echo counters | nc localhost 8126

More info & additional commands.

Secure Grafana

Update the default Grafana admin account. The default is insecure.

* username: admin * password: admin * email: admin@localhost

First login at: http://localhost Then update the admin user's profile at: http://localhost/admin/users/edit/1

Connect Grafana to Graphite

Visit http://localhost/datasources/new Then configure the Graphite data source with the URL http://localhost:81

A Note on Volumes

You may find it useful to mount explicit volumes so configs & data can be managed from a known location on the host.

Simply specify the desired volumes when starting the container.

docker run -d\
 --name graphite\
 --restart=always\
 -v /path/to/graphite/configs:/opt/graphite/conf\
 -v /path/to/graphite/data:/opt/graphite/storage\
 -v /path/to/statsd:/opt/statsd\
 hopsoft/graphite-statsd

Note: The container will initialize properly if you mount empty volumes at /opt/graphite, /opt/graphite/conf, /opt/graphite/storage, or /opt/statsd

Memcached config

If you want Graphite to use an existing Memcached server, set the following environment variables:

docker run -d\
 --name graphite\
 --restart=always\
 -p 80:80\
 -p 2003-2004:2003-2004\
 -p 2023-2024:2023-2024\
 -p 8125:8125/udp\
 -p 8126:8126\
 -e "MEMCACHE_HOST=127.0.0.1:11211"\  # Memcached host(s) comma delimited
 -e "CACHE_DURATION=60"\              # in seconds
 hopsoft/graphite-statsd

Additional Reading

Contributors

Build the image yourself.

  • git clone https://github.com/hopsoft/docker-graphite-statsd.git
  • docker build -t hopsoft/graphite-statsd .
🔗 More in this category

© 2026 GitRepoTrend · hopsoft/docker-graphite-statsd · Updated daily from GitHub