Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Monitor Laravel Package

orchid/monitor

Monitor your Laravel application from inside the Orchid admin panel. orchid/monitor gathers health checks, server metrics, logs, and runtime performance into one dashboard, so you can spot issues early and keep your app running reliably without switching between tools or services.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The critical framing for any decision here is that orchid/monitor is not a standalone package — it is the system-information screen bundled inside the theOrchid/Platform monorepo. There is no independent artifact to composer require, no independent release cadence, and no independent version constraint. Architecturally that means the unit of adoption is Orchid Platform as your admin panel, not "a monitor package." If Orchid is already the admin surface, this screen is a near-zero-cost addition that fits the existing layout, navigation, and permission model by construction. If Orchid is not in the stack, the architecture fit is poor: we would be introducing an entire admin framework to obtain a CPU/RAM/disk readout, which inverts the cost/benefit immediately and should be rejected on architecture grounds alone.

Integration feasibility. Where Orchid exists, feasibility is high and effort is small. The screen registers itself and inherits panel middleware; the exposed Monitor service (cpu(), ram(), disk()) can also be called from our own screens or a small JSON endpoint. The realistic integration work is not "make it appear" — that is nearly free — but the surrounding hygiene: confirming the route carries our real auth guards, SSO, and IP allow-lists rather than panel defaults, restricting by Orchid role, and verifying that the host actually permits the shell calls the service depends on. That last point is where feasibility can quietly collapse: on hardened PHP-FPM images with exec/proc_open/shell_exec disabled, the screen renders zeros or empty gauges instead of erroring. A silently wrong "0% CPU" is worse than a visible failure, and it is the single most common way this integration ships broken.

Technical risk. Ranked:

  • Dependency and maintenance risk (high). Score 0.3, zero dependents, negligible star traction, monorepo layout. There is no Stack Overflow corpus, no third-party writeups, and no independent changelog. Behavior moves with Orchid releases. This should never sit on a critical path — specifically, it must not be the thing an on-call engineer needs in order to respond to an incident.
  • Environment-validity risk (high). The monitors are Linux-shaped. macOS/Windows produce wrong or missing values. Inside Docker/Kubernetes, /proc and df report the container's view, not the node's, and memory figures ignore cgroup limits. In a containerized estate the numbers mislead rather than inform unless explicitly labeled container-scoped.
  • Availability risk (medium). df can block indefinitely on a stale NFS mount and there is no package-level timeout knob. Any auto-refresh or polling must be wrapped in our own process with an explicit timeout.
  • Information-disclosure risk (medium, but a security finding if missed). The page fingerprints the host — kernel, PHP config, database connection details. Broad admin access to it is a finding, not cosmetics.
  • Interpretation risk (high, organizational). A page named "Monitor" creates the belief that monitoring exists. It has no history, no retention, no alerting, no error tracking, no uptime. That misread is the most expensive failure mode here and is a communications problem, not a technical one.

Key questions to resolve before committing.

  1. Is Orchid already our admin panel, and is it pinned to a tested tag? If no to the first, stop.
  2. Are we Linux in production, and are exec/proc_open/shell_exec available in the production runtime (verified, not assumed)?
  3. Do we run containers? If so, are we prepared to label these metrics as container-scoped?
  4. Does the monitor route inherit our real guards, SSO, and IP allow-lists — and who has reviewed that?
  5. Who owns this as fallback support when the page breaks, given zero dependents and no external answers?
  6. Where is it written down that Pulse/Horizon/Telescope/Sentry/APM own the questions this cannot answer?

Integration Approach

Stack fit. Fit is binary and it is decided by Orchid, not by this package. On Orchid + Laravel + Linux + non-containerized (or container-aware) hosting, it slots in with essentially no architecture work. Off Orchid, there is no migration path worth taking — the correct answer is to reach for Pulse/Horizon or a hosted APM directly, which is what we would end up doing anyway for anything beyond a glance.

Migration path. Not applicable in the usual sense; there is nothing to migrate off. The relevant path is adoption of Orchid, which is a separate, larger decision. If Orchid is already present, adoption of this screen is: confirm version alignment with our Laravel/PHP baseline, run the installer if needed, log in as admin, open the monitor route (conventionally /admin/monitor), and validate against the shell. If Orchid is absent, treat this as out of scope and record why.

