[HWORKS-2954] Replace the OpenSearch deployment log history with HopsFS archives - #630
Open
jimdowling wants to merge 7 commits into
Open
[HWORKS-2954] Replace the OpenSearch deployment log history with HopsFS archives#630jimdowling wants to merge 7 commits into
jimdowling wants to merge 7 commits into
Conversation
…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>
…io into livelogs-direct-pod-logs
jimdowling
marked this pull request as ready for review
August 7, 2026 21:50
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>
Contributor
Author
|
Review round 16.10 (d3f6fee): the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Logsdataset from inside its own container.Both troubleshooting guides still described the removed model: they told users to click a
See logsbutton that opened OpenSearch Dashboards, and to filter records bycontainer_name,serving_name,model_versionand friends. None of that exists any more.What changed
user_guides/mlops/serving/troubleshooting.mdanduser_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, thelog_history_limitcap and why it exists, and the fact that an instance removed by scale-to-zero still leaves its logs behind.Configuring disk loggingsection: 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.tail_logsanddownload_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: pythonpods), 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.mdis deliberately untouched. Platform-service logs still flow to OpenSearch; only the workload routes were removed, so that guide is still accurate.Checks
markdownlint-cli2clean on both pages.snakeoilat the CI rule set converges: after its run plus the trailing-blank cleanup the repo is diff-clean, which is the gatehopsworks-docs snakeoilenforces. Thedownload_logsexample uses a context manager so it passes SIM115.Ships with the code PRs, which are all out of draft.
🤖 Generated with Claude Code