Files
overleaf-cep/tools/reference_stack_compose/instance-sensor/compose.yaml
T

53 lines
2.1 KiB
YAML

# instance-sensor — the overleaf-cep "instance statistics" sensors,
# exposed LIVE as Prometheus gauges (scrape-on-read) instead of the
# hourly-cron-Mongo-snapshots of PR yu-i-i/overleaf-cep#178. Same sensor
# definitions, prometheus-native delivery:
#
# users : total + active (last 24h), split standard/guest when
# INSTANCE_STATS_SEGMENTATION != false (guest = user with
# 'guest-user' in adminRoles — the PR#176/PR#178 definition)
# projects : total + active (last 24h, projects.lastUpdated)
# files : total documents (docs collection)
# storage : mongodb (dbStats.totalSize), filestore (du of the SeaweedFS
# data dir — the S3 filestore content), redis RAM (used_memory)
# + redis disk (AOF current size)
#
# Self-contained node image (mongodb + ioredis drivers) — does NOT depend on
# the overleaf image layout. Read-only on its inputs.
services:
instance-sensor:
build:
context: .
dockerfile: Dockerfile
image: ${INSTANCE_SENSOR_IMAGE:-overleaf-instance-sensor:local}
container_name: instance-sensor
hostname: instance-sensor
restart: unless-stopped
environment:
MONGO_URL: "mongodb://${MONGO_HOSTNAME:-mongo}:${MONGO_PORT:-27017}/${MONGODB_DATABASE:-sharelatex}"
REDIS_ADDR: "redis://${REDIS_HOSTNAME:-redis}:${REDIS_PORT:-6379}"
# du() of the SeaweedFS volume data dir, mounted read-only below
# (mirror of PR#178's du-based overleaf_storage)
FILESTORE_DATA_DIR: /hostdata/filestore
# 'standard'/'guest' split (PR#178/PR#176): 'false' (default, per PR)
# or 'true'
SEGMENTATION: ${INSTANCE_STATS_SEGMENTATION:-false}
ACTIVE_WINDOW_HOURS: "24"
PORT: "9464"
expose:
- "9464"
volumes:
- ${COMPOSE_DIRECTORY:-/data_1/docker/compose}/seaweedfs-volume/data:/hostdata/filestore:ro
healthcheck:
test: ["CMD-SHELL", "wget -q --spider --timeout=5 http://127.0.0.1:9464/metrics >/dev/null 2>&1 || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
networks:
- overleaf-network
networks:
overleaf-network:
external: true