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

Laravel Health Checker Laravel Package

arquivei/laravel-health-checker

A Laravel package for adding health check endpoints to your application. Configure checks for services like database, cache, and storage, then expose them via routes that return clear status responses—useful for monitoring, uptime probes, and load balancer checks.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — good, narrow, and reversible. A health-check endpoint is a cross-cutting operational concern rather than a domain dependency: it sits beside the application, not inside it. Expect a standard Laravel package shape — an auto-discovered service provider, a publishable config file, and a route registered behind configurable middleware. There is no evidence of schema migrations, custom Eloquent models, or container bindings that would entangle it with application code. That makes it one of the cheapest dependency classes a TPM can approve: it can be removed by deleting a composer line and a config file, with no data migration.

The one architectural overlap to resolve up front is duplication. Laravel 11+ ships a first-party health route (/up, configured in bootstrap/app.php). If the production stack is 11+, this package must justify itself as an extension (dependency checks) rather than a replacement for routing, otherwise the team ends up maintaining two health surfaces with different semantics on the same load balancer.

Integration feasibility — high. Installation is composer require, config publish, route/middleware configuration. Realistic effort is well under a day. Two design details determine whether it is trivial or a trap:

  • Probe cost and timeouts. A DB check without a short connect timeout turns a degraded database into a hung probe, which orchestration platforms read as a dead container.
  • Liveness vs. readiness semantics. Deep dependency checks belong in readiness (and in uptime monitors), never in liveness. A liveness probe that fails when Redis blips will restart healthy app containers and amplify an outage.

Technical risk — moderate, concentrated in provenance rather than code. The functional surface is small and well-understood; the supply-side surface is thin. 9 stars and 0 dependents means effectively zero external validation: no third party has publicly exercised this in production and written about it. A single-maintainer package with no dependents is a bus-factor-one dependency. For a package of this size the mitigation is straightforward — vendor or fork it if abandoned — but the TPM should record that decision explicitly rather than assume it.

Key questions

  1. What Laravel and PHP ranges does the current release declare in composer.json, and is the release line compatible with the exact production Laravel minor (not just the major)?
  2. Are per-check timeouts configurable, and what are the defaults?
  3. What HTTP status codes and body shape are returned on partial vs. total failure? Is a per-check status exposed for scraping?
  4. Is the route authenticated or IP-restricted by default, and does the failure payload leak DSNs, hostnames, versions, or stack traces?
  5. Does it expose a health-style contract compatible with Kubernetes probes, or only a browser-friendly JSON page?
  6. What is the test/CI posture, and is CI green against the production Laravel version?

Integration Approach

Stack fit. This aligns with a standard Laravel + load balancer / Kubernetes + uptime monitor topology. It is a fit if the platform team needs a single, machine-readable dependency-check endpoint; it is redundant if the LB already probes a cheap application route and dependency health is covered by APM.

Migration path. Net-new adoption, so the path is a timeboxed evaluation branch rather than a migration:

  1. Install in a scratch branch pinned to the current release.
  2. Publish config; register the route on an internal-only path behind IP allowlisting or a token middleware.
  3. Add one custom check first (something with a known failure mode) to validate the extension API before wiring the built-ins.
  4. Wire only readiness and the external uptime monitor. Leave liveness on the existing lightweight probe.
  5. Run under load in staging and confirm probe latency stays within the LB's timeout budget.

If Laravel 11+ already provides /up, position this package as the deep check and keep /up as the shallow liveness probe — two clearly named endpoints, documented, not two competing ones.

Compatibility. Verify the CI matrix against the production Laravel minor, not the declared major. Laravel's deprecation cadence means an "11.x supported" claim frequently means "11.0–11.x," and the team's minor may be newer than the package's last test run.

Sequencing. Resolve the key questions → evaluation branch install → staging soak with LB probe timing → production rollout behind feature flag. Do not enable as a liveness probe at any step.

Operational Impact

Maintenance — low, but pin aggressively. The code surface is small; the maintenance risk is abandonment, not churn. Pin to an exact version, and have a documented fork-or-vendor fallback so an unmaintained package cannot block a Laravel major upgrade.

Support. Community-only, with a single maintainer and no evidenced security disclosure policy. Acceptable here because the package handles no credentials, payments, or user data — but only if the endpoint it exposes is authenticated, since failure payloads can disclose internal topology.

Scaling. Health endpoints are among the highest-frequency requests in any estate: every LB target group and every orchestrator probe, every few seconds, per instance. Four built-in checks per probe means the probe itself becomes steady-state load on the database, cache, and queue. Require result caching with a short TTL and confirm checks are cheap reads, not SELECT 1 on a saturated pool or a queue-depth scan over a large table.

Failure modes. Ranked by impact:

  1. False negative → mass eviction. A flaky dependency check removes every instance from the LB simultaneously and converts a partial degradation into a full outage. Mitigate with thresholds, caching, and readiness-only usage.
  2. Probe timeout → restart loop. A blocking check against an unresponsive dependency hangs the probe, and the orchestrator restarts healthy containers.
  3. Information disclosure. Unauthenticated endpoint returning exception text, DSNs, or versions — a reconnaissance gift.
  4. Probe amplification. Cheap-looking checks that are expensive under load, self-inflicted DoS at fleet scale.
  5. Abandonment. Package pinned and then unmaintained at the next Laravel major.

Ramp-up. Half a day to configure and document; one to two days of staging soak to validate probe latency and threshold behavior. Total cost is small enough that the decision should be made on the duplication question — does this add real coverage beyond the platform's existing probe? — rather than on effort.

Recommendation: Adopt with guardrails — pin the version, restrict the route, use readiness-only, cache check results, and confirm it adds coverage Laravel 11+'s built-in /up does not provide.

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.
andydefer/laravel-notification
adachsoft/cli-process-tester
jhaskell13/laraflow
sebastienheyd/boilerplate-media-manager
ccast/tagixo-primix
pretendtrue/laravel-builder
sawmainek/laravel-scout-tntsearch-driver
tomshaw/laravel-calendar-table
dibakar/laravel-ownership
steadrun/laravel-monitor
labyrinthe/connect-laravel
elmogy/layan
drewdan/sentinel-client
dskripchenko/laravel-llm
fatryst/nuonuo
stevenay/myanfont
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc