Monitor Docker Containers with Grafana (Complete Step-by-Step Guide)

Monitoring Docker containers is critical for performance, uptime, and scalability. Without proper monitoring, you won’t know when containers crash, consume excessive resources, or slow down your applications.

That’s where Grafana + Prometheus + cAdvisor comes in.

In this guide, you’ll learn how to monitor Docker containers using Grafana, visualize metrics, and set alerts like a pro.

If you prefer skipping server setup and want managed infrastructure:

👉 Best Cloud Hosting Deals:

The Ultimate Managed Hosting Platform

Why Monitoring Docker is Important

Docker makes deployments easy, but monitoring becomes harder because:

  • Containers are ephemeral
  • Logs rotate quickly
  • Resource usage fluctuates
  • Failures can go unnoticed

Key Benefits of Monitoring

  • Track CPU, RAM, disk, and network
  • Detect failures instantly
  • Improve performance
  • Reduce downtime
  • Scale intelligently

Tools Overview

1. Grafana

  • Visualization tool
  • Beautiful dashboards
  • Alerts and notifications

2. Prometheus

  • Metrics collection
  • Time-series database
  • Query language (PromQL)

3. cAdvisor

  • Container metrics exporter
  • Tracks CPU, memory, filesystem

Architecture Overview

Docker Containers → cAdvisor → Prometheus → Grafana Dashboard

Prerequisites

  • Ubuntu 24.04 server
  • Docker installed
  • 2GB+ RAM recommended
  • Open ports: 3000, 9090

Step 1: Create Monitoring Directory

mkdir docker-monitoring && cd docker-monitoring

Step 2: Create Docker Compose File

nano docker-compose.yml

Paste:

version: '3'

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    ports:
      - "8080:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - "3000:3000"

Step 3: Create Prometheus Config

nano prometheus.yml

Paste:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']

Step 4: Start Monitoring Stack

docker compose up -d

Step 5: Access Services

  • Prometheus → http://YOUR_IP:9090
  • Grafana → http://YOUR_IP:3000

Default Grafana login:

admin / admin

Step 6: Add Prometheus Data Source in Grafana

  • Go to Settings → Data Sources
  • Add Prometheus
  • URL: http://prometheus:9090
  • Save & Test

Step 7: Import Docker Dashboard

In Grafana:

  • Go to Dashboards → Import
  • Use dashboard ID: 193 or 1860

Now you’ll see:

  • CPU usage
  • Memory usage
  • Network traffic
  • Container health

Key Metrics Explained

CPU Usage

container_cpu_usage_seconds_total

Tracks how much CPU a container uses.


Memory Usage

container_memory_usage_bytes

Helps detect memory leaks.


Network Traffic

container_network_receive_bytes_total

Tracks incoming/outgoing traffic.


Setting Alerts in Grafana

Example: High CPU Alert

  • Condition: CPU > 80%
  • Duration: 2 minutes

Grafana will notify via:

  • Email
  • Slack
  • Webhooks

Advanced Monitoring Setup

Add Node Exporter

docker run -d -p 9100:9100 prom/node-exporter

Add Alertmanager

  • Handles alerts from Prometheus
  • Sends notifications

Best Practices

1. Use Persistent Storage

Store Grafana data:

volumes:
  - grafana-storage:/var/lib/grafana

2. Secure Your Stack

  • Use HTTPS
  • Add authentication
  • Restrict ports

3. Monitor Logs Too

Combine with logging tools like ELK stack.


Common Issues & Fixes

Grafana not loading

docker logs grafana

Prometheus not scraping

Check targets:

http://YOUR_IP:9090/targets

No data in dashboards

  • Verify cAdvisor is running
  • Check Prometheus config

When to Use Managed Monitoring

Setting this up manually takes time.

Instead, use:

👉 Cloud Hosting with built-in monitoring:

The Ultimate Managed Hosting Platform

Conclusion

Monitoring Docker containers with Grafana gives you:

  • Real-time visibility
  • Better performance insights
  • Faster troubleshooting

Once set up, it becomes your control center for containers.

👉 Start faster with managed platforms:

The Ultimate Managed Hosting Platform

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *