MR2K SOLUTIONS • DEVOPS OPERATIONS

Daily RFB (Ready for Business)

DevOps Morning Health Check & Handover Runbook
Version 1.1 Internal Operations Production Readiness Server • Docker • Nginx • DB • API
RFB objective: establish a repeatable morning readiness view so an authorized backup operator can determine whether the environment is ready for business.
GREEN / PASSCritical services healthy and business smoke tests pass.
AMBER / WARNNon-critical degradation, expected maintenance, or incomplete test.
RED / FAILCritical application, database, network, TLS, Docker, or domain path unavailable.

MR2K SOLUTIONS

DAILY RFB (READY FOR BUSINESS) DEVOPS MORNING HEALTH CHECK & HANDOVER RUNBOOK

Version 1.1 • Effective: 09 September 2026 Owner: DevOps / Infrastructure Operations Classification: Internal Company Operations

1. Executive Summary

This document defines the Daily RFB (Ready for Business) process for MR2K SOLUTIONS. The objective is to make the morning operational state visible and testable even when the primary DevOps engineer is unavailable. The checklist starts with server access and resource health, validates Docker and its domain mappings, checks PostgreSQL and MongoDB, tests externally reachable HTTPS endpoints, reviews recent application logs, and ends with a business-flow smoke test and a written status.

2. RFB Status Rules

3. Daily RFB Flow — Morning Sequence

Login to the server using the approved SSH account and verify the correct host.

Record date, operator, server hostname, uptime and current resource state.

Check disk, memory, CPU load, filesystem capacity and Docker daemon status.

List all Docker containers; identify expected containers that are Up versus Exited/Restarting/Unhealthy.

Validate container port mappings and compare them with the approved domain/service inventory.

Check Nginx (or the approved reverse proxy) configuration and service state.

Test every critical domain over HTTPS; verify HTTP status and TLS reachability.

Check PostgreSQL service, connectivity, database/session health, storage/autovacuum indicators, and perform only authorized safe maintenance.

Check MongoDB service and perform a safe connectivity/read-only validation.

Review recent Docker/application logs for fatal errors, restart loops, database connection errors and upstream failures.

Run critical application API/UI smoke tests, including authentication where applicable.

Confirm no unexpected containers, exposed ports, stopped critical services, certificate warnings, disk pressure or unreviewed cleanup candidates exist.

Perform controlled cleanup only where pre-approved, complete the RFB status sheet and communicate GREEN, AMBER or RED to the team.

4. Server Baseline Checks

Run commands read-only unless otherwise stated.

5. Docker Health Check

The Docker inventory is the primary source of truth for what is currently running on the server.

RFB rule: Any critical application container that is Exited, Restarting continuously, or Unhealthy is a minimum AMBER and normally RED if the corresponding business function is unavailable.

6. Domain → Docker Mapping Validation

Maintain an approved service inventory outside this runbook containing: Domain, HTTPS port, reverse-proxy path, upstream host/port, Docker container, image/tag, application owner and criticality. The morning operator checks the live server against that inventory.

7. PostgreSQL Health Check & Maintenance Readiness

Do not modify data during RFB. Use the least-privileged approved database account.

If PostgreSQL is containerized in a future architecture, use the Docker service check and the approved container healthcheck instead of assuming a host service.

7.1 PostgreSQL Read-Only Operational Checks

These checks extend the basic service/connectivity test. They are read-only and should be run before any maintenance. Use the approved least-privileged account where possible; use the postgres OS account only for administrative visibility.

7.2 PostgreSQL Cleanup & Maintenance Rules

RFB is primarily a health check. PostgreSQL data cleanup is NOT a routine morning deletion task. Never DELETE business data, DROP databases/tables, TRUNCATE tables, terminate sessions, or manually remove WAL/data files during RFB unless an approved incident/change procedure explicitly authorizes it.

7.3 PostgreSQL Evidence to Record

Record PostgreSQL service state, version, pg_isready result, database list, any unusual database growth, long-running/blocking query findings, autovacuum concerns, storage usage, and any approved maintenance performed. Never record database passwords or connection secrets.

9. MongoDB Health Check

If the service is named differently (for example mongodb), use the approved unit name in the service inventory.

10. Application / API Full-Flow Smoke Test

The purpose is not to execute every test case. It is to prove the complete business path from internet entry point through reverse proxy, container, application and database.

Open the primary application domain in a browser and confirm the login page loads.

Verify HTTPS certificate is valid and the browser shows no certificate/security warning.

Login with an approved non-production/test account where available. Never store passwords in this document.

