Documentation
Docs Home › Troubleshooting

Troubleshooting

Use this index to pick the document that matches the symptom. Do not start from a component name if the symptom is ambiguous.

This page does not replace Hosting-only, Virtualization-only, or zwallctl-only books. Those remain the deeper component procedures.

How to use this index

  1. Match the symptom, not the first log line.
  2. Confirm edition (Community vs Enterprise) before following an Enterprise-only endpoint.
  3. Confirm Agent profile (Hosting observation vs Virtualization enforcement) before treating missing drops as a bug.
  4. Treat GET /health/live 200 as process-alive only. Readiness is GET /health/ready.
  5. If the procedure would require an unpublished contract, stop at the named engineering gap. Do not invent Linux, eBPF, or HA folklore.

Symptom → document

Scroll sideways to see the full table. Use the arrow keys when focused.

SymptomGo toEdition
Console, API, or zwallctl ping cannot reach the ManagerManager UnavailableShared
/health/live 200 but /health/ready 503Manager UnavailableShared
Login returns Secure HTTPS session requiredManager Unavailable and TLSShared
zwallctl talks to port 8080 while the Manager listens on 8443Manager Unavailable and CLIShared
Agent will not register / pre-registerAgent EnrollmentShared
Community fourth Agent rejected (COMMUNITY_AGENT_LIMIT_REACHED)Agent EnrollmentCommunity
Enterprise Agent enroll returns 403 LicenseErrorResponseAgent EnrollmentEnterprise
Invalid Agent profile identity or Hosting vs Virtualization mix-upAgent EnrollmentSHARED / Hosting ENTERPRISE
Agent shows offline / disconnected / no heartbeatAgent DisconnectedShared
Hosting heartbeat 400 Invalid hosting observation heartbeatAgent DisconnectedEnterprise
POST /api/v1/agents/:id/restart returns 409 on a Hosting AgentAgent DisconnectedEnterprise
No security logs, Hosting events, or collector statusMissing TelemetrySHARED; Hosting ENTERPRISE
Hosting collector permission_blocked or source_not_presentMissing TelemetryEnterprise
Hosting observer socket missingMissing TelemetryEnterprise
Rule created but traffic is not droppedEnforcementSHARED; Hosting never enforces
Assigning a rule to a Hosting Agent returns 409EnforcementEnterprise
Testing mode appears to flush or disable rulesEnforcementShared
eBPF not loaded / XDP attach failed / capability deniedeBPFSHARED; Hosting loader ENTERPRISE
GET /api/v1/dashboard/ebpf-health missing on CommunityeBPFCOMMUNITY gap vs Enterprise
Manager will not start: database / SSL / migrationDatabaseShared
-migrate vs -preflight-migrate vs -check-schema confusionDatabaseShared
Backup script exists; restore is not a certified contractDatabaseShared
Cloudflare / GeoIP / RBL / notifications / ModSecurity / libvirt / Prometheus / unblock portalIntegrationssee that file
AI Preview screens missing, connection test fails, or “approved but not enforced”AI PreviewENTERPRISE_ONLY PREVIEW
zwallctl start / stop prints not implementedCLIShared
Enterprise zwallctl secret-rotate says API rotation is retiredCLIENTERPRISE vs COMMUNITY
Hosting-only collector, loader, or ACL symptomsTroubleshootingEnterprise
Virtualization-only libvirt / XDP / VM symptomsTroubleshootingShared

First probes (any Manager incident)

These are unauthenticated process probes. They are not /api/v1 except the duplicate GET /api/v1/health.

sudo systemctl status zwall-manager
sudo journalctl -u zwall-manager -n 200 --no-pager
curl -sS https://manager.example.com:8443/health/live
curl -sS https://manager.example.com:8443/health/ready

Scroll sideways to see the full table. Use the arrow keys when focused.

ResultMeaningNext
Unit inactive / failedProcess not runningManager Unavailable
live 200 {"status":"alive",...}Process up; not database-readystill call ready
live 503 draining or updatingUpdater runtime mode; not a load-balancer “healthy”do not treat as HA failover
ready 200 status: readyListeners admitted and database check passedAgent/console issues are elsewhere
ready 503 listener_admission_incompleteHTTP servers not serving (TLS/bind)Manager Unavailable
ready 503 database: not_configured|timeout|unavailablePostgreSQL / ssl_mode / credentialsDatabase
ready 503 cluster: timeoutCluster enabled and timed outnot a public HA product; do not fail over cluster
connection refused on 8080zwallctl default URL, not the example Manager portCLI
connection refused on 8443Manager not listening or wrong bindManager Unavailable

Prefer the operator CA with curl --cacert. curl -k only distinguishes “TLS mismatch” from “nothing listening”; it is not a production health check.

Profile split that causes false incidents

Scroll sideways to see the full table. Use the arrow keys when focused.

If you expectedBut the node isTypical false conclusion
Packet dropHosting Agent (protection_model: hosting, hosting.enforcement: false)“Enforcement is broken” — Hosting cannot receive rules (409)
Hosting collectorsVirtualization Agent / zwall-agent.service“No hosting status”
Remote zwallctl startAny editionCommand prints not implemented
Lossless event deliveryAny editionNot a certified contract

Engineering gaps that stop a complete procedure

Do not invent a workaround that pretends these are closed.

Scroll sideways to see the full table. Use the arrow keys when focused.

IDWhy troubleshooting stops
OS/kernel matrixNo single certified OS/kernel matrix
Filesystem prefixesMultiple filesystem prefixes (/etc/zcs, /etc/zwall-manager, /etc/zwall-hosting)
Manager URLs and portsExample Manager port 8443 vs zwallctl default http://localhost:8080
Backup/restore contractBackup/restore scripts exist; not a certified recovery contract
Manager cluster HAManager cluster is not a public HA product
UID/GID filteringUID/GID filtering is not a customer contract
ACME certificationACME HTTP-01 + Cloudflare DNS-01 not certified
Event delivery guaranteesEvent-delivery exactly-once is open
Secret custody acceptanceSecret-custody implemented, not finally security-accepted
Hosting collector ACLsNo shipped universal Hosting collector ACL
Remote start/stopzwallctl start/stop not implemented
Stale agent pathStale start-agent path /etc/zwall/agent.yml — do not copy
PostgreSQL versionCommunity README PostgreSQL 15+ vs Enterprise observed PostgreSQL 16
Enterprise HTTP groupsCloudflare HTTP group and unblock portal are Enterprise-only in V1 routers