log ignored agent collector keys for later UI enhancements
The endpoint agent now sends disk, bios, memory, processor, osinfo, and domain telemetry. The server does not persist these yet, so ingest logs any unpersisted payload keys with a compact preview. This makes incoming telemetry observable in the logs before any UI or schema work, so we can confirm the agent is sending it and enhance the UI later.
This commit is contained in:
committed by
cproudlock
parent
2a4b1bb040
commit
57845e1a9a
@@ -37,6 +37,21 @@ logger = logging.getLogger(__name__)
|
||||
# of a raw event firehose.
|
||||
CURATED_EVENT_IDS = frozenset(EVENT_CATALOG)
|
||||
|
||||
# Top-level payload keys the ingest path knows about today - either persisted on
|
||||
# EndpointState, appended as events, or relayed to the computers collector.
|
||||
# Anything the agent sends outside this set is not stored yet; it is logged (see
|
||||
# apply_collector_payload) so new agent telemetry - disks, bios, memory, etc. -
|
||||
# is observable in the logs before the server grows columns for it. Keep this in
|
||||
# lockstep with the keys consumed in apply_collector_payload and the computers
|
||||
# handoff subset.
|
||||
KNOWN_PAYLOAD_KEYS = frozenset({
|
||||
'hostname', 'adopt', 'loggedinuser', 'serialnumber', 'pctype',
|
||||
'machinenumber', 'vendorname', 'modelnumber', 'osname', 'ipaddress',
|
||||
'agentversion', 'lastboottime', 'uptimeseconds', 'idleseconds',
|
||||
'cpupercent', 'memorypercent', 'services', 'ports', 'interfaces',
|
||||
'scheduledtasks', 'events',
|
||||
})
|
||||
|
||||
|
||||
def _parse_dt(value):
|
||||
"""Best-effort parse of an ISO-8601 string to naive UTC, or None."""
|
||||
@@ -618,6 +633,22 @@ class EndpointsPlugin(BasePlugin):
|
||||
|
||||
state.lastreportedat = datetime.utcnow()
|
||||
|
||||
# Log any keys the agent sent that the ingest path does not consume yet.
|
||||
# New agent telemetry (disks, bios, memory, ...) lands here first: it is
|
||||
# not persisted until the server grows columns for it, but logging the
|
||||
# keys and a compact preview makes incoming telemetry visible in the
|
||||
# logs so we can confirm the agent is sending it before wiring the UI.
|
||||
unknown_keys = [key for key in payload if key not in KNOWN_PAYLOAD_KEYS]
|
||||
if unknown_keys:
|
||||
preview = {key: payload.get(key) for key in sorted(unknown_keys)}
|
||||
try:
|
||||
preview_text = json.dumps(preview, default=str)[:2000]
|
||||
except (TypeError, ValueError):
|
||||
preview_text = repr(preview)[:2000]
|
||||
logger.info(
|
||||
'endpoint %s sent %d unpersisted telemetry key(s): %s | preview=%s',
|
||||
hostname, len(unknown_keys), sorted(unknown_keys), preview_text)
|
||||
|
||||
stored_events = 0
|
||||
for record in (payload.get('events') or []):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user