Confirm authentication succeeds and the authenticated landing page/dashboard loads.

Open one core business screen and verify data can be read.

Execute one safe read-only or reversible business action that exercises the API path.

Verify the browser/network requests do not show repeated 401/403/404/5xx errors that are unexpected for the test.

Verify a core database-backed read succeeds.

If the application has event/history/notification endpoints, open one representative record and verify it loads.

Logout and confirm the session is invalidated as expected.

Record the smoke-test result and exact endpoint/function tested.

11. HTTP/API Command Examples

Replace placeholders with values from the approved service inventory.

curl -I https://<domain>/
curl -sS -o /dev/null -w 'HTTP=%{http_code} TIME=%{time_total}\n' https://<domain>/health
curl -sS https://<domain>/health
curl -vk --max-time 15 https://<domain>/api/<safe-read-only-endpoint>

Do not use -k for the normal PASS test. It disables certificate verification and should only be used for troubleshooting.

12. Server Cleanup & Capacity Check

Server cleanup must be controlled. First inspect, then obtain/confirm authorization for any change. Do not use broad destructive cleanup commands on production merely to make the server look clean.

Minimum production cleanup authorization rule: if a cleanup command deletes, prunes, vacuums, terminates, rotates, or modifies anything, treat it as a change/maintenance action. Record what was changed, why, who authorized it, and the post-change verification.

12. Logs & Incident Indicators

13. What Non-DevOps Staff Can Safely Check

The following is the minimum visibility workflow for an authorized backup operator.

SSH to the approved server using the documented access method.

Run the read-only server commands in Section 4.

Run docker ps -a and compare container names/status against the service inventory.

Run nginx -t and service-state checks where the operator has sudo permission.

Run the domain curl checks in Section 6.

Run the approved PostgreSQL/MongoDB connectivity checks.

Open the application and perform the documented smoke test.

Capture the output or screenshots of failures and send them to the escalation channel.

Do not restart containers/services, rotate certificates, edit Nginx, alter environment files, delete containers/images, prune Docker, terminate PostgreSQL sessions, run destructive SQL, or perform server/database cleanup unless the incident/change procedure authorizes it.

14. Daily RFB Record

15. Service Inventory Template

16. Escalation Matrix

17. Evidence Collection Standard

Record the exact time of the failed test.

Capture the command output that demonstrates the issue.

Record affected domain, container, endpoint and database if known.

Do not paste passwords, API keys, JWTs, private keys or database credentials into tickets/chats.

Use ticket/incident IDs to correlate repeated failures.

When a service is restored, repeat the original failed test and record the recovery result.

18. Suggested Morning One-Page Quick Run

For experienced operators, the following condensed sequence provides the first-pass readiness view:

hostnamectl --static && uptime && free -h && df -hT
sudo systemctl --failed
sudo systemctl is-active docker nginx postgresql mongod 2>/dev/null || true
docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
sudo nginx -t
sudo ss -lntp
pg_isready
sudo -u postgres psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database WHERE datistemplate=false ORDER BY pg_database_size(datname) DESC;"
sudo -u postgres psql -c "SELECT schemaname, relname, n_dead_tup, last_autovacuum FROM pg_stat_user_tables ORDER BY n_dead_tup DESC LIMIT 10;"
docker system df
sudo journalctl --disk-usage
mongosh --quiet --eval 'db.adminCommand({ ping: 1 })' 2>/dev/null || true
curl -sS -o /dev/null -w 'HTTPS=%{http_code} TIME=%{time_total}\n' https://<critical-domain>/

19. Governance & Maintenance

This runbook must be updated whenever a production domain, Docker container, port mapping, reverse-proxy route, database architecture, critical business flow, database maintenance policy, cleanup/retention policy, or ownership changes. The service inventory is the authoritative list of expected services. The runbook should be reviewed at least quarterly and after major infrastructure changes.

20. Approval

END OF DOCUMENT • MR2K SOLUTIONS

