This commit is contained in:
135
deployments/observability/docker-compose-observability.yaml
Normal file
135
deployments/observability/docker-compose-observability.yaml
Normal file
@@ -0,0 +1,135 @@
|
||||
# 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: {}
|
||||
Reference in New Issue
Block a user