Skip to content

feat: add independent Gatus monitoring and healthcheck integration - #40

Merged
DenizAltunkapan merged 21 commits into
Vault-Web:mainfrom
prashantpiyush1111:feature/32-independent-gatus-monitoring
Nov 3, 2026
Merged

DenizAltunkapan merged 21 commits into
Vault-Web:mainfrom
prashantpiyush1111:feature/32-independent-gatus-monitoring

Conversation

@prashantpiyush1111

@prashantpiyush1111 prashantpiyush1111 commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Added independent Gatus monitoring for critical services.
  • Added frontend and backend health checks for Vault Web and Cloud Page, plus Vaultwarden, Vault Habits, and WebSocket connectivity.
  • Bound the Gatus dashboard to loopback on port 8082.
  • Added a systemd service to run Gatus independently of Docker Compose.
  • Added host and backup heartbeat scripts for healthchecks.io integration.
  • Added installation and configuration instructions.
  • Updated the Gatus installer to install the pinned release through Go modules instead of downloading the unavailable release archive.
  • Added a minimum Go version check (1.23.3).

Linked Issue

Closes #32

Testing

  • Verified Gatus installation using go install and locally started the dashboard.
  • Parsed the updated Gatus YAML and checked the Cloud Page backend status/body conditions.
  • Confirmed the Cloud Page probe uses the existing public Secure Send route; the Cloud Page controller test asserts its expected 404 response body.
  • Validated the backup heartbeat hook with a stub curl and the documented environment file; it invoked the expected healthchecks.io URL. An unset UUID produces a warning and no request.
  • Validated shell syntax and YAML configuration.

Notes

  • Gatus runs as an independent systemd service outside Docker Compose.
  • Private endpoints require appropriate VPN and Split-DNS connectivity.
  • The Cloud Page stop/start verification and a real healthchecks.io ping still need to be run on the deployment host with its configured URLs and UUIDs.
  • Replace example URLs and healthchecks.io UUID placeholders before deployment.
  • No production backup job or live endpoint was interrupted during these checks.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agent review

The Gatus dashboard is not bound to loopback as the README says. It will listen on all interfaces by default, which exposes the internal service topology and health. See the inline comment.

Generated by Pull Request Review for #40 · copilot · auto · 14.7 AIC · ⌖ 0.504 AIC · ⊞ 6.9K

Comment thread monitoring/gatus/config.yaml Resolved

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agent review

Suggestion: approve. I did not find any high-confidence correctness, security, regression, or missing-test issues in this diff.

Generated by Pull Request Review for #40 · copilot · auto · 18 AIC · ⌖ 0.504 AIC · ⊞ 6.9K

@github-actions
github-actions Bot dismissed their stale review November 2, 2026 20:46

Superseded by updated review from same workflow.

@DenizAltunkapan DenizAltunkapan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The independent systemd setup and the explicit loopback dashboard binding fit the current deployment architecture; the earlier dashboard-exposure finding is fixed. However, two operational issues need correction before merging: the default Cloud check only tests the Angular SPA, and the documented backup integration does not pass HC_BACKUP_UUID to its hook. Reviewed against current main (5fa791b); the branch is 8 commits behind but conflict-free. Shell syntax checks passed. I reproduced the backup hook exiting 0 without invoking curl when HC_BACKUP_UUID is not inherited, and invoking curl when explicitly exported (using a stub, no external request). No pull-request CI runs were returned for this head. Please add validation that a Cloud backend outage makes its check fail and that the documented backup service setup sends a heartbeat after successful completion.

Comment thread monitoring/gatus/gatus.env.example Resolved

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agent review

Suggestion: approve. I did not find any high-confidence correctness, security, regression, or missing-test issues in this diff.

Generated by Pull Request Review for #40 · copilot · auto · 17.3 AIC · ⌖ 0.502 AIC · ⊞ 7.1K

@DenizAltunkapan DenizAltunkapan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both previous blockers are addressed. The Cloud probe now requires the backend's expected 404/body through /cloud-api/, matching the Secure Send controller, exception handler and database lookup. The documented backup drop-in supplies HC_BACKUP_UUID and uses ExecStartPost after the oneshot backup succeeds. Rechecked YAML, loopback binding and shell syntax; stub-curl tests pass for successful ping, unset UUID and HTTP failure propagation. Reviewed against current main (791b8e9); no merge conflicts or further blocking findings. No regular PR CI runs were returned for this head. Live URL/stop-start and real heartbeat checks remain deployment-host verification.

@DenizAltunkapan
DenizAltunkapan merged commit 95c8fee into Vault-Web:main Nov 3, 2026
6 checks passed
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.

[Feature]: Add independent Gatus status monitoring and external host heartbeats

2 participants