Lawliet LAWLIET
Book a demo

60. Agent health: why a host is offline or slow

This guide describes Lawliet 1.6.3.b (the current release, a beta: earlier releases are beta. The first stable release will be 2.0.0). Screens, commands and procedures may change in later versions; the usage guide is updated with each release. Check the version your server runs under Settings > Platform or with ./lawliet version, and see the Releases page for what changed.

Environment > Health answers one question for every host: why is it offline, late or slow? Each host is listed with its reasons in plain language, the most unhealthy first - for example:

heartbeat gaps of 4-6 min every ~10 min since 14:02: while the main loop was busy (main_loop_age 290 s)

Every time on the page is in your own time zone.

TaskPermissionFour-eyes
See the fleet's health and one host's healthView agents-
See the agent's own log lines and Diagnostics errors under Last errorsView agents and Manage settings-

The page only reads what the server already holds; it changes nothing on a host.


60.1 Open the page#

The list refreshes every 30 seconds. The buttons above it filter by state: offline, unhealthy, degraded, healthy (with the count of each).

StateMeaning
offlineNo heartbeat for 5 minutes or more (or the host never reported)
unhealthyOne serious reason (a crash loop, repeating heartbeat gaps, a stuck main loop, a clock 5 minutes off, tampering) or several smaller ones
degradedSomething to look at, nothing serious: a few gaps, a failed command, plain HTTP
healthyHeartbeats on time, nothing lost, nothing failing

The order is by a score that adds up every reason; the score is shown on each row.

60.2 What the reasons mean#

ReasonWhat it meansWhat to do
offline: no heartbeat for ...Nothing has reached the server since the time shownCheck the host is up, the Lawliet agent service runs, and the host reaches the server (proxy, firewall)
heartbeat lateOver the gap threshold but under 5 minutesUsually passes; repeated, it shows as gaps
heartbeat gaps of X-Y min every ~N min since T: ...Gaps that repeat at a regular interval, with the cause the heartbeats themselves reportSee the cause after the colon
N heartbeat gaps in the last 24 h, longest ...Gaps that do not repeatSee the cause after the colon
while the main loop was busy (cause) / main loop busy (its own reason)The agent's main loop (log shipping, DLP, policy refresh, watchdog) had not completed a pass for that long. As a cause it is what was seen during the gaps, not proof it held the heartbeats: since agents 2.1.14.s the heartbeat runs on its own threadLook at what the host is scanning (DLP paths, log volume); collect Diagnostics
the agent restarted / the host restarted (cause)The gap ended with a new agent process, or a new bootSee Restarts in the host panel
crash loop: the agent restarted N times within an hourThe agent process keeps stopping. Counted from the start time agents 1.5.16.s and later reportCollect Diagnostics: its log says why it stops
data lost: N DLP finding(s) dropped / N command result(s) droppedThe agent's queue was full, or results were never acknowledged. Counted since the agent startedFind why the server was slow or unreachable; re-run the DLP scan
N DLP findings waiting to be sentA backlog of 1000 or moreUsually the server or network is slow
the agent uses X % CPU and Y MB, over its ... budgetThe agent's own cost, reported with endpoint telemetry (chapter 55)Lower the telemetry profile, or accept it
the upgrade to V failed / was refused / was rolled back / has been 'state' since TThe latest agent upgrade (chapter 4)Read the detail; retry from Agent versions
clock skewThe host clock is a minute or more away from the server's, with what that breaksSynchronise the host with NTP
N command(s) failed or timed out in the last 24 hThe last one is named with its errorOpen the host panel's Last errors
talks to the server over plain HTTPThe agent token and its data cross the network unencryptedMove the agent to HTTPS (chapter 6)
self-protection reports ...The agent's files or service were tampered with (chapter 16)Investigate the host

A gap is a time between two heartbeats longer than 2.5 heartbeat intervals (at least the interval plus 45 seconds): 150 seconds for the default 60-second interval. Agents 1.5.16.s and later report their interval; for older agents 60 seconds is assumed.

60.3 Procedure: find out why one host is offline or slow#

  1. Open Environment > Health and click the host (or open it from Environment > Hosts).
  2. Read Why: the reasons, most serious first.
  3. Read the sections below it:
SectionWhat it shows
Heartbeats, last 24 hOne bar for the last 24 hours: green on time, amber a gap, red offline, grey not watched yet (before Lawliet 1.5.16.s started watching this host - no gap is ever claimed for that time). Under it, each gap with its times, the main loop age and whether the agent or the host restarted. The percentage counts watched time only.
CPU and memoryThe agent's own CPU and memory against its telemetry budget (when endpoint telemetry is on), and the host's CPU and memory from the last heartbeat
QueuesMain loop pass age, DLP findings waiting / dropped, command results dropped, FIM events dropped. An agent older than 2.1.14.s does not report its queues: the page says so
Last errorsFailed or timed-out commands (24 h); with Manage settings also the errors and warning/error log lines of the last Diagnostics collection (they can name paths and accounts on the host, as the support archive does)
Restarts, upgrade, clock, transportAgent restarts (24 h, and whether that is a crash loop), host restarts, the latest upgrade, the clock offset explained, HTTPS or plain HTTP

60.4 What is recorded, and for how long#

The server records a heartbeat gap, an agent restart or a host restart only when one happens - a healthy host writes nothing. Records are kept 7 days (at most 500 per host). Removing an agent removes its records; clear-demo removes the sandbox's.

Restarts are counted only for agents that report their start time (1.5.16.s and later); for an older agent the page says "not reported by this agent". A restart is counted whenever the reported start time changes, also after the host clock was set back.

In the sandbox, the health page shows a host with repeating gaps (busy main loop), a host in a crash loop and a host that restarted.