networks: monitoring: external: false services: prometheus: image: docker.io/prom/prometheus container_name: prometheus restart: always ports: - '127.0.0.1:9090:9090' volumes: - prometheus-data:/prometheus - /opt/beeserver/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.path=/prometheus - --storage.tsdb.retention.time=90d - --web.enable-lifecycle {% if prometheus_admin_api | default(false) %} - --web.enable-admin-api {% endif %} networks: - monitoring grafana: image: docker.io/grafana/grafana container_name: grafana restart: always ports: - '127.0.0.1:4000:4000' volumes: - grafana-storage:/var/lib/grafana - /opt/beeserver/monitoring/grafana/provisioning:/etc/grafana/provisioning:ro - /opt/beeserver/monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro - /opt/beeserver/monitoring/grafana/dashboards-general:/var/lib/grafana/dashboards-general:ro environment: - GF_SECURITY_SECRET_KEY={{ grafana_secret }} - GF_SERVER_DOMAIN=grafana.secretbee.buzz - GF_SERVER_ROOT_URL=https://grafana.secretbee.buzz/ - GF_SERVER_HTTP_PORT=4000 - GF_SERVER_PROTOCOL=HTTP - GF_INSTALL_PLUGINS=yesoreyeram-infinity-datasource - GF_UNIFIED_ALERTING_ENABLED=true networks: - monitoring loki: image: docker.io/grafana/loki container_name: loki ports: - '127.0.0.1:3100:3100' - '{{ wireguard_beepi_ip }}:3100:3100' - '127.0.0.1:9096:9096' volumes: - loki-data:/loki - /opt/beeserver/monitoring/local-config.yml:/etc/loki/local-config.yaml command: -config.file=/etc/loki/local-config.yaml restart: always networks: - monitoring alloy: image: docker.io/grafana/alloy:v1.17.1 pull_policy: always container_name: alloy ports: - '127.0.0.1:12345:12345' volumes: - /opt/beeserver/monitoring/config.alloy:/etc/alloy/config.alloy - /opt/beeserver/monitoring/database:/opt/database - /var/log:/var/log:ro - /run/log/journal:/run/log/journal:ro - /var/log/journal:/var/log/journal:ro - /etc/machine-id:/etc/machine-id:ro - alloy-data:/var/lib/alloy/data command: - run - /etc/alloy/config.alloy - --storage.path=/var/lib/alloy/data - --server.http.listen-addr=0.0.0.0:12345 - --stability.level=experimental networks: - monitoring restart: always podman-exporter: image: quay.io/navidys/prometheus-podman-exporter:v1.21.2 container_name: podman-exporter pull_policy: always restart: always user: root ports: - '127.0.0.1:9882:9882' volumes: - /run/podman/podman.sock:/run/podman/podman.sock environment: - CONTAINER_HOST=unix:///run/podman/podman.sock security_opt: - label=disable networks: - monitoring blackbox: image: docker.io/prom/blackbox-exporter container_name: blackbox restart: always network_mode: host volumes: - /opt/beeserver/monitoring/blackbox.yml:/etc/blackbox_exporter/config.yml command: - --config.file=/etc/blackbox_exporter/config.yml - --web.listen-address=0.0.0.0:9115 extra_hosts: {% for service in monitored_services %} {% if service.vhost is defined %} - '{{ service.vhost }}:127.0.0.1' {% endif %} {% endfor %} topology: image: docker.io/library/python:3-alpine container_name: topology restart: always ports: - '127.0.0.1:8088:8088' volumes: - /opt/beeserver/monitoring/topology:/app:ro command: - python - /app/topology.py environment: - PROMETHEUS_URL=http://prometheus:9090 - LISTEN_PORT=8088 networks: - monitoring volumes: prometheus-data: grafana-storage: loki-data: alloy-data: