143 lines
3.9 KiB
Django/Jinja
143 lines
3.9 KiB
Django/Jinja
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:
|