recipe-manager/observability/docker-compose.yml
Chris 423334db4d Add structured logging (Pino), Docker log rotation, and OpenObserve + Fluent Bit observability stack
- logger.js: Pino JSON logger with console-style helpers and pino-http request logging (static assets skipped, headers not logged, secrets redacted)

- server.js: replace 89 console.* calls with log.info/warn/error; add request logging middleware

- docker-compose.yml: json-file rotation (10m x 5, compressed), LOG_LEVEL, 'forkfolio' log tag

- observability/: standalone OpenObserve + Fluent Bit stack routing tagged container logs to per-app streams

- .dockerignore: exclude observability stack from app image
2026-11-01 01:17:21 -05:00

56 lines
1.6 KiB
YAML

# Standalone observability stack: OpenObserve (storage/search/UI) + Fluent Bit (collector).
#
# Runs independently of ForkFolio so any number of apps on this Docker host can
# ship logs here. Fluent Bit tails every container's json-file log and routes
# containers that set a logging "tag" to a matching OpenObserve stream.
#
# Usage:
# cp .env.example .env # then set a strong password
# docker compose up -d
# open http://localhost:5080
name: observability
services:
openobserve:
# Pin to a specific release tag for reproducible upgrades if desired
image: public.ecr.aws/zinclabs/openobserve:latest
container_name: openobserve
restart: unless-stopped
ports:
- "5080:5080"
env_file: .env
environment:
- ZO_DATA_DIR=/data
volumes:
- ./openobserve-data:/data
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
fluent-bit:
image: fluent/fluent-bit:latest
container_name: fluent-bit
restart: unless-stopped
depends_on:
- openobserve
env_file: .env
environment:
- ZO_HOST=openobserve
- ZO_PORT=5080
volumes:
- ./fluent-bit/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf:ro
- ./fluent-bit/parsers.conf:/fluent-bit/etc/custom_parsers.conf:ro
# Docker's container log files (read-only)
- /var/lib/docker/containers:/var/lib/docker/containers:ro
# Tail positions, so restarts don't re-send or skip logs
- fluent-bit-db:/fluent-bit/db
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
fluent-bit-db: