docker-compose.yml
root@ip-172-31-37-11:~/graphite-linux-demo# more docker-compose.yml
version: "3.8"
services:
graphite:
image: graphiteapp/graphite-statsd:latest
container_name: graphite
restart: unless-stopped
ports:
- "8080:80" # Graphite Web UI
- "2003:2003" # Carbon plaintext TCP
- "2004:2004" # Carbon pickle
- "8125:8125/udp" # StatsD UDP
- "8126:8126" # StatsD admin
volumes:
- graphite_data:/opt/graphite/storage
- ./storage-schemas.conf:/opt/graphite/conf/storage-schemas.conf
telegraf:
image: telegraf:latest
container_name: telegraf
restart: unless-stopped
depends_on:
- graphite
user: root
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- /:/hostfs:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
HOST_MOUNT_PREFIX: /hostfs
volumes:
graphite_data:
root@ip-172-31-37-11:~/graphite-linux-demo# Code language: PHP (php)
root@ip-172-31-37-11:~/graphite-linux-demo# more storage-schemas.conf
[telegraf]
pattern = ^telegraf\.
retentions = 10s:1d,1m:7d,10m:30d
[default]
pattern = .*
retentions = 10s:1d,1m:7d,10m:30d
root@ip-172-31-37-11:~/graphite-linux-demo# Code language: PHP (php)
root@ip-172-31-37-11:~/graphite-linux-demo# more telegraf.conf
[agent]
interval = "10s"
round_interval = true
hostname = "linux-demo"
omit_hostname = false
[[outputs.graphite]]
servers = ["graphite:2003"]
prefix = "telegraf"
template = "host.measurement.field"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = true
[[inputs.mem]]
[[inputs.swap]]
[[inputs.system]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs", "nsfs", "cgroup", "cgroup2"]
[[inputs.net]]
[[inputs.kernel]]
[[inputs.processes]]
root@ip-172-31-37-11:~/graphite-linux-demo# Code language: PHP (php)
Commands to run all setup
docker-compose up -d
docker exec -it graphite find /opt/graphite/storage/whisper/telegraf -type f | head -20
docker exec -it graphite find /opt/graphite/storage/whisper/telegraf -type f | sed 's#/opt/graphite/storage/whisper/##; s#/#.#g; s#.wsp$##' | sortCode language: JavaScript (javascript)
root@ip-172-31-37-11:~/graphite-linux-demo# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7345a01ea59 telegraf:latest "/entrypoint.sh teleโฆ" 3 days ago Up 3 days 8092/udp, 8125/udp, 8094/tcp telegraf
5d1ad13e09fd graphiteapp/graphite-statsd:latest "/entrypoint" 3 days ago Up 3 days 2013-2014/tcp, 2023-2024/tcp, 8080/tcp, 0.0.0.0:2003-2004->2003-2004/tcp, [::]:2003-2004->2003-2004/tcp, 0.0.0.0:8126->8126/tcp, [::]:8126->8126/tcp, 8125/tcp, 0.0.0.0:8125->8125/udp, [::]:8125->8125/udp, 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp graphite
root@ip-172-31-37-11:~/graphite-linux-demo# Code language: PHP (php)
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services โ all in one place.
Explore Hospitals
Really useful guide for anyone working with Graphite monitoring. The instructions are simple, clear, and easy to follow.