This repository provides a full Docker-based monitoring stack to manage 10 Linux containers and monitor their system resources using Prometheus, Grafana, Node Exporter, and cAdvisor.
- 10 Linux containers running Node Exporter to simulate monitored hosts
- cAdvisor for Docker container metrics
- Prometheus for collecting metrics
- Grafana for visualization
- Persistent storage for Prometheus and Grafana
- Pre-built Grafana dashboards (JSON file included)
- Docker & Docker Compose — container orchestration
- Prometheus — metrics collection and alerting
- Grafana — visualization and dashboards
- Node Exporter — system-level metrics (CPU, RAM, disk, services, users)
- cAdvisor — container resource metrics
git clone https://github.com/sameeralam3127/monitoring.git
cd monitoring
docker --version
docker-compose --version
docker-compose up -d --build
This will:
- Build
linux_system
images with Node Exporter - Start 10 Linux containers
- Start Prometheus, Grafana, and cAdvisor
Service | URL | Login |
---|---|---|
Grafana | http://localhost:3000 | admin / admin |
Prometheus | http://localhost:9090 | N/A |
cAdvisor | http://localhost:8080 | N/A |
-
Log in to Grafana at http://localhost:3000 Username:
admin
Password:admin
-
Add Prometheus as a data source:
- URL:
http://prometheus:9090
- URL:
-
Import Dashboard:
- Navigate to Dashboards → Import
- Upload the provided JSON file in
grafana/dashboard.json
-
CPU Usage (per container):
rate(node_cpu_seconds_total{mode="user"}[5m])
-
Memory Usage:
node_memory_Active_bytes / node_memory_MemTotal_bytes * 100
-
Running Services (systemd):
node_systemd_unit_state{state="active"}
-
Failed Services:
node_systemd_unit_state{state="failed"}
-
Logged-in Users:
node_users_logged_in
-
Docker Container CPU Usage (from cAdvisor):
rate(container_cpu_usage_seconds_total{name=~".+"}[5m])
-
Prometheus target down
-
Check Prometheus targets at http://localhost:9090/targets
-
Verify container is running:
docker ps
-
Restart service:
docker-compose restart prometheus
-
-
Grafana not saving dashboards
-
Ensure
grafana_data
volume is correctly mounted -
Restart Grafana:
docker-compose restart grafana
-
-
cAdvisor not accessible
-
Check logs:
docker logs cadvisor
-
- Each Linux container exposes Node Exporter on a unique port (
9101
…9110
) - Prometheus config is in
prometheus/prometheus.yml
- All services use persistent volumes
MIT License