Documentation
Docs Home › Hosting Agent › Signal Classes

Signal Classes

Hosting signal classes

Purpose

List the Hosting source identifiers operators configure, what each class is, and which ones are expected to stay blocked or absent until you change the host.

Audience

Operators filling hosting.sources[] and reading Log Sources / Hosting status.

Edition

ENTERPRISE_ONLY.

Status

SUPPORTED as the v2 example inventory plus the Hosting capability matrix completeness labels. Paths in the example are examples. Events the Manager shows are category-safe: no raw payload or customer IPs in Hosting event APIs.

Prerequisites

hosting.enabled: true and a source id the parser bundle knows. The UI does not define parsers.

Required permissions

Exact-path read for zwall-hosting on every file you expect to be COLLECTING / active. No shipped universal ACL.

Source inventory

From configs/agent.hosting-plesk-observe-v2.example.yml and the Hosting v2 matrix.

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

Source idClassExample pathCompleteness
hosting.ssh.auth.v1SSH authentication/var/log/auth.logimplemented and tested
hosting.ftp.auth.v1FTP authentication/var/log/auth.logimplemented and tested (fixed transfer log absent)
hosting.mail.auth.v1SMTP/mail authentication/var/log/mail.logimplemented and tested
hosting.plesk.panel.v1Plesk panel authentication/var/log/plesk/panel.logREQUIRES_PRODUCTION_PERMISSION (example state: permission_blocked)
hosting.nginx.access.v1Nginx access/var/log/nginx/access.logREQUIRES_PRODUCTION_PERMISSION
hosting.nginx.error.v1Nginx error/var/log/nginx/error.logREQUIRES_PRODUCTION_PERMISSION
hosting.apache.access.v1Apache access/var/log/apache2/access.logimplemented and tested
hosting.apache.error.v1Apache error/var/log/apache2/error.logimplemented and tested
hosting.php_fpm.error.v1PHP-FPM/var/log/php8.3-fpm.logSOURCE_NOT_PRESENT (parser exists; no approved fixed production path in the matrix)
hosting.mysql.error.v1MySQL/var/log/mysql/error.logimplemented and tested
hosting.mariadb.error.v1MariaDB alternate file/var/log/mariadb/mariadb.logSOURCE_NOT_PRESENT (MySQL-compatible source exists)
hosting.fail2ban.observe.v1Fail2Ban observe/var/log/fail2ban.logrotation-safe permission contract; example still permission_blocked
hosting.dns.error.v1DNS/var/log/syslogimplemented and tested
hosting.modsecurity.global.metadata.v1ModSecurity global metadata only/var/log/modsec_audit.logGLOBAL_METADATA_ONLY — not per-site audit files

Also implemented, not as hosting.sources[] file tails:

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

SignalExampleNotes
Certificate-expiry metadatahosting.certificates[] 127.0.0.1:8443loopback TLS expiry, not a PKI inventory; names/SANs/bytes never leave the host
Service healthhosting.services[] (ssh.service, nginx.service, apache2.service, mariadb.service, postfix.service, dovecot.service, xinetd.service, named.service, fail2ban.service, sw-cp-server.service)unit names are examples
Disk / inode snapshotshost statecategory-safe
Source / parser healthHosting statusincludes parser_unsupported and related states
Network observationloader + hosting.networksee Network observation

hosting.sites[] maps id, document_root, system_user for local identity. Those paths are not copied into events.

Source states you will see

Hosting health accepts states including:

active, available_but_disabled, source_not_present, permission_blocked, parser_unsupported, degraded, failed

Permission status values include readable, not_required, permission_blocked, operator_approval_required, source_not_present.

Example YAML pre-marks Plesk/nginx/Fail2Ban as permission_blocked / permission_denied, and PHP-FPM/MariaDB as source_not_present / not_present. That is the intended default, not a crash.

Procedure

  1. Diff the example id list against logs that exist on this OS (Debian Apache vs RHEL httpd, Plesk vs none).
  2. Point path at the real file. Do not create fake logs to satisfy the example.
  3. Grant exact-path read to zwall-hosting (and, if you run the v1 unit, adm / psaserv as shipped — v2 is adm only).
  4. For Fail2Ban, the example permission helper uses owner root, group zwall-hosting, mode 0640, rotation-safe create policy — still operator-owned.
  5. Accept SOURCE_NOT_PRESENT for PHP-FPM and alternate MariaDB unless you have a real file and an approved path.
  6. Treat ModSecurity as global metadata only unless per-site audit files are separately in scope (they are not in this inventory).

Verification

GET /api/v1/agents/:id/hosting/status — per-source state / permission_status / parser version.

GET /api/v1/agents/:id/hosting/events — projection only:

event_id, source, category, severity, timestamp, parser, contract_version, review_state

Optional limit query 1..100 (default 50).

Log Sources UI: collector state, lag, permission reason.

Expected result

SSH/FTP/mail/Apache/MySQL/DNS collectors can become active once paths and ACLs match. Plesk/nginx stay blocked until production ACLs. PHP-FPM/MariaDB alternate may remain absent. Events in the Manager omit raw bodies and customer IPs.

Failure modes

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

StateMeaningAction
permission_blockedfile exists; zwall-hosting cannot readexact-path ACL; do not chmod 777
source_not_presentpath not on this hostretarget or accept absence
parser_unsupportedid not in parser bundledo not invent parser ids
operator_approval_requiredproduction permission gateowner ACL decision
Empty hosting eventsno Hosting log types ingestedstatus first, then events

Troubleshooting

See Troubleshooting. Parser health and heartbeat observation_only belong in the same diagnosis as source state.

Security considerations

  • Hosting sources are excluded from automatic/provider AI analysis.
  • Do not ship customer log bodies in tickets; status reasons are enough.
  • Fail2Ban observe is observation of Fail2Ban’s own log, not Zwall becoming Fail2Ban.

Limitations

  • Not a universal log shipper.
  • Not per-site ModSecurity WAF management.
  • Certificate helper is loopback expiry, not inventory of every vhost certificate.
  • Completeness labels are matrix facts, not SLAs.