Add agent heartbeat monitoring and fix a query-language lexer bug
Agents now send an independent "still alive" record on a configurable schedule (seconds/minutes/hours, [heartbeat] in agent.toml), separate from real log traffic and tagged with a sentry.heartbeat attribute. No new wire protocol -- it's an ordinary record through the same PushBatch RPC/mTLS identity every log line already uses. Unavailability alerting reuses the existing absence-condition alert rule type unchanged; no new alerting code was needed. See /docs/agent-heartbeat-monitoring.md for the design and how to build the alert rule. While verifying the alert rule live, found that the query language's lexer never treated '-' as part of an identifier, so any unquoted hyphenated filter value -- including the reference doc's own canonical example, `host!=host-03` -- failed to parse at all. Fixed in api/internal/querylang/lexer/lexer.go with regression tests; a leading '-' still lexes as its own token so earliest=-1h/sort -count are unaffected.
This commit is contained in:
@@ -135,6 +135,24 @@ See `config/agent.example.toml` for all fields.
|
||||
./sentry-agent --config /path/to/agent.toml
|
||||
```
|
||||
|
||||
## Heartbeat and unavailability alerting
|
||||
|
||||
Every agent sends a small, independent "still alive" record on its own
|
||||
schedule (`[heartbeat]` in the config, default every 60s), separate from
|
||||
whatever real log traffic is flowing — see `config/agent.example.toml`.
|
||||
This isn't a new wire protocol: it's an ordinary record through the same
|
||||
`PushBatch` RPC and mTLS identity every log line uses, tagged with a
|
||||
`sentry.heartbeat=true` attribute so it's easy to filter for and doesn't
|
||||
show up as noise in normal log views. Set `interval` to a plain number
|
||||
plus `s`/`m`/`h` (matches the query language's own `earliest=`/`latest=`
|
||||
units); `enabled = false` turns it off entirely.
|
||||
|
||||
The platform has no separate "agent status" concept — an agent going
|
||||
quiet is just the absence of its heartbeat records, which the existing
|
||||
alerting engine already detects natively via an `absence`-condition
|
||||
alert rule. See `/docs/agent-heartbeat-monitoring.md` for the exact rule
|
||||
to create.
|
||||
|
||||
## Running as a Windows service
|
||||
|
||||
"A native Windows service, not a WSL wrapper" means implementing the Win32
|
||||
|
||||
Reference in New Issue
Block a user