feat(monitoring): Processes, Jobs, Logs, Messaging and System pages - #6615
Merged
Conversation
…RolesAllowed The JVM monitoring, logs, messaging-monitoring and BPM process endpoints all declare @RolesAllowed({ADMINISTRATOR, DEVELOPER, OPERATOR}), but they live under /services/ide/** and /services/bpm/**, which the URL layer gates on DEVELOPER alone - so an OPERATOR was rejected by the filter chain before method security ever ran. Add a monitoring gate covering exactly those prefixes, matched before the DEVELOPER gate; everything else under them (workspaces, git, publisher, the BPMN modeler, the LSP/debug sockets) stays DEVELOPER-only. The role gates are now one ordered declaration read by both configure() and the test that guards the matrix, so the ordering the alignment depends on cannot be changed silently. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"What is deployed and did it synchronize" had no Java REST endpoint - the IDE's Artefacts view reads it through a JS aggregator that fans out over an extension point issuing per-table SQL, which nothing outside that perspective can build on. GET /services/core/artefacts (ADMINISTRATOR/DEVELOPER/OPERATOR) aggregates the ArtefactService beans instead: every synchronizer already registers one, so the injected bean list is the complete inventory and a new artefact type needs no registration step. An artefact type that cannot be read is logged and skipped rather than taking down the inventory. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A standalone Harmonia shell at /services/web/monitoring/ that answers the most basic operational question - "is the system healthy, and if not, what broke?" - without opening the IDE. Today that answer is spread across four IDE perspectives sitting last in the rail, behind a Workbench tile the Home launchpad deliberately demotes, and health/readiness have no screen at all. This first phase is the shell skeleton plus the Overview page: KPI tiles for health, readiness, artefacts in error, failed jobs, process incidents, database pool pressure and broker backlog, each backed by an existing platform endpoint, with the individual failures named in the lists below them. It auto-refreshes every 30 seconds (pausable) - there is no server-side history, every poll is a fresh snapshot. The shell is a view layer, not a re-implementation: it reuses the shared Harmonia runtime from application-core, adds no backend, and links to the Workbench for the deep and destructive tooling (SQL console, terminal, message purging, log levels), which stays there permanently. Registered on platform-shells (order 37) and offered on Home as a secondary destination - an operations tool, not where the working day starts. Gated to ADMINISTRATOR / OPERATOR / DEVELOPER, matching the endpoints it reads. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Completes the Monitoring shell. Each page reads existing, role-gated platform endpoints; the deep and destructive tooling stays in the Workbench. Processes is the triage page: running or completed instances, and for the selected one the live BPMN diagram - the same bpmn-visualization the IDE's process viewer uses, themed through Harmonia's own CSS variables and loaded on first use so the Overview does not pay for a megabyte it never draws - plus its read-only variables, its open user tasks, and its dead-letter jobs with the two management actions v1 allows: retry the failed step, or skip it. Starting instances, editing variables and claiming other people's tasks stay in the IDE. Jobs lists the scheduled jobs with their last outcome and the selected job's execution log (with the tenant column visible - the job-log service does not scope its reads yet, #6606), and allows enable, disable and trigger. E-mail assignment and log clearing stay in the IDE. Logs carries the live stream from the platform's console socket - the only live surface in the product - with level filters, pause and clear, plus the log files on disk, tailed client-side because the endpoint returns whole files and must not be polled. Log-LEVEL management is deliberately absent: real blast radius. Messaging is read-only: the broker's destinations and a non-destructive browse of a queue's pending messages. System is the JVM snapshot - CPU, heap, threads, GC, memory pools, the platform counters and the live thread list - with sparklines filled while the page is open, since there is no server-side metric history and this shell does not invent one. Also here: en/bg label catalogs for every string, and MonitoringShellIT walks all six pages. It clicks the sidebar by id rather than by label - a label match also hits page content, and the Alpine-bootstrap failure mode this test exists to catch has no other symptom. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Master gained the Builder shell (#6610), which registers itself on the Home launchpad exactly where this branch registers Monitoring - so both sides added an entry to the same two constants in home.js. Resolved additively, keeping both shells. SECONDARY stays ordered least-technical-first per its own comment: the two operations tools (Admin, Monitoring) then the two building tools (Builder, Workbench). The Maven wiring in components/pom.xml and group-ui merged cleanly and was verified to carry both modules.
…/monitoring-shell-processes-jobs # Conflicts: # CLAUDE.md
…ll-processes-jobs # Conflicts: # components/resources/resources-monitoring/src/main/resources/META-INF/dirigible/monitoring/css/app.css # components/resources/resources-monitoring/src/main/resources/META-INF/dirigible/monitoring/index.html # components/resources/resources-monitoring/src/main/resources/META-INF/dirigible/monitoring/js/services/ops.js # components/resources/resources-monitoring/src/main/resources/META-INF/dirigible/monitoring/views/_overview.html # tests/tests-integrations/src/main/java/org/eclipse/dirigible/integration/tests/ui/tests/MonitoringShellIT.java
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.
Phases 2–4 of the Monitoring shell plan — the five remaining pages, the label catalogs and the full IT. Stacked on #6614 (Overview), which is stacked on #6613 (backend). Review in that order; each retargets on merge.
The pages
/processes— the triage page. Running or completed instances; for the selected one the live BPMN diagram (the samebpmn-visualizationwebjar the IDE's process viewer uses, themed through Harmonia's own--foreground/--input-background/--positive/--negativevariables and lazy-loaded on first use, so the Overview never pays for a megabyte it doesn't draw), its read-only variables, its open user tasks, and its dead-letter jobs with the two management actions v1 allows: Retry and Skip. Starting instances, editing variables and claiming other people's tasks stay in the IDE./jobs— the scheduled jobs with their last outcome, the selected job's execution log with the tenant column visible (the job-log service does not scope its reads yet — #6606), and enable / disable / trigger (with the job's declared parameters). E-mail assignment and log clearing stay in the IDE./logs— the live stream from/websockets/ide/console(level filters, pause, clear, follow) — the only live surface in the product — plus the log files on disk, tailed client-side: the endpoint returns whole files, so the page loads on demand and grows the window upwards rather than polling. Log-level management is deliberately absent — management with real blast radius./messaging— read-only: the broker's queues and topics with their counters, and a non-destructive browse of a queue's pending messages. Purging and destination removal stay in the IDE. (Topics show counters but no list: JMS topics don't retain non-persistent messages.)/system— the JVM snapshot: CPU / heap / threads / runtime cards, memory pools, GC, the platform's own counters, and the live thread list with a filter and a deadlock badge. The heap and CPU sparklines are a session-local ring buffer — there is no server-side metric history and v1 does not invent one; long-term dashboards stay the OpenTelemetry stack's job.Also here
i18n/en-US+i18n/bg-BGcovering all 145 keys (the platform's existing i18next/locales.jsmachinery, namespacemonitoring).MonitoringShellITwalks all six pages. It clicks the sidebar by id, not by label — a label match also hits page content (a "System" span in the Overview's database-pool tile), and the failure mode this test exists to catch (an Alpine binding on an<i x-h-lucide>aborts the walk) has no DOM or server-side symptom.CLAUDE.mdsection for the shell: the scope line, the two Phase-0 prerequisites, theops.softdegradation rule, the diagram contract, the filed data issues and the IT's role.Verification
mvn -T 1C clean install -P quick-build— green.MonitoringShellIT— green (2 tests, all six pages).NaN%(now—, and the sparkline plots 0), and aw-64class onx-h-inputloses to the component's own width rule (the search boxes are wrapped instead).🤖 Generated with Claude Code