Skip to content

[HWORKS-2954] Replace the OpenSearch deployment log history with HopsFS archives - #630

Open
jimdowling wants to merge 7 commits into
logicalclocks:mainfrom
jimdowling:livelogs-direct-pod-logs
Open

[HWORKS-2954] Replace the OpenSearch deployment log history with HopsFS archives#630
jimdowling wants to merge 7 commits into
logicalclocks:mainfrom
jimdowling:livelogs-direct-pod-logs

Conversation

@jimdowling

@jimdowling jimdowling commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Docs for HWORKS-2954. Companion to hopsworks-ee#3165, hopsworks-front#2004, hopsworks-api#1052, hopsworks-helm#2106, docker-images#882 and model-serving-webhook#80.

https://hopsworks.atlassian.net/browse/HWORKS-2954

Why

Deployment logs no longer go through OpenSearch. Live logs are read from the running component through the Kubernetes pod-logs API, and history is archives that each instance writes to the project's Logs dataset from inside its own container.

Both troubleshooting guides still described the removed model: they told users to click a See logs button that opened OpenSearch Dashboards, and to filter records by container_name, serving_name, model_version and friends. None of that exists any more.

What changed

  • user_guides/mlops/serving/troubleshooting.md and user_guides/projects/python-deployment/troubleshooting.md (near-duplicates, kept that way): rewrote the transient and historical log sections against what the product does now. Transient logs gain the UI log viewer, and a note that stdout and stderr arrive interleaved because Kubernetes merges them at the container runtime. Historical logs are now described as per-instance HopsFS archives, including the naming convention, the log_history_limit cap and why it exists, and the fact that an instance removed by scale-to-zero still leaves its logs behind.
  • New Configuring disk logging section: the setting that governs whether history is written at all, with the on and off behaviours, the per-model-server defaults, and why there is no single-instance mode. A one-replica mode existed while this was being built and was dropped during review: all instances of a deployment share one pod template, so electing one writer leaves the others paying for a sidecar they never use.
  • Code section: added tail_logs and download_logs, since a single snapshot is no longer the only thing the client can do.

Second review round (2026-08-08): disk logging was restricted to Python deployments (the privileged HopsFS sidecar is only Kyverno-exempt on model-server: python pods), so both pages now say TensorFlow Serving and vLLM do not support the setting and that the API rejects it.

setup_installation/admin/monitoring/services-logs.md is deliberately untouched. Platform-service logs still flow to OpenSearch; only the workload routes were removed, so that guide is still accurate.

Checks

markdownlint-cli2 clean on both pages. snakeoil at the CI rule set converges: after its run plus the trailing-blank cleanup the repo is diff-clean, which is the gate hopsworks-docs snakeoil enforces. The download_logs example uses a context manager so it passes SIM115.

Ships with the code PRs, which are all out of draft.

🤖 Generated with Claude Code

jimdowling and others added 3 commits August 7, 2026 11:31
…FS archives

https://hopsworks.atlassian.net/browse/HWORKS-2954

Deployment logs no longer go through OpenSearch. Live logs are read from the
running component through the Kubernetes pod-logs API, and history is archives
that each instance writes to the project's Logs dataset from inside its own
container. Both troubleshooting guides described the removed model, telling users
to click a See logs button that opened OpenSearch Dashboards and to filter
records by fields that no longer exist anywhere.

Rewrites the transient and historical log sections of both guides against what
the product does now, and documents the disk logging setting that governs whether
history is written at all, including the per-model-server defaults and why the
HopsFS sidecar is attached to every instance of a revision even in one-replica
mode. Adds tail_logs and download_logs to the code section, since a snapshot is
no longer the only thing the client can do.

The two guides are near-duplicates and stay that way, differing only in the
wording each already had for its own audience.

The admin services-logs guide is deliberately untouched: platform-service logs
still flow to OpenSearch, and only the workload routes were removed.

Signed-off-by: Jim Dowling <jim@logicalclocks.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
https://hopsworks.atlassian.net/browse/HWORKS-2954

Disk logging is now a plain per-component checkbox: either no instance has the
HopsFS sidecar, or all of them do and all of them archive. The three-way table
and the one-replica default go with it.

The note explaining that the sidecar lands on every instance regardless is kept
and turned around, because it is now the reason there is no single-instance
option rather than a caveat about one. All instances of a deployment share a pod
template, so electing one writer left the others paying for a sidecar they never
used.

Signed-off-by: Jim Dowling <jim@logicalclocks.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jimdowling
jimdowling marked this pull request as ready for review August 7, 2026 21:50
jimdowling and others added 4 commits August 8, 2026 08:03
https://hopsworks.atlassian.net/browse/HWORKS-2954

Review of the code PRs restricted disk logging to Python deployments:
the HopsFS sidecar it attaches runs privileged, and only Python serving
pods carry the Kyverno policy exception that admits it on clusters
enforcing the restricted pod security standards. Both troubleshooting
pages now say TensorFlow Serving and vLLM do not support the setting
and that the API rejects it, instead of describing it as an opt-in
whose deployment a hardened cluster would then refuse.

Signed-off-by: Jim Dowling <jim@logicalclocks.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…g reading and HopsFS deployment log archives

https://hopsworks.atlassian.net/browse/HWORKS-2954

Disk logging uploads to the project's Logs dataset at the end of an
instance's life rather than writing through a privileged HopsFS sidecar.
Support follows the serving image, so a KServe Python deployment with no
predictor script is excluded alongside TensorFlow Serving and vLLM.

Signed-off-by: Jim Dowling <jim@logicalclocks.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…g reading and HopsFS deployment log archives

https://hopsworks.atlassian.net/browse/HWORKS-2954

Review round 16.10: the tail_logs example called the generator without
iterating it, so the snippet as written did nothing; both
troubleshooting pages now iterate and print the yielded chunks, and the
prose says it returns a generator rather than that it prints.

Signed-off-by: Jim Dowling <jim@logicalclocks.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jimdowling

Copy link
Copy Markdown
Contributor Author

Review round 16.10 (d3f6fee): the tail_logs example called the generator without iterating it, so the snippet as written did nothing. Both troubleshooting pages now iterate and print the yielded chunks, and the prose says the method returns a generator. Fences re-normalized with the repo's snakeoil pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant