feat: mdns collector #2861
Open
mikemiles-dev wants to merge 5 commits from
refs/pull/2861/head into staging
pull from: refs/pull/2861/head
merge into: carverauto:staging
carverauto:staging
carverauto:fix-endpoint-inventory-enablement
carverauto:fix-addon-systemd-self-heal
carverauto:fix-agent-config-reapply-storm
carverauto:fix-jetstream-durable-recreate
carverauto:fix-device-detail-ui
carverauto:fix-capacity-forecast-math
carverauto:fix-sysmon-process-metrics-visibility
carverauto:demo/prod-release
carverauto:release/v1.3.2-pre1
carverauto:work/3796-review-fixes
carverauto:work/3796-production-2m-shard-ready-batches
carverauto:work/3788-rec10-reject-misbucketed-ocsf-source
carverauto:work/3796-production-2m-compact-events
carverauto:work/3796-production-2m-index-lookup
carverauto:work/3788-remove-plugin-direct-metric-insert
carverauto:work/3796-production-2m-shard-fanout
carverauto:work/3788-rec1-plugin-metric-v2-envelope
carverauto:work/3796-production-2m-batch-seen-inserts
carverauto:work/3796-production-2m-defer-event-prune
carverauto:work/3796-production-2m-benchmark-instrumentation
carverauto:work/3796-anomaly-production-2m-spec
carverauto:work/3796-deepcausality-impl
carverauto:work/3788-remove-dead-metric-handlers
carverauto:work/3788-rec10-consumer-metric-type-telemetry
carverauto:work/v1.3.2-observability-metrics
carverauto:work/3788-anomaly-scale-architecture
carverauto:work/3788-compact-anomaly-evaluator
carverauto:work/3789-3790-counter-cgroup-specs
carverauto:work/3789-counter-normalizer
carverauto:work/3796-deepcausality-reasoner
carverauto:work/refactor-anomaly-reasoner-deepcausality
carverauto:work/3789-snmp-raw-counters
carverauto:work/cnpg-application-network-policy
carverauto:work/anomaly-context-name-conflicts
carverauto:work/3578-proxmox-host-identity
carverauto:work/3578-retire-stale-agent-devices
carverauto:work/3607-agent-command-json-payloads
carverauto:work/3731-enable-causal-spine-demo
carverauto:work/3742-security-finding-device-correlation
carverauto:work/3733-capacity-forecast-source
carverauto:work/3734-observability-health-view
carverauto:work/3736-device-anomaly-capacity
carverauto:work/3748-security-live-posture
carverauto:work/3747-security-findings-payload
carverauto:work/3727-3728-sysmon-metrics-fallback
carverauto:work/causal-engine-msrv-1-90
carverauto:work/3764-causalflow-anomaly-nif
carverauto:work/causal-engine-deep-causality-graph
carverauto:work/3713-causal-operator-rule-ttl
carverauto:work/3741-cap-passive-netprobe-service-state-details
carverauto:work/3742-security-finding-entity-rendering
carverauto:work/3743-security-scanner-signal-freshness
carverauto:work/3744-security-finding-identity-metadata
carverauto:work/3745-preserve-dashboard-frame-results-on-error
carverauto:work/3750-partial-sysmon-bulk-inserts
carverauto:work/3751-reconcile-jetstream-consumers
carverauto:work/3753-logical-gateway-id
carverauto:work/3695-3696-connect-cache-zen-normalizer
carverauto:work/3700-fence-anomaly-checkpoints
carverauto:work/3737-3741-services-state-performance
carverauto:work/3749-sysmon-legacy-service-check-bridge
carverauto:work/3691-remove-dead-window-allocation
carverauto:work/3693-rebuild-anomaly-context-from-insert
carverauto:work/3694-coalesce-anomaly-checkpoints
carverauto:work/3697-preserve-rehydrated-verdicts
carverauto:work/3698-3699-capacity-retention-history
carverauto:work/3701-3702-anomaly-config
carverauto:work/3704-anomaly-severity-rollup
carverauto:work/3705-3707-3708-3709-metrics-findings
carverauto:work/3710-3711-3706-3703-causal-alerts
carverauto:work/3712-preserve-causal-live-context
carverauto:work/3713-causal-clearing-signals
carverauto:renovate/ubuntu_jammy-22.04
carverauto:renovate/node_20_alpine-20-alpine
carverauto:renovate/alpine_3_20-3.20
carverauto:work/3597-phase7.3-elixir-validation-cleanup
carverauto:work/3597-phase7.2-live-otel-validation
carverauto:work/3597-phase7.1-openspec-validation
carverauto:work/3597-phase6.3-guarded-remediation-note
carverauto:work/3597-phase6.2-anomaly-operator-docs
carverauto:work/3597-phase6.1-jetstream-metrics-convention
carverauto:work/3597-phase5.4-anomaly-ui-rbac
carverauto:work/3597-phase5.3-netflow-placeholder-cleanup
carverauto:work/3597-phase5.2-anomaly-findings-ui
carverauto:work/3597-phase5.1-capacity-forecast-dashboard
carverauto:work/3597-phase4.4-anomaly-settings-ui
carverauto:work/3597-phase4.3-anomaly-config-hot-reload
carverauto:work/3597-phase4.2-helm-seeded-anomaly-defaults
carverauto:work/3597-phase4.1-anomaly-config-resources
carverauto:work/3597-phase3.4-scaling-verification
carverauto:work/3597-phase3.3-ocsf-finding-model-alignment
carverauto:work/3597-phase3.2-causal-signal-alert-coverage
carverauto:work/3597-phase3.1-causal-prediction-emission
carverauto:work/3597-phase2.6-capacity-forecast-tests
carverauto:work/3597-phase2.5-capacity-forecast-verdicts
carverauto:work/3597-phase2.4-interface-capacity-denominator
carverauto:work/3597-phase2.3-capacity-forecast-worker
carverauto:work/3597-phase2.2-interface-hourly-rollup
carverauto:work/3597-phase2.1-capacity-forecast-resource
carverauto:work/3597-phase1.8-anomaly-detector-tests
carverauto:work/3597-phase1.7-per-series-anomaly-config
carverauto:work/3597-phase1.6-context-checkpoint-rehydration
carverauto:work/3597-phase1.5-ingress-uuidv8-ordering
carverauto:work/3597-phase1.4-anomaly-context-engine
carverauto:work/3597-phase1.3-anomaly-analysis-consumer
carverauto:work/3597-phase1.2-clean-baseline-reasoner
carverauto:work/3597-phase1.1-causal-reasoner-nif
carverauto:work/3597-phase0.12-required-otel-addon
carverauto:work/3597-phase0.11-leaf-compatible-ingress
carverauto:work/3597-phase0.10-sysmon-downsampling
carverauto:work/3597-phase0.9-remove-self-loops
carverauto:work/3597-phase0.8-defined-ingress
carverauto:work/3597-phase0.7-metrics-cutover
carverauto:work/3597-phase0.6-zen-nif
carverauto:release/v1.3.1
carverauto:fix/pin-time-0.3.46-async-nats-coherence
carverauto:revert/time-0348-wrong-fix
carverauto:fix/time-0348-rustc193
carverauto:fix/flow-attribution-correlator-pressure
carverauto:fix/trace-detail-param-limit
carverauto:fix/security-dashboard-perf-and-falco-findings
carverauto:proposal/add-causal-anomaly-detection
carverauto:proposal/complete-security-analytics-pipeline
carverauto:fix/traces-discoverability
carverauto:renovate/actions_runner
carverauto:proposal/refactor-otel-signal-correlation
carverauto:fix/proxmox-integration-connector-and-imports
carverauto:demo/dire-rollout-ccacb3800
carverauto:fix/dire-phases-2-8
carverauto:openspec/refactor-device-identity-reconciliation
carverauto:release/v1.2.99
carverauto:fix/retry-transient-rekor-signing
carverauto:fix/idempotent-cosign-tlog-conflict
carverauto:release/v1.2.98
carverauto:feat/pdns-protobuf-ocsf-addon
carverauto:feat/add-agent-feature-sets-more
carverauto:fix/netprobe-bazel-lock-0.2.21
carverauto:chore/prepare-1.2.96-release
carverauto:fix/netprobe-addon-version-bump
carverauto:fix/netprobe-prioritize-active-metadata
carverauto:feat/causal-engine-v1
carverauto:release/1.2.95
carverauto:fix/netprobe-event-driven-inventory
carverauto:update-attributed-flow-explorer
carverauto:release/1.2.94-netprobe-attribution
carverauto:fix/nats-platform-object-store-acl
carverauto:renovate/registry.carverauto.dev-serviceradar-forgejo-ci
carverauto:feat/attributed-flow-correlation
carverauto:feat/netprobe-p0f-userspace-ebpf-verifier
carverauto:add-endpoint-sbom-inventory
carverauto:fix/remove-attributed-flow-fixtures
carverauto:fix/demo-nats-import-acls
carverauto:feat/netprobe-rollback-tests
carverauto:fix/armis-northbound-raw-token-auth
carverauto:fix/remove-stale-nginx
carverauto:feat/native-addon-web-importer
carverauto:feat/native-addon-artifact-mirror
carverauto:feat/native-addon-importer-db-test
carverauto:feat/native-addon-publish-pipeline
carverauto:feat/netprobe-addon-carve
carverauto:feat/addon-os-package-template
carverauto:feat/addon-bundle-tarball
carverauto:feat/addon-ephemeral-helper
carverauto:feat/addon-pushed-tarball
carverauto:feat/addon-systemd-dispatch
carverauto:fix/elixir-quality-format
carverauto:feat/addon-delivery-supervision
carverauto:feat/native-addon-rust-sdk
carverauto:feat/native-addon-build-signing
carverauto:docs/reconcile-fingerprintd-netprobe-feature-sets
carverauto:fix/addon-status-test-netprobe-fixture
carverauto:feat/migrate-netprobe-native-addon
carverauto:codex/fix-datasvc-nats-storage-acl
carverauto:fix/rust-test-failures
carverauto:fix/go-test-failures
carverauto:feat/native-addon-edge-ops
carverauto:feat/host-network-visibility-phase-2
carverauto:feat/native-addon-delivery-models
carverauto:feat/3425-agent-feature-sets-proposal
carverauto:feat/3444-bumblebee-agent
carverauto:fix/netprobe-e2e-sidecar-runtime
carverauto:fix/srql-sort-diagnostics
carverauto:feat/passive-device-fingerprinting
carverauto:fix/device-list-sweep-availability
carverauto:update/plugin-system
carverauto:add-service-monitoring-foundation
carverauto:fix/cli-auth-settings-navigation
carverauto:fix-proxmox-console-react-client-render
carverauto:fix-services-plugin-status-read-model
carverauto:fix/docker-update/cnpg
carverauto:fix/sweep-ip-family-routing
carverauto:codex/remote-access-desktop-rdp
carverauto:propose-interface-action-target-context
carverauto:codex/fix-armis-names-string
carverauto:main
carverauto:fix/agent-accept-deprecated-remote-access-config
carverauto:fix/device-results-count-facets
carverauto:fix/bazelisk-installer-retries
carverauto:fix/tinygo-host-toolchain-fetch
carverauto:add-per-agent-availability
carverauto:fix/forgejo-release-multipart-assets
carverauto:fix/agent-config-stale-session
carverauto:fix/mtr-hop-dns-resolution
carverauto:fix/hostname-only-device-create
carverauto:fix/otlp-log-metadata-sanitization
carverauto:add-nats-object-store-retention
carverauto:fix/helm-serviceradar-state-pvc
carverauto:fix/armis-large-sync-streaming
carverauto:demo/release-v1.2.44-source-fix
carverauto:demo-rollout-proxmox-bazel-fix
carverauto:security/postgres-update
carverauto:fix/mtr-bulk-queue-and-srql-targets
carverauto:armis-northbound-availability-updates
carverauto:codex/topology-endpoint-evidence-investigation
carverauto:codex/topology-bootstrap-and-layout-simplification
carverauto:codex/remove-ingress-nginx-edge
carverauto:security/k8s-hardening
carverauto:2406-feat-agent-fleet-management-secure-self-update-system
carverauto:chore/k8s-arc-update
carverauto:rust-fix
carverauto:2371-analytics-stats-cards-should-abbreviate-numbers
carverauto:chore/perl-cleanup
carverauto:192-feat-tftp-server
carverauto:mikemiles-dev/feature/netflow_collection
carverauto:815-feat-support-win32-for-agentpoller
carverauto:gh-pages
No reviewers
Labels
Clear labels
1week
2weeks
Failed compliance check
IP cameras
NATS
NATS JetStream
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
Something isn't working
build
checkers
ci-cd
continuous integration-continuous deployments
cleanup
cnpg
cloud-native postgres
codex
core
core service
dependencies
Pull requests that update a dependency file
device-management
documentation
Improvements or additions to documentation
duplicate
This issue or pull request already exists
dusk
ebpf
enhancement
New feature or request
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
Pull requests that update GitHub Actions code
go
Pull requests that update Go code
good first issue
Good for newcomers
help wanted
Extra attention is needed
invalid
This doesn't seem right
javascript
Pull requests that update Javascript code
k8s
log-collector
mapper
mtr
multi traceroute
needs-triage
netflow
network-sweep
observability
oracle
Oracle Linux related issues
otel
opentelemetry logs, traces, metrics
plug-in
proton
timeplus proton streaming database
python
question
Further information is requested
reddit
redhat
research
rperf
rperf-checker
rust
Pull requests that update rust code
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
This will not be worked on
zen-engine
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
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar!2861
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refs/pull/2861/head"
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?
Imported from GitHub pull request.
Original GitHub pull request: #2714
Original author: @mikemiles-dev
Original URL: https://github.com/carverauto/serviceradar/pull/2714
Original created: 2026-02-06T04:05:03Z
Original updated: 2026-02-06T23:29:39Z
Original head: mikemiles-dev/serviceradar:feature/mdns-collector
Original base: staging
IMPORTANT: Please sign the Developer Certificate of Origin
Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include
a DCO sign-off statement indicating the DCO acceptance in one commit message. Here
is an example DCO Signed-off-by line in a commit message:
Describe your changes
Issue ticket number and link
Code checklist before requesting a review
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772306302
Original created: 2026-02-06T05:04:20Z
Original path: elixir/serviceradar_core/lib/serviceradar/event_writer/processors/mdns.ex
Original line: 5
this comment might be outdated, i think the rust mDNS collector is now actually a golang collector?
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772311892
Original created: 2026-02-06T05:06:21Z
Original path: elixir/serviceradar_core/lib/serviceradar/event_writer/processors/mdns.ex
Original line: 11
need to look into this more myself, we binary encode stuff with protobuf and throw it on NATS becuase we can, and then we have to deserialize it later on in the pipeline. are we really saving anything here or are we actually slowing things down by doing this..
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772507347
Original created: 2026-02-06T06:14:57Z
Original path: openspec/changes/refactor-mdns-grpc-ingestion/specs/mdns-discovery/spec.md
Original line: 4
note: need to update docs site with docs around available GRPC methods
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772516601
Original created: 2026-02-06T06:16:51Z
Original path: openspec/changes/refactor-mdns-grpc-ingestion/specs/mdns-discovery/spec.md
Original line: 54
this is not a realistic scenario
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772522461
Original created: 2026-02-06T06:18:35Z
Original path: openspec/changes/refactor-mdns-grpc-ingestion/design.md
Original line: 4
need to double check this, I thought it was
PushResultsfor stuff like this, status should just be for healthcheck/heartbeat kinda thingImported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772527682
Original created: 2026-02-06T06:20:42Z
Original path: openspec/changes/refactor-mdns-grpc-ingestion/design.md
Original line: 18
again, need to check if we should be using PushResults here, might need to update this as well
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772570961
Original created: 2026-02-06T06:38:01Z
Original path: openspec/changes/refactor-mdns-grpc-ingestion/proposal.md
Original line: 32
not sure why this is a non-goal, we should surface this in the UI or at least through SRQL
Imported GitHub PR review comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/2714#discussion_r2772574438
Original created: 2026-02-06T06:39:27Z
Original path: openspec/changes/refactor-mdns-grpc-ingestion/tasks.md
Original line: 2
batch sending this stuff isnt a hard requirement, i just dont know the rate at which it is going to generate events/messages, we might be better off trying to batch stuff and sending when our buffer either gets full and on a timer
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.