Files
Distributed-Prometheus/central-server/docker-compose.yml
Super User 95a09fd9d8 完善中央与边缘部署、远程写入与监控文档
- 增加中央与边缘完整配置和部署脚本
- 引入 VictoriaMetrics 数据源与 remote_write 故障排查说明
- 新增 edge-agent 配置脚本、ONVIF 自建 exporter 与 ping 监控示例

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 04:24:40 -05:00

90 lines
3.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
# 中央Prometheus服务器
prometheus-central:
image: prom/prometheus:latest
container_name: prometheus-central
restart: unless-stopped
ports:
- "${PROMETHEUS_PORT:-9091}:9090"
volumes:
- ${PROMETHEUS_DATA_DIR:-./data/prometheus-data}:/prometheus
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./alert_rules.yml:/etc/prometheus/alert_rules.yml:ro
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- "--storage.tsdb.retention.time=${PROMETHEUS_RETENTION_TIME:-30d}"
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
labels:
- "traefik.enable=${TRAEFIK_ENABLED:-true}"
- "traefik.http.routers.prometheus.rule=Host(`${PROMETHEUS_DOMAIN:-prometheus.example.com}`)"
- "traefik.http.routers.prometheus.entrypoints=${TRAEFIK_ENTRYPOINT:-web}"
- "traefik.http.routers.prometheus.service=prometheus"
- "traefik.http.services.prometheus.loadbalancer.server.port=9090"
- "traefik.docker.network=${TRAEFIK_NETWORK:-traefik}"
# Grafana仪表板
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "${GRAFANA_PORT:-3000}:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin123}
- GF_METRICS_ENABLED=true
- GF_METRICS_BASIC_AUTH_ENABLED=false
- GF_DEFAULT_LANGUAGE=${GRAFANA_DEFAULT_LANGUAGE:-zh-Hans}
- GF_USERS_DEFAULT_THEME=${GRAFANA_DEFAULT_THEME:-light}
# 配置 Grafana 的根 URL用于 Traefik 反向代理)
- GF_SERVER_ROOT_URL=${GRAFANA_ROOT_URL:-http://localhost:3000}
volumes:
- ${GRAFANA_DATA_DIR:-./data/grafana-data}:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
- ./grafana/dashboards:/var/lib/grafana/dashboards
labels:
- "traefik.enable=${TRAEFIK_ENABLED:-true}"
- "traefik.http.routers.grafana.rule=Host(`${GRAFANA_DOMAIN:-grafana.example.com}`)"
- "traefik.http.routers.grafana.entrypoints=${TRAEFIK_ENTRYPOINT:-web}"
- "traefik.http.routers.grafana.service=grafana"
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
- "traefik.docker.network=${TRAEFIK_NETWORK:-traefik}"
# Alertmanager告警管理
alertmanager:
image: prom/alertmanager:latest
container_name: alertmanager
restart: unless-stopped
ports:
- "${ALERTMANAGER_PORT:-9093}:9093"
volumes:
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
labels:
- "traefik.enable=${TRAEFIK_ENABLED:-true}"
- "traefik.http.routers.alertmanager.rule=Host(`${ALERTMANAGER_DOMAIN:-alertmanager.example.com}`)"
- "traefik.http.routers.alertmanager.entrypoints=${TRAEFIK_ENTRYPOINT:-web}"
- "traefik.http.routers.alertmanager.service=alertmanager"
- "traefik.http.services.alertmanager.loadbalancer.server.port=9093"
- "traefik.docker.network=${TRAEFIK_NETWORK:-traefik}"
# 远程写入接收器 (VictoriaMetrics)
victoria-metrics:
image: victoriametrics/victoria-metrics:latest
container_name: victoria-metrics
restart: unless-stopped
ports:
- "${VICTORIAMETRICS_PORT:-8428}:8428"
volumes:
- ${VICTORIAMETRICS_DATA_DIR:-./data/victoria-metrics-data}:/victoria-metrics-data
command:
- '--storageDataPath=/victoria-metrics-data'
- "--retentionPeriod=${VICTORIAMETRICS_RETENTION_PERIOD:-30d}"
- "--httpListenAddr=:${VICTORIAMETRICS_PORT:-8428}"
# 定义网络配置(默认使用已存在的 traefik 网络)
networks:
default:
name: ${NETWORK_NAME:-traefik}
external: ${EXTERNAL_NETWORK:-true}