Files
homelab-docs/infrastructure/prometheus-config.yml

241 lines
7.4 KiB
YAML

# Prometheus Configuration for Fred's Homelab
# Last Updated: 2025-12-25
#
# Installation Instructions:
# 1. Install node_exporter on each host you want to monitor
# 2. Copy this file to 10.0.10.25:/etc/prometheus/prometheus.yml
# 3. Restart Prometheus: systemctl restart prometheus
# 4. Verify targets: http://10.0.10.25:9090/targets
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
environment: 'homelab'
datacenter: 'home'
# Alertmanager configuration (optional - configure later)
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load alerting rules
rule_files:
# - "/etc/prometheus/alerts/*.yml"
scrape_configs:
# ====================================
# Prometheus Self-Monitoring
# ====================================
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
labels:
app: 'prometheus'
instance: 'prometheus-main'
# ====================================
# Proxmox Hosts (Node Exporters)
# ====================================
# Install: apt install prometheus-node-exporter
- job_name: 'proxmox-nodes'
static_configs:
- targets: ['10.0.10.2:9100'] # pve-router (i5)
labels:
hostname: 'pve-router'
role: 'proxmox-host'
location: 'office'
- targets: ['10.0.10.3:9100'] # main-pve (DL380p)
labels:
hostname: 'main-pve'
role: 'proxmox-host'
location: 'remote'
- targets: ['10.0.10.4:9100'] # backup-pve
labels:
hostname: 'backup-pve'
role: 'proxmox-host'
location: 'storage'
# ====================================
# Proxmox VE API Metrics (Proxmox Exporter)
# ====================================
# Optional: Install https://github.com/prometheus-pve/prometheus-pve-exporter
# This gives you VM/CT specific metrics
# - job_name: 'proxmox-api'
# static_configs:
# - targets: ['10.0.10.25:9221'] # Run pve_exporter on prometheus host
# labels:
# exporter: 'pve_exporter'
# ====================================
# VPS (Node Exporter)
# ====================================
# Install on VPS: apt install prometheus-node-exporter
- job_name: 'vps'
static_configs:
- targets: ['66.63.182.168:9100'] # VPS external IP
labels:
hostname: 'vps-hv'
role: 'vps'
provider: 'hudson-valley-host'
# ====================================
# Gaming PC / HOMELAB-COMMAND
# ====================================
# Windows: Use windows_exporter
# https://github.com/prometheus-community/windows_exporter
- job_name: 'gaming-pc'
static_configs:
- targets: ['10.0.10.10:9182'] # windows_exporter default port
labels:
hostname: 'HOMELAB-COMMAND'
role: 'workstation'
os: 'windows-11'
# ====================================
# Databases
# ====================================
# PostgreSQL Exporter
# Install: https://github.com/prometheus-community/postgres_exporter
- job_name: 'postgresql'
static_configs:
- targets: ['10.0.10.20:9187']
labels:
hostname: 'postgresql'
role: 'database'
app: 'postgres'
# ====================================
# Application Services
# ====================================
# Authentik (built-in metrics)
- job_name: 'authentik'
metrics_path: '/application/o/prometheus-outpost/metrics/'
static_configs:
- targets: ['10.0.10.21:9000']
labels:
app: 'authentik'
role: 'sso'
# n8n (if metrics enabled)
# - job_name: 'n8n'
# static_configs:
# - targets: ['10.0.10.22:5678']
# labels:
# app: 'n8n'
# Home Assistant (via integration)
# https://www.home-assistant.io/integrations/prometheus/
- job_name: 'homeassistant'
metrics_path: '/api/prometheus'
bearer_token: 'YOUR_LONG_LIVED_ACCESS_TOKEN' # Create in HA: Profile -> Long-Lived Access Tokens
static_configs:
- targets: ['10.0.10.24:8123']
labels:
app: 'homeassistant'
role: 'automation'
# Caddy (metrics built-in, needs admin API enabled)
# - job_name: 'caddy'
# static_configs:
# - targets: ['66.63.182.168:2019'] # Caddy admin API
# labels:
# app: 'caddy'
# role: 'reverse-proxy'
# ====================================
# Network Devices
# ====================================
# UCG Ultra (SNMP Exporter)
# https://github.com/prometheus/snmp_exporter
# - job_name: 'unifi-gateway'
# static_configs:
# - targets: ['10.0.10.1']
# labels:
# device: 'ucg-ultra'
# role: 'gateway'
# ====================================
# Storage
# ====================================
# OpenMediaVault Node Exporter
- job_name: 'storage'
static_configs:
- targets: ['10.0.10.5:9100']
labels:
hostname: 'openmediavault'
role: 'storage'
capacity: '12tb'
# ====================================
# Blackbox Exporter (Endpoint Monitoring)
# ====================================
# Optional: Monitor HTTP endpoints, SSL certs, DNS, etc.
# https://github.com/prometheus/blackbox_exporter
# - job_name: 'blackbox-http'
# metrics_path: /probe
# params:
# module: [http_2xx]
# static_configs:
# - targets:
# - https://auth.nianticbooks.com
# - https://freddesk.nianticbooks.com
# - https://bob.nianticbooks.com
# relabel_configs:
# - source_labels: [__address__]
# target_label: __param_target
# - source_labels: [__param_target]
# target_label: instance
# - target_label: __address__
# replacement: localhost:9115 # Blackbox exporter address
# ====================================
# Installation Quick Reference
# ====================================
#
# Node Exporter (Debian/Ubuntu):
# apt update && apt install prometheus-node-exporter -y
# systemctl enable prometheus-node-exporter
# systemctl start prometheus-node-exporter
# # Verify: curl http://localhost:9100/metrics
#
# Node Exporter (Manual install):
# wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
# tar xvfz node_exporter-*.tar.gz
# sudo mv node_exporter-*/node_exporter /usr/local/bin/
# sudo useradd -rs /bin/false node_exporter
#
# # Create systemd service: /etc/systemd/system/node_exporter.service
# sudo systemctl daemon-reload
# sudo systemctl enable node_exporter
# sudo systemctl start node_exporter
#
# Windows Exporter:
# Download: https://github.com/prometheus-community/windows_exporter/releases
# Install MSI package
# Verify: http://localhost:9182/metrics
#
# PostgreSQL Exporter:
# apt install prometheus-postgres-exporter -y
# # Configure connection in /etc/default/prometheus-postgres-exporter
# # DATA_SOURCE_NAME="postgresql://user:pass@localhost:5432/postgres?sslmode=disable"
#
# Home Assistant Prometheus Integration:
# 1. Settings -> Devices & Services -> Add Integration
# 2. Search "Prometheus"
# 3. Configure
# 4. Create long-lived access token: Profile -> Security -> Long-Lived Access Tokens