Compatibility. Two axes. First, Orchid-to-Laravel/PHP version alignment — pin orchid/platform to a tested tag, never a floating constraint, and treat every Orchid upgrade as a trigger to regression-check the monitor route, permissions, and output. Second, host compatibility — Linux only in practice, shell functions enabled, no stale NFS mounts. Both must be verified in a production-like environment; demoing on a macOS laptop produces meaningless readings and hides the shell-function failure entirely. Inside containers, accept container-scoped numbers or don't ship it.

Sequencing. Deliberately small and reversible:

  1. Prerequisite check. composer show orchid/platform and php artisan route:list | grep -i monitor. Confirm presence and pinned version. If absent, close the ticket with a note.
  2. Time-boxed spike with a pre-agreed abandon criterion. Validate on a production-like Linux host: shell-function availability, mount safety, values compared against top/free/df on the same box. Abandon if the numbers don't match the shell.
  3. Security review before first non-tester login. Confirm the route carries real guards; restrict by Orchid role; document what renders and to whom.
  4. Read-only screen only. Ship the default screen. Do not build on it. Use it for a week and observe whether operators actually open it.
  5. Only then, optional enhancements — each small, each with a clean removal path: embed cached gauges into an operator screen they already use; a guarded JSON endpoint polled at five seconds minimum; a disk-headroom assertion as a pre-flight deploy gate. The deploy gate is the highest-value non-UI use and is worth prioritizing over widget work.
  6. Write down the boundary. In the rollout note, name Pulse/Horizon/Telescope/Sentry/APM as the owners of history, alerting, and retention.

Cache all service calls. Every invocation shells out; a screen refresh should not fork top three times.

Operational Impact

Maintenance. Low effort, non-trivial ownership. The code is vendor code we do not patch — presentation changes go through php artisan vendor:publish --tag=platform-views, and behavioral gaps go into our own app/Support/Monitors/ classes so the core Monitor stays untouched and the fork-or-replace exit stays intact. The real maintenance tax is upstream coupling: because this is a monorepo module with no independent cadence, an Orchid upgrade can change behavior silently. Budget for reading vendor source at each upgrade and for one named engineer to own it.

Support. Effectively self-support. Zero dependents means no community answers, no blog posts, no third-party fixes. When it breaks, we read the source. The mitigating design choice is to keep Orchid pinned, keep our extensions outside vendor/, and keep this off any critical path so a broken page never blocks incident response.

Scaling. Two distinct concerns. Organizational scaling is the bigger one: the page's blast radius grows with admin headcount, because each additional admin sees host internals — so role discipline must scale with the team. Technical scaling is bounded and manageable: each metric call spawns a process, so concurrent admin tabs plus a tight poll interval is a self-inflicted load source. Enforce five-second minimum polling, cache aggressively, and cap concurrent pollers. Note that none of this scales into "observability" — it is point-in-time only and will never answer trend or capacity questions.

Failure modes. Plan for each explicitly:

  • Silent zeros. Disabled shell functions yield 0 or empty gauges, not exceptions. A zero that reads as "idle" is the dangerous case. Add a startup self-check that surfaces capability, and alert operators when metrics are unavailable rather than rendering a plausible zero.
  • Wrong-host illusion. Container reads report the container, not the node. Label scope in the UI.
  • Hung requests. df against a stale NFS mount blocks with no package timeout. Wrap in our own process with an explicit timeout; know which mounts are at risk.
  • Auth drift. Middleware is a control, not a default. Re-review the route whenever the permission model changes.
  • Misread coverage. The page implies monitoring that does not exist. State the limitation in the rollout note, in writing, next to the tooling list.

Ramp-up. Near zero for operators and small for the owning engineer. Operators: open the page, read three numbers, compare to nothing — there is no training burden. The owning engineer needs roughly half a day to read the vendor Monitor service and screen class, run the shell-comparison validation, and complete the security review. That is the entire ramp; the risk is not learning curve, it is the absence of an external knowledge base when something drifts. Budget the debugging checklist up front: confirm route registration and middleware via route:list, resolve the service in Tinker and call cpu() directly to separate service failure from view failure, run the equivalent shell command on the host, then confirm you are on the host you think you are.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment