Recommendations
Cetacean watches your cluster and lists what looks wrong at /recommendations in the dashboard—services
with no health check, replicas that keep dying, containers sized far above what they use. Findings
refresh on their own; you never trigger a scan.
It’s on by default. Turn it off with server.recommendations.
What gets flagged
Each finding names a service, a node or the cluster, and carries a severity of info, warning or
critical.
no-healthcheck- The service defines no health check, so Swarm can’t tell a hung container from a working one
no-restart-policy- Restart policy is
none, so a failed task is never replaced single-replica- One replica, so any node problem is an outage
manager-has-workloads- A manager node is
active, so Swarm may schedule ordinary tasks on it alongside cluster management. Not raised unless a ready, active worker could take those tasks uneven-distribution- The busiest node runs more than three times the tasks of the quietest
flaky-service- More than 5 involuntary task failures within the lookback window
node-disk-full- Node disk above 90%
node-memory-pressure- Node memory above 90%
over-provisioned- Reserved far more CPU or memory than it uses
approaching-limit- Usage climbing towards its limit
at-limit- Usage at its limit, so it’s being throttled or is at risk of being killed
no-limits,no-reservations- No limit or reservation set, so Swarm can’t schedule it well
Act on a finding
Findings that have an obvious fix get an Apply suggested value button:
All three also need write permission on the service—the button only appears for callers who have it. Everything else is reported for you to act on yourself.
Without Prometheus
Cetacean still flags configuration and topology problems, and still catches flaky services, using Docker state
alone. What disappears is everything measured: the whole sizing group, plus node-disk-full and
node-memory-pressure. Nothing errors—you simply see fewer findings.
Sizing needs cAdvisor and the node checks need node-exporter. See Monitoring for the setup.
Tune the sizing thresholds
Sizing is the only group you can tune, through
sizing.thresholds.over_provisioned,
sizing.thresholds.approaching_limit and
sizing.thresholds.at_limit—the fractions of the reservation or limit at
which each finding appears. sizing.headroom_multiplier sets how much room the
suggested value leaves above observed usage, and sizing.thresholds.lookback
how far back Cetacean looks, which is also the window flaky-service counts failures in.
API
GET /recommendations returns the current findings and a severity summary; the MCP
get_recommendations tool serves the same data. See the API reference for the response schema.