---
services:

  prometheus:
    image: prom/prometheus
    container_name: prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    ports:
      - 9090:9090
    restart: unless-stopped
    volumes:
      - ./configs/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./configs/prometheus_alerts.rules.yaml:/etc/prometheus/rules/alerts.rules.yaml
      - prom_data:/prometheus
  
  alertmanager:
    image: prom/alertmanager
    container_name: alertmanager
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yaml'
    ports:
      - 9093:9093
    restart: unless-stopped
    volumes:
      - ./configs/alertmanager.yaml:/etc/alertmanager/alertmanager.yaml
      - ./configs/alertmanager_alert_templates.tmpl:/etc/alertmanager/templates/alert_templates.tmpl
      - alertmanager_data:/alertmanager

  grafana:
    image: grafana/grafana
    container_name: grafana
    ports:
      - 3000:3000
    restart: unless-stopped
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - "GF_SECURITY_ADMIN_PASSWORD={{ lookup("community.general.passwordstore", "noc/vm-secrets/chaosknoten/grafana/GF_SECURITY_ADMIN_PASSWORD", create=false, missing="error") }}"
    volumes:
      - ./configs/grafana.ini:/etc/grafana/grafana.ini
      - ./configs/grafana-datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml
      - graf_data:/var/lib/grafana

  pve-exporter:
    image: prompve/prometheus-pve-exporter
    container_name: pve-exporter
    ports:
      - 9221:9221
    restart: unless-stopped
    environment:
      - PVE_USER=grafana@pve
      - "PVE_PASSWORD={{ lookup("community.general.passwordstore", "noc/vm-secrets/chaosknoten/grafana/prometheus-exporter", create=false, missing="error") }}"
      - PVE_VERIFY_SSL=false
    volumes:
      - /dev/null:/etc/prometheus/pve.yml


volumes:
  graf_data: {}
  prom_data: {}
  alertmanager_data: {}