feat(observability): correlate netprobe attribution with NetFlow into attributed flows (#3425) #3516
No reviewers
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!3516
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/attributed-flow-correlation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Part of #3425. Makes the demo's
/observability/flows/attributedpage show real attributed flows from the live system, with an architecture that scales to fleets — NetFlow stays the flow source, netprobe only supplies the process, and the correlation is a set-based DB join in core-elx (no agent-as-flow-collector, no host-slice routing, no per-host config).The model
ocsf_network_activity(unchanged — that's the 9.5k flow rows/24h already there).FlowAttributionEvent; no netprobe/agent/flow-collector changes.event_type=attributed_flowwith the process context.attributed_flowrows (was hardcoded fixtures).Changes
migrationplatform.flow_process_attributions— 5-tuple + process + partition + observed_at, indexed.ServiceRadar.FlowAttribution—persist/3(StatusHandler writes pushed attributions),correlate/0(the join/UPDATE),prune/0(60-min retention).ServiceRadar.FlowAttribution.Correlator— GenServer, correlate+prune every 30s, supervised under the EventWriter supervisor.status_handler.ex— persist pushed attributions (additive; the existing real-time joiner path is untouched).attributed_live.ex— realRepo.queryagainstocsf_network_activity.Why not the alternatives
host_slicesconfig (flow-collector per-agent IP map): doesn't scale to 100k hosts — rejected.Deploy / validation
Needs a core-elx + web-ng image build and the migration to run (core-migrations-job). After deploy, a netprobe-equipped agent (e.g.
agent-sr-test-pve04) capturing on its interface will push attributions that correlate against its NetFlow (its host IP already appears in 142 flows/24h) → rows appear on the attributed-flows page. ⚠️ Elixir not compiled locally in this environment — CI build is the first compile/credo gate.🤖 Generated with Claude Code