diff --git a/apps/monitoring/docker-compose.monitoring.yml b/apps/monitoring/docker-compose.monitoring.yml new file mode 100644 index 0000000..477075f --- /dev/null +++ b/apps/monitoring/docker-compose.monitoring.yml @@ -0,0 +1,70 @@ +# Monitoring stack — Prometheus + postgres-exporter + Grafana +# Start: cd monitoring && docker compose up -d --build +# UI: Grafana http://192.168.1.211:3002 · Prometheus http://192.168.1.211:9090 + +services: + prometheus: + image: prom/prometheus:v2.53.2 + container_name: prometheus-homelab + restart: unless-stopped + ports: + - "9090:9090" + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro + - ./prometheus/targets:/etc/prometheus/targets:ro + - prometheus-homelab-data:/prometheus + command: + - --config.file=/etc/prometheus/prometheus.yml + - --storage.tsdb.path=/prometheus + - --web.enable-lifecycle + extra_hosts: + - "host.docker.internal:host-gateway" + networks: + - homelab-monitor + + postgres-exporter: + image: prometheuscommunity/postgres-exporter:latest + container_name: postgres-exporter + restart: unless-stopped + ports: + - "9187:9187" + environment: + DATA_SOURCE_NAME: "postgresql://mo:${PG_PASSWORD:-WaQTUw2t}@192.168.1.105:5433/homelab?sslmode=disable" + networks: + - homelab-monitor + + grafana: + build: + context: .. + dockerfile: Dockerfile.grafana + image: grafana-homelab:latest + container_name: grafana-homelab + restart: unless-stopped + ports: + - "3002:3000" + environment: + GF_SECURITY_ADMIN_USER: admin + GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:-WaQTUw2t} + GF_USERS_DEFAULT_THEME: dark + GF_SERVER_ROOT_URL: http://192.168.1.211:3002 + PG_USER: mo + PG_DATABASE: homelab + HOMELAB_PG_PASSWORD: ${PG_PASSWORD:-WaQTUw2t} + volumes: + - grafana-homelab-data:/var/lib/grafana + - ../grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro + - ../grafana/dashboards/homelab:/var/lib/grafana/dashboards/homelab:ro + - ../grafana/dashboards/imported:/var/lib/grafana/dashboards/imported:ro + depends_on: + - prometheus + networks: + - homelab-monitor + +volumes: + prometheus-homelab-data: + grafana-homelab-data: + +networks: + homelab-monitor: + name: homelab-monitor + driver: bridge diff --git a/apps/monitoring/prometheus.yml b/apps/monitoring/prometheus.yml index f8d9a56..0c24056 100644 --- a/apps/monitoring/prometheus.yml +++ b/apps/monitoring/prometheus.yml @@ -1,4 +1,4 @@ -# Prometheus — scrape targets op Docker bridge (naast postgres-homelab, neo4j, …). +# Prometheus — homelab metrics (NAS stack scrapet LAN + bridge targets). global: scrape_interval: 15s evaluation_interval: 15s @@ -10,35 +10,29 @@ scrape_configs: - job_name: postgres-exporter static_configs: - - targets: ["postgres-exporter-homelab:9187"] + - targets: ["postgres-exporter:9187"] labels: instance: postgres-vm102 - # Neo4j 4.4+ enterprise metrics.prometheus.enabled → endpoint op poort 2004 - - job_name: neo4j - scrape_interval: 30s - metrics_path: /metrics - static_configs: - - targets: ["192.168.1.105:2004"] - labels: - instance: neo4j + # Neo4j Community 2026 heeft geen Prometheus :2004 — gebruik Neo4j dashboard via Postgres/Grafana SQL. + # Enterprise: zet server.metrics.prometheus.enabled=true en scrape :2004. - # Proxmox VE — prometheus-pve-exporter; vul monitoring/prometheus/targets/extra.yml - - job_name: proxmox-pve + - job_name: node-exporter + scrape_interval: 30s + static_configs: + - targets: ["192.168.1.105:9100"] + labels: + instance: vm102-postgress + role: security + - targets: ["192.168.1.211:9100"] + labels: + instance: synology-nas + role: nas + + # Proxmox: vul targets in prometheus/targets/extra.yml (prometheus-pve-exporter :9221) + - job_name: proxmox scrape_interval: 30s file_sd_configs: - files: - /etc/prometheus/targets/extra.yml refresh_interval: 1m - - # Synology / SNMP: zet targets in monitoring/prometheus/targets/snmp.yml en uncomment hieronder. - # - job_name: snmp - # scrape_interval: 60s - # metrics_path: /snmp - # params: - # module: [synology] - # static_configs: - # - targets: - # - 192.168.1.211 - # labels: - # job: snmp-nas