Skip to content
Closed
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
0ca266b
feat: enable extraContainers
kaixi-wang Apr 3, 2026
2151e2e
fix: share process namespace
kaixi-wang Apr 3, 2026
a46b8f0
fix: add logs access
kaixi-wang Apr 3, 2026
93359dc
chore: update tests
kaixi-wang Apr 3, 2026
4c2865e
fix: rm unread rbac file
kaixi-wang Apr 5, 2026
adb3b9e
feat: add nativeSidecarContainers
kaixi-wang Apr 23, 2026
9578958
fix: add missing files
kaixi-wang Apr 23, 2026
e9e710a
chore: update compose files
kaixi-wang May 15, 2026
ee0ba72
chore: fix tests
kaixi-wang May 15, 2026
1ca27a4
chore: fix tests
kaixi-wang May 15, 2026
30282b1
chore: trigger ci
kaixi-wang May 16, 2026
ea4c386
fix: auto-inject sidecar settings
kaixi-wang May 17, 2026
d58c01c
fix: fix auto inject sidecar vars and update test
kaixi-wang May 18, 2026
d532ec4
chore: attempt to fix test
kaixi-wang May 18, 2026
fe89df4
feat: default true for telemetry and add templates
kaixi-wang May 19, 2026
8348c4b
feat: enable sidecar by default in docker deployments
kaixi-wang May 19, 2026
b290329
chore: temp fix for tests
kaixi-wang May 19, 2026
229c9eb
feat: default enable telemetric with all default settings generated
kaixi-wang May 19, 2026
5d410c4
test: temporarily hardcode the sidecar
kaixi-wang May 19, 2026
a8c0357
fix: use latest sidecar version 0.1.62
kaixi-wang May 19, 2026
047041c
fix: runAsNonRoot override in sidecar
kaixi-wang May 19, 2026
c4013e9
ci(fixtures): automated bump for integration test fixtures teams-app:…
voxelbuildbot May 19, 2026
20655e2
feat(helm): support external Redis via `telemetry.redis.external.url`
mo-getter May 19, 2026
bc87707
feat(helm): configurable telemetry Redis persistence
mo-getter May 19, 2026
0581d39
fix(helm): route DO env vars through `telemetry.redis.url` helper
mo-getter May 19, 2026
bf7d297
ci(fixtures): automated bump for integration test fixtures teams-app:…
voxelbuildbot May 19, 2026
57f1cc6
feat(compose): bring telemetry config to parity with helm chart
claude May 19, 2026
71a9456
refactor(compose): consolidate telemetry services into common-service…
claude May 20, 2026
1161abf
fix(compose): default sidecar to GAR image; fix verify-section Redis …
mo-getter May 20, 2026
703d4c7
fix(helm): use Recreate strategy for telemetry-redis Deployment
mo-getter May 20, 2026
ebd2edb
ci(fixtures): automated bump for integration test fixtures teams-app:…
voxelbuildbot May 20, 2026
b4afaaf
refactor: align telemetry-sidecar image versioning with other voxel51…
mo-getter May 20, 2026
079c65a
refactor(helm): drop unused extraContainers/nativeSidecarContainers k…
mo-getter May 20, 2026
97649d2
fix: telemetry-sidecar repo
mo-getter May 20, 2026
5f413e8
ci(fixtures): automated bump for integration test fixtures teams-app:…
voxelbuildbot May 20, 2026
660f544
ci(fixtures): automated bump for integration test fixtures teams-app:…
voxelbuildbot May 21, 2026
5c8a53d
docs(telemetry): fix sidecar examples; flag UI log-viewer dependency
mo-getter May 21, 2026
04fb4f6
fix(compose): bump GPU DO image tag to v2.19.0
mo-getter May 22, 2026
0862f09
fix(helm): use FQDN for in-cluster telemetry Redis URL
mo-getter May 22, 2026
1a567a2
docs(helm): clarify telemetry sidecar tag default
mo-getter May 22, 2026
5065ebf
feat(helm): add securityContext to telemetry-redis
mo-getter May 22, 2026
a05f11c
test(helm): cover shareProcessNamespace + sidecar securityContext
mo-getter May 22, 2026
488da4b
docs: add v2.19+ telemetry upgrade callout
mo-getter May 22, 2026
2d17007
refactor(helm): drop redundant teams-api SA from telemetry RoleBinding
mo-getter May 22, 2026
e6850fb
feat(helm): support pre-provisioned PVC for telemetry Redis
mo-getter May 22, 2026
43d140c
docs: clarify upgrading docs
mo-getter May 22, 2026
63bc17a
fix: rm sys_ptrace from services, explicit user rather than root, set…
kaixi-wang May 23, 2026
23793fa
chore: trigger build
kaixi-wang May 23, 2026
60ec930
chore: trigger build
kaixi-wang May 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ regarding FiftyOne Enterprise.
- [Advanced Configuration](#advanced-configuration)
- [Backup And Recovery](#backup-and-recovery)
- [Secrets And Sensitive Data](#secrets-and-sensitive-data)
- [Telemetry](#telemetry)
- [Snapshot Archival](#snapshot-archival)
- [Static Banner Configuration](#static-banner-configuration)
- [Storage Credentials and `FIFTYONE_ENCRYPTION_KEY`](#storage-credentials-and-fiftyone_encryption_key)
Expand Down Expand Up @@ -656,6 +657,17 @@ and
[adding secrets](https://docs.voxel51.com/enterprise/secrets.html#adding-secrets)
for questions regarding storage and encryption.

### Telemetry

FiftyOne Enterprise bundles a telemetry sidecar + Redis backend by
default in every compose file. The Settings → Metrics page in teams-app
exposes live per-service metrics (CPU, memory, FDs, thread counts) and
tailed logs. No opt-in flags are required.

Please refer to the
[telemetry configuration documentation](./docs/configuring-telemetry.md)
for full details.

### Snapshot Archival

Since version v1.5, FiftyOne Enterprise supports
Expand Down
151 changes: 150 additions & 1 deletion docker/common-services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ services:
FIFTYONE_MEDIA_CACHE_APP_IMAGES: false
FIFTYONE_MEDIA_CACHE_SIZE_BYTES: -1
FIFTYONE_SIGNED_URL_EXPIRATION: ${FIFTYONE_SIGNED_URL_EXPIRATION:-24}
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
# If you are routing through a proxy server you will want to set
# HTTP_PROXY_URL, HTTPS_PROXY_URL, and NO_PROXY_LIST in your .env
# then add the following environment variables to your
Expand All @@ -43,6 +44,7 @@ services:
FIFTYONE_ENV: ${FIFTYONE_ENV}
FIFTYONE_INTERNAL_SERVICE: true
FIFTYONE_LOGGING_FORMAT: ${FIFTYONE_LOGGING_FORMAT:-text}
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
GRAPHQL_DEFAULT_LIMIT: ${GRAPHQL_DEFAULT_LIMIT}
LOGGING_LEVEL: ${API_LOGGING_LEVEL:-INFO}
MONGO_DEFAULT_DB: ${FIFTYONE_DATABASE_NAME}
Expand Down Expand Up @@ -72,6 +74,7 @@ services:
FIFTYONE_SERVER_ADDRESS: ""
FIFTYONE_SERVER_PATH_PREFIX: /api/proxy/fiftyone-teams
FIFTYONE_TEAMS_PROXY_URL: ${FIFTYONE_TEAMS_PROXY_URL}
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
NODE_ENV: production
RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED: false
FIFTYONE_APP_ANONYMOUS_ANALYTICS_ENABLED: ${FIFTYONE_APP_ANONYMOUS_ANALYTICS_ENABLED:-true}
Expand Down Expand Up @@ -144,6 +147,7 @@ services:
FIFTYONE_MEDIA_CACHE_APP_IMAGES: false
FIFTYONE_MEDIA_CACHE_SIZE_BYTES: -1
FIFTYONE_PLUGINS_DIR: /opt/plugins
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
# If you are routing through a proxy server you will want to set
# HTTP_PROXY_URL, HTTPS_PROXY_URL, and NO_PROXY_LIST in your .env
# then add the following environment variables to your
Expand All @@ -158,8 +162,12 @@ services:

teams-do-common:
image: voxel51/fiftyone-teams-cv-full:v2.19.0
# Telemetry default-on requires teams-do to share its PID namespace
# with a single sidecar (compose's `pid: "service:<name>"` only joins
# one replica). Force replicas=1 to keep the 1:1 pairing deterministic.
# See docker/docs/configuring-telemetry.md for multi-worker patterns.
deploy:
replicas: ${FIFTYONE_DELEGATED_OPERATOR_WORKER_REPLICAS:-3}
replicas: 1
command: >
/bin/sh -c "fiftyone delegated launch -t remote -m"
environment:
Expand All @@ -171,6 +179,147 @@ services:
FIFTYONE_INTERNAL_SERVICE: true
FIFTYONE_MEDIA_CACHE_SIZE_BYTES: -1
FIFTYONE_PLUGINS_DIR: /opt/plugins
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
TELEMETRY_SOCKET: /tmp/telemetry/agent.sock
restart: always
volumes:
- plugins-vol:/opt/plugins:ro
- telemetry-socket:/tmp/telemetry

# ─── Telemetry common services ─────────────────────────────────────────
# Each base compose file (compose.yaml, compose.plugins.yaml,
# compose.dedicated-plugins.yaml) is a standalone alternative to the
# others — they can't be layered. Defining the telemetry services once
# here lets all three pull them in via `extends:` without duplicating
# image, env, and resource blocks.
#
# `extends` does NOT propagate `depends_on`; each extending service
# redeclares it locally.

telemetry-redis-common:
image: ${TELEMETRY_REDIS_IMAGE:-redis:7-alpine}
command:
- redis-server
- --save
- "60"
- "1"
- --dir
- /data
- --maxmemory
- ${TELEMETRY_REDIS_MAXMEMORY:-400mb}
- --maxmemory-policy
- ${TELEMETRY_REDIS_MAXMEMORY_POLICY:-allkeys-lru}
restart: always
deploy:
resources:
limits:
cpus: "0.25"
memory: 512M
reservations:
cpus: "0.10"
memory: 256M
volumes:
- telemetry-redis-data:/data

# One sidecar per observed service. `pid: "service:<target>"` joins the
# target's PID namespace so the sidecar can read /proc/<pid>/fd/1 and
# psutil can see the target's process.
fiftyone-app-telemetry-common:
image: voxel51/telemetry-sidecar:v2.19.0
pid: "service:fiftyone-app"
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
environment:
POD_NAME: fiftyone-app
POD_NAMESPACE: ${TELEMETRY_NAMESPACE:-docker}
SERVICE_TYPE: fiftyone-app
TARGET_NAME: ${FIFTYONE_APP_TARGET_NAME:-hypercorn}
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
deploy:
resources:
limits:
cpus: "0.10"
memory: 512M
reservations:
cpus: "0.10"
memory: 512M
restart: always

teams-api-telemetry-common:
image: voxel51/telemetry-sidecar:v2.19.0
pid: "service:teams-api"
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
environment:
POD_NAME: teams-api
POD_NAMESPACE: ${TELEMETRY_NAMESPACE:-docker}
SERVICE_TYPE: teams-api
TARGET_NAME: ${TEAMS_API_TARGET_NAME:-fiftyone-teams-api}
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
deploy:
resources:
limits:
cpus: "0.10"
memory: 512M
reservations:
cpus: "0.10"
memory: 512M
restart: always

teams-plugins-telemetry-common:
image: voxel51/telemetry-sidecar:v2.19.0
pid: "service:teams-plugins"
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
environment:
POD_NAME: teams-plugins
POD_NAMESPACE: ${TELEMETRY_NAMESPACE:-docker}
SERVICE_TYPE: teams-plugins
TARGET_NAME: ${TEAMS_PLUGINS_TARGET_NAME:-hypercorn}
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
deploy:
resources:
limits:
cpus: "0.10"
memory: 512M
reservations:
cpus: "0.10"
memory: 512M
restart: always

teams-do-telemetry-common:
image: voxel51/telemetry-sidecar:v2.19.0
pid: "service:teams-do"
cap_drop:
- ALL
cap_add:
- SYS_PTRACE
security_opt:
- no-new-privileges:true
environment:
POD_NAME: teams-do
POD_NAMESPACE: ${TELEMETRY_NAMESPACE:-docker}
SERVICE_TYPE: delegated-operator
TARGET_NAME: ${TEAMS_DO_TARGET_NAME:-fiftyone delegated}
EXECUTOR_SIDECAR: "true"
TELEMETRY_SOCKET: /tmp/telemetry/agent.sock
FIFTYONE_TELEMETRY_REDIS_URL: ${FIFTYONE_TELEMETRY_REDIS_URL:-redis://telemetry-redis:6379}
FIFTYONE_DATABASE_URI: ${FIFTYONE_DATABASE_URI}
FIFTYONE_DATABASE_NAME: ${FIFTYONE_DATABASE_NAME}
deploy:
resources:
limits:
cpus: "0.10"
memory: 512M
reservations:
cpus: "0.10"
memory: 512M
volumes:
- telemetry-socket:/tmp/telemetry
restart: always
Loading
Loading