Skillversitas

Docker Monitoring

Monitoring Docker containers to ensure system health and performance.

Docker Stats

# Real-time stats
docker stats

# Stats for specific containers
docker stats api database

# Export stats
docker stats --no-stream --format \
  "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

cAdvisor

# Run cAdvisor
docker run -d \
  --name cadvisor \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:rw \
  -v /sys:/sys:ro \
  -v /var/lib/docker/:/var/lib/docker:ro \
  -p 8080:8080 \
  gcr.io/cadvisor/cadvisor

# Access: http://localhost:8080

Prometheus + Grafana

version: '3.8'

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

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin

  cadvisor:
    image: gcr.io/cadvisor/cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

volumes:
  prometheus-data:
  grafana-data:

Use Case: Application Monitoring

version: '3.8'

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

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana

  cadvisor:
    image: gcr.io/cadvisor/cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

volumes:
  grafana-data:

Everyday Use Case

Case: An admin needs to monitor resources.

# Check the stats
docker stats --no-stream

# Check the logs
docker logs api --tail 100

# Check the health
docker inspect --format='{{.State.Health.Status}}' api

Best Practices

  1. Use cAdvisor: For container monitoring
  2. Prometheus + Grafana: For visual dashboards
  3. Alerting: Set up alerts for specific conditions
  4. Log aggregation: Collect logs into one place

Conclusion

Monitoring is essential for keeping the system healthy. Use cAdvisor and Prometheus + Grafana to monitor Docker containers.