136 lines
4.4 KiB
YAML
136 lines
4.4 KiB
YAML
# chat-deploy 可观测性组件部署配置
|
||
# 用于向 itom-platform 可观测中心推送日志和指标
|
||
#
|
||
# 使用方法:
|
||
# 1. 复制 config.env.example 为 config.env 并修改配置
|
||
# 2. 启动服务:docker compose --env-file config.env -f docker-compose-observability.yaml up -d
|
||
# 3. 如需启用指标采集:docker compose --env-file config.env -f docker-compose-observability.yaml --profile metrics up -d
|
||
|
||
services:
|
||
# ==============================
|
||
# 日志采集(Promtail)
|
||
# 采集 Docker 容器日志并推送到 itom-platform 的 Loki
|
||
# ==============================
|
||
promtail:
|
||
image: "${PROMTAIL_IMAGE:-grafana/promtail:3.0.0}"
|
||
container_name: chat-deploy-promtail
|
||
restart: always
|
||
user: "0"
|
||
command: ["-config.file=/etc/promtail/config.yml", "-config.expand-env=true"]
|
||
# 禁用 promtail 自身的日志输出到 Docker,避免日志循环
|
||
logging:
|
||
driver: "none"
|
||
environment:
|
||
- LOKI_URL=${LOKI_URL}
|
||
- OBS_AUTH_TOKEN=${OBS_AUTH_TOKEN}
|
||
- OBS_PROJECT=${OBS_PROJECT}
|
||
- OBS_SERVICE=${OBS_SERVICE}
|
||
- DOCKER_API_VERSION=${DOCKER_API_VERSION:-1.44}
|
||
volumes:
|
||
- /var/lib/docker/containers:/var/lib/docker/containers:ro
|
||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||
- ./config/promtail.yaml:/etc/promtail/config.yml:ro
|
||
networks:
|
||
- chat-deploy-obs
|
||
|
||
# ==============================
|
||
# 指标采集(Prometheus Agent Remote Write)
|
||
# 可选,需要 --profile metrics 启用
|
||
# ==============================
|
||
prometheus-agent:
|
||
profiles: ["metrics"]
|
||
image: prom/prometheus:latest
|
||
container_name: chat-deploy-prometheus-agent
|
||
restart: always
|
||
user: "0"
|
||
command:
|
||
- "--config.file=/prometheus/prometheus.yml"
|
||
- "--storage.tsdb.path=/prometheus"
|
||
environment:
|
||
- METRICS_REMOTE_WRITE_URL=${METRICS_REMOTE_WRITE_URL}
|
||
- METRICS_TARGETS=${METRICS_TARGETS}
|
||
- OBS_AUTH_ENABLE=${OBS_AUTH_ENABLE:-false}
|
||
- OBS_AUTH_TOKEN=${OBS_AUTH_TOKEN}
|
||
- OBS_PROJECT=${OBS_PROJECT}
|
||
- OBS_SERVICE=${OBS_SERVICE}
|
||
- OBS_SERVICE_NAME=${OBS_SERVICE_NAME}
|
||
- OBS_ENV=${OBS_ENV:-prod}
|
||
- REDIS_EXPORTER_TARGETS=${REDIS_EXPORTER_TARGETS}
|
||
- MONGODB_EXPORTER_TARGETS=${MONGODB_EXPORTER_TARGETS}
|
||
- NODE_EXPORTER_TARGETS=${NODE_EXPORTER_TARGETS}
|
||
- REDIS_EXPORTER_SERVICE=${REDIS_EXPORTER_SERVICE}
|
||
- MONGODB_EXPORTER_SERVICE=${MONGODB_EXPORTER_SERVICE}
|
||
- NODE_EXPORTER_SERVICE=${NODE_EXPORTER_SERVICE}
|
||
volumes:
|
||
- prometheus_agent_data:/prometheus
|
||
- ./config/prometheus-agent-entrypoint.sh:/etc/prometheus/entrypoint.sh:ro
|
||
entrypoint: ["/bin/sh", "/etc/prometheus/entrypoint.sh"]
|
||
networks:
|
||
- chat-deploy-obs
|
||
depends_on:
|
||
- mongodb-exporter
|
||
|
||
# ==============================
|
||
# MongoDB Exporter
|
||
# 采集 MongoDB 指标,需要 --profile metrics 启用
|
||
# ==============================
|
||
mongodb-exporter:
|
||
profiles: ["metrics"]
|
||
image: percona/mongodb_exporter:0.40.0
|
||
container_name: chat-deploy-mongodb-exporter
|
||
restart: always
|
||
command:
|
||
- "--mongodb.uri=${MONGODB_URI}"
|
||
- "--compatible-mode"
|
||
- "--collect-all"
|
||
environment:
|
||
- MONGODB_URI=${MONGODB_URI}
|
||
ports:
|
||
- "9216:9216"
|
||
networks:
|
||
- chat-deploy-obs
|
||
|
||
# ==============================
|
||
# Redis Exporter(可选)
|
||
# 采集 Redis 指标,需要 --profile metrics 启用
|
||
# ==============================
|
||
redis-exporter:
|
||
profiles: ["metrics"]
|
||
image: oliver006/redis_exporter:latest
|
||
container_name: chat-deploy-redis-exporter
|
||
restart: always
|
||
environment:
|
||
- REDIS_ADDR=${REDIS_ADDR}
|
||
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
||
ports:
|
||
- "9121:9121"
|
||
networks:
|
||
- chat-deploy-obs
|
||
|
||
# ==============================
|
||
# Node Exporter(可选)
|
||
# 采集系统级指标(CPU/Memory/Disk/Network)
|
||
# 需要 --profile metrics 启用
|
||
# ==============================
|
||
node-exporter:
|
||
profiles: ["metrics"]
|
||
image: prom/node-exporter:latest
|
||
container_name: chat-deploy-node-exporter
|
||
restart: always
|
||
command:
|
||
- "--path.rootfs=/host"
|
||
- "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
|
||
volumes:
|
||
- /:/host:ro,rslave
|
||
ports:
|
||
- "9100:9100"
|
||
networks:
|
||
- chat-deploy-obs
|
||
|
||
networks:
|
||
chat-deploy-obs:
|
||
driver: bridge
|
||
|
||
volumes:
|
||
prometheus_agent_data: {}
|