Document ControlValue
PurposeProvide a repeatable morning full-flow production/server readiness test.
Primary outcomeA clear PASS / WARN / FAIL RFB status before business activity starts.
CoverageLinux server, Docker containers, domain mappings, HTTPS/TLS, PostgreSQL, MongoDB, application endpoints and logs.
ContinuityA non-DevOps team member must be able to execute the checklist and understand what is running/stopped.
Change controlDo not restart, delete, prune, modify configuration, or alter databases during a health check unless authorized.
StatusMeaningAction
GREEN / PASSCritical services are healthy and business smoke tests pass.Business can proceed.
AMBER / WARNNon-critical issue, degraded metric, expected maintenance, or incomplete test.Record issue, notify owner, continue only if business impact is acceptable.
RED / FAILCritical application, database, network, TLS, Docker or domain path is unavailable.Escalate immediately; business readiness is not confirmed.
CheckCommandExpected Result
Identityhostnamectl --static; whoamiCorrect server and approved operator.
UptimeuptimeServer is up; load is reasonable for workload.
OScat /etc/os-releaseExpected Ubuntu/Linux release.
CPU / memoryfree -h; nprocNo unexpected memory exhaustion or CPU pressure.
Diskdf -hTCritical filesystems have safe free space; investigate >80–85%.
Inodesdf -ihNo filesystem inode exhaustion.
Failed servicessystemctl --failedNo unexpected failed critical services.
Dockersystemctl is-active docker; docker infoDocker is active and responding.
PurposeCommandWhat to record
All containersdocker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'Name, image/tag, status, ports.
Running onlydocker psExpected production services are Up.
Restart loopsdocker ps -a --filter status=restartingNormally empty.
Exited containersdocker ps -a --filter status=exitedInvestigate any critical service.
Health statusdocker ps --format '{{.Names}}\t{{.Status}}'Healthy where healthchecks exist.
Docker networksdocker network lsExpected networks exist.
Imagesdocker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.CreatedSince}}'Confirm approved image/tag is deployed.
ValidationCommand / MethodExpected
Listening portssudo ss -lntpOnly approved public/service ports are listening.
Docker port mapdocker ps --format 'table {{.Names}}\t{{.Ports}}'Expected host-to-container mappings.
Nginx statesudo systemctl is-active nginxactive
Nginx configsudo nginx -tsyntax is ok; test is successful
Nginx sitesls -la /etc/nginx/sites-enabled/Expected sites are enabled.
DNS resolutiongetent hosts <domain>Domain resolves to expected server/load balancer.
HTTPScurl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://<domain>/Expected HTTP status, typically 200/204/3xx depending on endpoint.
CheckCommand / MethodExpected
Servicesudo systemctl is-active postgresqlactive
Versionpsql --versionExpected major version.
Connectionpg_isreadyaccepting connections
Sessionssudo -u postgres psql -c '\l'Database server responds; expected databases visible.
Read-only querypsql '<approved connection string>' -c 'SELECT now();'Returns current DB time.
Errorssudo journalctl -u postgresql --since 'today' --no-pager | tail -n 100No unexplained fatal/startup/storage errors.
CheckCommand / MethodExpected / Action
Database listsudo -u postgres psql -c '\l'Expected production databases are present; investigate unexpected databases.
Database sizessudo -u postgres psql -c "SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database WHERE datistemplate=false ORDER BY pg_database_size(datname) DESC;"No unexpected rapid growth; investigate databases consuming unusual space.
Active sessionssudo -u postgres psql -c "SELECT datname, usename, state, count(*) FROM pg_stat_activity GROUP BY datname, usename, state ORDER BY count(*) DESC;"No unexpected session surge or excessive idle/active connections.
Long-running queriessudo -u postgres psql -c "SELECT pid, datname, usename, now()-query_start AS duration, state, left(query,120) FROM pg_stat_activity WHERE query_start IS NOT NULL AND now()-query_start > interval '10 minutes' AND state <> 'idle' ORDER BY query_start;"Normally empty. Investigate before terminating anything.
Dead tuples / autovacuumsudo -u postgres psql -c "SELECT schemaname, relname, n_live_tup, n_dead_tup, last_autovacuum, last_autoanalyze FROM pg_stat_user_tables ORDER BY n_dead_tup DESC LIMIT 20;"High dead tuples or stale autovacuum/analyze dates require review.
Blocking / waitsReview pg_stat_activity and pg_locks for blocked sessions.No unexplained blocking of critical application queries.
Replication (if applicable)sudo -u postgres psql -c 'SELECT * FROM pg_stat_replication;'Expected replicas connected and healthy; N/A for standalone PostgreSQL.
PostgreSQL storagesudo du -sh /var/lib/postgresql /var/log/postgresql 2>/dev/nullStorage should remain within approved capacity; investigate rapid growth.
Maintenance AreaSafe RFB ActionDo Not Do During Normal RFB
Dead tuples / vacuumReview n_dead_tup and autovacuum timestamps; record candidates for maintenance.Do not manually VACUUM FULL or change autovacuum settings without authorization.
Long-running queriesIdentify and report queries running beyond the approved threshold.Do not pg_terminate_backend() unless incident procedure authorizes it.
Database growthReview database/table size and compare with baseline.Do not delete rows or archive data without the application/data-owner procedure.
PostgreSQL logsCheck size and recent errors under /var/log/postgresql or journal.Do not rm active PostgreSQL logs manually.
BackupsVerify the approved backup job/status if available.Do not delete backup files as part of RFB.
CheckCommand / MethodExpected
Servicesudo systemctl is-active mongodactive, if host-installed.
Versionmongosh --versionExpected client version.
Pingmongosh --quiet --eval 'db.adminCommand({ ping: 1 })'ok: 1
Server statusmongosh --quiet --eval 'db.serverStatus().ok'1
Errorssudo journalctl -u mongod --since 'today' --no-pager | tail -n 100No unexplained fatal/storage/startup errors.
AreaInspect / Read-Only CommandExpectedCleanup Rule
Disk usagedf -hTCritical filesystems preferably below 80–85%.Investigate largest consumers before deleting anything.
Inodesdf -ihNo inode exhaustion.Locate high-file-count directories before cleanup.
Top filesystem usagesudo du -xhd1 / 2>/dev/null | sort -hUnderstand major space consumers.Delete only approved application/temp data.
Docker diskdocker system dfUsage understood; no unexpected accumulation.Remove stopped containers/images only when approved and after confirming rollback needs.
Stopped containersdocker ps -a --filter status=exitedNormally empty for production.Remove only verified obsolete containers; confirm no required mounts/configuration.
Unused imagesdocker imagesApproved rollback images retained.Do not run docker image prune -a routinely; remove only explicitly approved images.
Nginx logssudo du -sh /var/log/nginx; sudo tail -n 100 /var/log/nginx/error.logNo uncontrolled log growth; no repeated critical errors.Use approved logrotate/retention process, not manual deletion of active logs.
System journalsudo journalctl --disk-usageJournal storage within approved limit.Use approved journal retention policy; do not vacuum blindly.
APT cachesudo du -sh /var/cache/apt 2>/dev/nullNo abnormal cache growth.If approved, use package-manager cleanup; do not remove packages to free space.
Temporary filessudo du -sh /tmp /var/tmp 2>/dev/nullNo abnormal growth.Delete only known-safe stale temporary files; preserve application/runtime files.
IndicatorCommandEscalation Trigger
Container logsdocker logs --tail 200 <container>Repeated ERROR/FATAL, startup failure, DB connection failure.
Container eventsdocker events --since 30m --until 0sUnexpected restart/stop activity.
Nginx errorssudo tail -n 200 /var/log/nginx/error.logRepeated upstream timeout/refused/5xx.
System journalsudo journalctl --since 'today' -p err..alert --no-pagerNew critical system errors.
Disk pressuredf -hTCritical filesystem near capacity.
Memory pressurefree -h; sudo dmesg -T | grep -i -E 'oom|out of memory' | tailOOM events or severe memory pressure.
FieldEntry
Date / Time____________________________
Operator____________________________
Server hostname____________________________
Overall statusGREEN / AMBER / RED
Docker statusPASS / WARN / FAIL
Domain/HTTPS statusPASS / WARN / FAIL
PostgreSQLPASS / WARN / FAIL / N/A
MongoDBPASS / WARN / FAIL / N/A
Application smoke testPASS / WARN / FAIL
Critical issue / ticket____________________________
Escalated to____________________________
Business notifiedYES / NO
Operator sign-off____________________________
ServiceDomainContainerHost PortContainer PortDBCriticalityOwner
Example – Application Aapp.example.comapp_a443/proxy8080PostgreSQLCriticalTeam/Owner
Example – Authauth.example.comauth_service443/proxy8072PostgreSQL/MongoDBCriticalTeam/Owner
Add actual services from server inventory
SeverityExampleImmediate ActionOwner
P1 / REDPrimary application unavailable; database unavailable; HTTPS broken for critical domain.Stop RFB as PASS; escalate immediately; preserve evidence.DevOps + application owner + management
P2 / AMBEROne non-critical service unhealthy; elevated errors; degraded endpoint.Record, notify owner, assess business impact.DevOps / service owner
P3 / INFOExpected warning, scheduled maintenance, cosmetic/log noise.Record for follow-up.Service owner
RoleNameSignatureDate
DevOps / Infrastructure Owner____________________________________________
Engineering Manager____________________________________________
Operations / Business Owner____________________________________________