From d4d8e69262278e95b363895ec8db756956b882f6 Mon Sep 17 00:00:00 2001 From: Jordan Ramos Date: Sun, 7 Dec 2025 12:41:22 -0700 Subject: [PATCH] feat(monitoring): add Prometheus/Grafana monitoring stack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Grafana dashboard service (port 3000) - Add Prometheus time-series database (port 9090) - Add PVE Exporter for Proxmox metrics (port 9221) - Deploy on VM 101 (monitoring-docker) at 192.168.2.114 - Configure scraping for Proxmox node 192.168.2.100 - Add docker-compose configurations for all services - Add template files for sensitive credentials (pve.yml.template, .env.template) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- monitoring/grafana/docker-compose.yml | 9 +++++++++ monitoring/prometheus/docker-compose.yml | 8 ++++++++ monitoring/prometheus/prometheus.yml | 17 +++++++++++++++++ monitoring/pve-exporter/.env.template | 1 + monitoring/pve-exporter/docker-compose.yml | 14 ++++++++++++++ monitoring/pve-exporter/pve.yml.template | 4 ++++ 6 files changed, 53 insertions(+) create mode 100644 monitoring/grafana/docker-compose.yml create mode 100644 monitoring/prometheus/docker-compose.yml create mode 100644 monitoring/prometheus/prometheus.yml create mode 100644 monitoring/pve-exporter/.env.template create mode 100644 monitoring/pve-exporter/docker-compose.yml create mode 100644 monitoring/pve-exporter/pve.yml.template diff --git a/monitoring/grafana/docker-compose.yml b/monitoring/grafana/docker-compose.yml new file mode 100644 index 0000000..57beae3 --- /dev/null +++ b/monitoring/grafana/docker-compose.yml @@ -0,0 +1,9 @@ +services: + grafana: + image: grafana/grafana-enterprise + container_name: grafana + restart: unless-stopped + ports: + - "3000:3000" + volumes: + - "/home/server-admin/grafana/grafana-storage:/var/lib/grafana" diff --git a/monitoring/prometheus/docker-compose.yml b/monitoring/prometheus/docker-compose.yml new file mode 100644 index 0000000..08f94a8 --- /dev/null +++ b/monitoring/prometheus/docker-compose.yml @@ -0,0 +1,8 @@ +services: + prometheus: + image: prom/prometheus + volumes: + - "/home/server-admin/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml" + - "/home/server-admin/prometheus/data:/prometheus" + ports: + - 9090:9090 diff --git a/monitoring/prometheus/prometheus.yml b/monitoring/prometheus/prometheus.yml new file mode 100644 index 0000000..8b3f0a4 --- /dev/null +++ b/monitoring/prometheus/prometheus.yml @@ -0,0 +1,17 @@ +scrape_configs: + - job_name: 'pve' + static_configs: + - targets: + - 192.168.2.100 # Proxmox VE Node + metrics_path: /pve + params: + module: [default] + cluster: ['1'] + node: ['1'] + relabel_configs: + - source_labels: [__address__] + target_label: __param_target + - source_labels: [__param_target] + target_label: instance + - target_label: __address__ + replacement: 192.168.2.114:9221 #PVE Exporter Address diff --git a/monitoring/pve-exporter/.env.template b/monitoring/pve-exporter/.env.template new file mode 100644 index 0000000..f53d1fa --- /dev/null +++ b/monitoring/pve-exporter/.env.template @@ -0,0 +1 @@ +PVE_CONFIG_PATH=/path/to/your/pve.yml diff --git a/monitoring/pve-exporter/docker-compose.yml b/monitoring/pve-exporter/docker-compose.yml new file mode 100644 index 0000000..113a06d --- /dev/null +++ b/monitoring/pve-exporter/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3.8' +services: + pve-exporter: + image: prompve/prometheus-pve-exporter:latest + container_name: pve-exporter + ports: + - "9221:9221" + restart: unless-stopped + volumes: + - ${PVE_CONFIG_PATH}:/etc/prometheus/pve.yml:ro + env_file: + - .env + labels: + org.label-schema.group: "monitoring" diff --git a/monitoring/pve-exporter/pve.yml.template b/monitoring/pve-exporter/pve.yml.template new file mode 100644 index 0000000..4661fea --- /dev/null +++ b/monitoring/pve-exporter/pve.yml.template @@ -0,0 +1,4 @@ +default: + user: monitoring@pve + password: YOUR_MONITORING_USER_PASSWORD_HERE + verify_ssl: false