Skip to content

[observer] High-frequency system check runner (1s interval)#48707

Merged
scottopell merged 1 commit intoq-branch-observerfrom
sopell/more-frequent-system-checks
Apr 3, 2026
Merged

[observer] High-frequency system check runner (1s interval)#48707
scottopell merged 1 commit intoq-branch-observerfrom
sopell/more-frequent-system-checks

Conversation

@scottopell
Copy link
Copy Markdown
Contributor

Summary

  • Adds comp/observer/impl/hfrunner: an observer-owned runner that instantiates system checks (cpu, memory, disk, io, load, network, uptime, filehandles) at 1-second intervals and routes their output directly into the observer anomaly detection pipeline. These samples never touch the aggregator or forwarder — intake isolation is guaranteed by design.
  • When observer.high_frequency_system_checks.enabled: true, a systemFilteredHandle suppresses the normal 15s system.* samples from the scorer so only the higher-resolution stream influences detection. Filtering uses MetricSource enum comparison (type assertion to sourceProvider) rather than string prefix matching.
  • Adds observer.channel.dropped telemetry counter (tagged by source) to surface back-pressure from the observer's internal channel.
  • Removes the observer.metrics.high_frequency_interval mechanism that previously hacked all check intervals globally via CheckBase.Interval().

Hypothesis

Does 1s system metric data improve anomaly detection scores vs the default 15s? This PR provides the infrastructure to answer that question — enable the flag, run evals, compare scores.

To enable

observer:
  high_frequency_system_checks:
    enabled: true
  analysis:
    enabled: true

Test plan

  • TestSystemFilteredHandle: table-driven test — all 8 system sources dropped, non-system sources pass through, MetricSourceUnknown passes through, no-sourceProvider samples pass through
  • TestAggregatingSender_SourcePopulated: regression test — all 12 metric methods stamp correct MetricSource on observer-bound samples
  • QA via proxy-dumper MiTM: system.cpu.user hit intake 4×/60s (15s cadence), not 60×
  • Observer debug dump: 475 series under "system-checks-hf" with 28–29 points at strict 1s intervals after 30s runtime

🤖 Generated with Claude Code

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr bot commented Mar 31, 2026

Go Package Import Differences

Baseline: e5b320d
Comparison: b6fefd3

binaryosarchchange
agentlinuxamd64
+63, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/DataDog/ebpf-manager
+github.com/DataDog/ebpf-manager/internal
+github.com/DataDog/ebpf-manager/tracefs
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/cilium/ebpf
+github.com/cilium/ebpf/asm
+github.com/cilium/ebpf/btf
+github.com/cilium/ebpf/features
+github.com/cilium/ebpf/internal
+github.com/cilium/ebpf/link
+github.com/cilium/ebpf/perf
+github.com/cilium/ebpf/ringbuf
+github.com/cilium/ebpf/rlimit
+github.com/goccy/go-json
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/zeebo/xxh3
+go/format
+go/printer
+golang.org/x/exp/mmap
+structs
agentlinuxarm64
+63, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/DataDog/ebpf-manager
+github.com/DataDog/ebpf-manager/internal
+github.com/DataDog/ebpf-manager/tracefs
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/cilium/ebpf
+github.com/cilium/ebpf/asm
+github.com/cilium/ebpf/btf
+github.com/cilium/ebpf/features
+github.com/cilium/ebpf/internal
+github.com/cilium/ebpf/link
+github.com/cilium/ebpf/perf
+github.com/cilium/ebpf/ringbuf
+github.com/cilium/ebpf/rlimit
+github.com/goccy/go-json
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/zeebo/xxh3
+go/format
+go/printer
+golang.org/x/exp/mmap
+structs
agentwindowsamd64
+51, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/goccy/go-json
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/zeebo/xxh3
+golang.org/x/exp/constraints
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
+hash/maphash
agentdarwinamd64
+51, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/goccy/go-json
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/zeebo/xxh3
+golang.org/x/exp/constraints
+golang.org/x/exp/mmap
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
agentdarwinarm64
+51, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/goccy/go-json
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/zeebo/xxh3
+golang.org/x/exp/constraints
+golang.org/x/exp/mmap
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
iot-agentlinuxamd64
+80, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/DataDog/datadog-agent/pkg/proto/pbgo/trace
+github.com/DataDog/datadog-agent/pkg/proto/pbgo/trace/idx
+github.com/DataDog/datadog-api-client-go/v2
+github.com/DataDog/datadog-api-client-go/v2/api/datadog
+github.com/DataDog/datadog-api-client-go/v2/api/datadogV2
+github.com/DataDog/ebpf-manager
+github.com/DataDog/ebpf-manager/internal
+github.com/DataDog/ebpf-manager/tracefs
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/cilium/ebpf
+github.com/cilium/ebpf/asm
+github.com/cilium/ebpf/btf
+github.com/cilium/ebpf/features
+github.com/cilium/ebpf/internal
+github.com/cilium/ebpf/link
+github.com/cilium/ebpf/perf
+github.com/cilium/ebpf/ringbuf
+github.com/cilium/ebpf/rlimit
+github.com/goccy/go-json
+github.com/golang/snappy
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/pierrec/lz4/v4
+github.com/vishvananda/netlink
+github.com/vishvananda/netlink/nl
+github.com/vishvananda/netns
+github.com/zeebo/xxh3
+go/format
+go/printer
+golang.org/x/exp/constraints
+golang.org/x/exp/mmap
+golang.org/x/exp/slices
+golang.org/x/oauth2
+golang.org/x/oauth2/internal
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
+google.golang.org/protobuf/types/descriptorpb
+structs
iot-agentlinuxarm64
+80, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/DataDog/datadog-agent/pkg/proto/pbgo/trace
+github.com/DataDog/datadog-agent/pkg/proto/pbgo/trace/idx
+github.com/DataDog/datadog-api-client-go/v2
+github.com/DataDog/datadog-api-client-go/v2/api/datadog
+github.com/DataDog/datadog-api-client-go/v2/api/datadogV2
+github.com/DataDog/ebpf-manager
+github.com/DataDog/ebpf-manager/internal
+github.com/DataDog/ebpf-manager/tracefs
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/cilium/ebpf
+github.com/cilium/ebpf/asm
+github.com/cilium/ebpf/btf
+github.com/cilium/ebpf/features
+github.com/cilium/ebpf/internal
+github.com/cilium/ebpf/link
+github.com/cilium/ebpf/perf
+github.com/cilium/ebpf/ringbuf
+github.com/cilium/ebpf/rlimit
+github.com/goccy/go-json
+github.com/golang/snappy
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/pierrec/lz4/v4
+github.com/vishvananda/netlink
+github.com/vishvananda/netlink/nl
+github.com/vishvananda/netns
+github.com/zeebo/xxh3
+go/format
+go/printer
+golang.org/x/exp/constraints
+golang.org/x/exp/mmap
+golang.org/x/exp/slices
+golang.org/x/oauth2
+golang.org/x/oauth2/internal
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
+google.golang.org/protobuf/types/descriptorpb
+structs
heroku-agentlinuxamd64
+70, -0
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/def
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/fx
+github.com/DataDog/datadog-agent/comp/anomalydetection/recorder/impl
+github.com/DataDog/datadog-agent/comp/observer
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/observer/fx
+github.com/DataDog/datadog-agent/comp/observer/impl
+github.com/DataDog/datadog-agent/comp/observer/impl/hfrunner
+github.com/DataDog/datadog-agent/comp/observer/impl/patterns
+github.com/DataDog/datadog-agent/pkg/network/protocols
+github.com/DataDog/datadog-agent/pkg/network/protocols/http
+github.com/DataDog/datadog-agent/pkg/network/types
+github.com/DataDog/ebpf-manager
+github.com/DataDog/ebpf-manager/internal
+github.com/DataDog/ebpf-manager/tracefs
+github.com/andybalholm/brotli
+github.com/andybalholm/brotli/matchfinder
+github.com/apache/arrow-go/v18/arrow
+github.com/apache/arrow-go/v18/arrow/array
+github.com/apache/arrow-go/v18/arrow/arrio
+github.com/apache/arrow-go/v18/arrow/bitutil
+github.com/apache/arrow-go/v18/arrow/compute
+github.com/apache/arrow-go/v18/arrow/compute/exec
+github.com/apache/arrow-go/v18/arrow/decimal
+github.com/apache/arrow-go/v18/arrow/decimal128
+github.com/apache/arrow-go/v18/arrow/decimal256
+github.com/apache/arrow-go/v18/arrow/encoded
+github.com/apache/arrow-go/v18/arrow/endian
+github.com/apache/arrow-go/v18/arrow/extensions
+github.com/apache/arrow-go/v18/arrow/flight
+github.com/apache/arrow-go/v18/arrow/flight/gen/flight
+github.com/apache/arrow-go/v18/arrow/float16
+github.com/apache/arrow-go/v18/arrow/internal
+github.com/apache/arrow-go/v18/arrow/ipc
+github.com/apache/arrow-go/v18/arrow/memory
+github.com/apache/arrow-go/v18/arrow/scalar
+github.com/apache/arrow-go/v18/parquet
+github.com/apache/arrow-go/v18/parquet/compress
+github.com/apache/arrow-go/v18/parquet/file
+github.com/apache/arrow-go/v18/parquet/metadata
+github.com/apache/arrow-go/v18/parquet/pqarrow
+github.com/apache/arrow-go/v18/parquet/schema
+github.com/apache/arrow-go/v18/parquet/variant
+github.com/apache/thrift/lib/go/thrift
+github.com/cilium/ebpf
+github.com/cilium/ebpf/asm
+github.com/cilium/ebpf/btf
+github.com/cilium/ebpf/features
+github.com/cilium/ebpf/internal
+github.com/cilium/ebpf/link
+github.com/cilium/ebpf/perf
+github.com/cilium/ebpf/ringbuf
+github.com/cilium/ebpf/rlimit
+github.com/goccy/go-json
+github.com/google/flatbuffers/go
+github.com/klauspost/compress/flate
+github.com/klauspost/compress/gzip
+github.com/klauspost/cpuid/v2
+github.com/vishvananda/netlink
+github.com/vishvananda/netlink/nl
+github.com/vishvananda/netns
+github.com/zeebo/xxh3
+go/format
+go/printer
+golang.org/x/exp/constraints
+golang.org/x/exp/mmap
+golang.org/x/xerrors
+golang.org/x/xerrors/internal
+google.golang.org/protobuf/types/descriptorpb
+structs
cluster-agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
cluster-agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
cluster-agent-cloudfoundrylinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
cluster-agent-cloudfoundrylinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
dogstatsdlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
dogstatsdlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
security-agentlinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
security-agentlinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
security-agentwindowsamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
system-probelinuxamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
system-probelinuxarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
system-probewindowsamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
system-probedarwinamd64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
system-probedarwinarm64
+1, -0
+github.com/DataDog/datadog-agent/comp/observer/def
trace-agentlinuxamd64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
trace-agentlinuxarm64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
trace-agentwindowsamd64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
trace-agentdarwinamd64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
trace-agentdarwinarm64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
heroku-trace-agentlinuxamd64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
otel-agentlinuxamd64
+4, -0
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
otel-agentlinuxarm64
+4, -0
+github.com/DataDog/datadog-agent/comp/observer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
host-profilerlinuxamd64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl
host-profilerlinuxarm64
+3, -0
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/def
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/fx
+github.com/DataDog/datadog-agent/comp/trace/observerbuffer/impl

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr bot commented Mar 31, 2026

Files inventory check summary

File checks results against ancestor e5b320de:

Results for datadog-agent_7.79.0~devel.git.408.b4bf1a9.pipeline.105946945-1_amd64.deb:

Detected file changes:

1 Changed files:

  • opt/datadog-agent/bin/agent/agent:
    • Size changed: +19.17% (21.03 MiB) (109.73 MiB -> 130.77 MiB)

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr bot commented Mar 31, 2026

Static quality checks

❌ Please find below the results from static quality gates
Comparison made with ancestor e5b320d
📊 Static Quality Gates Dashboard
🔗 SQG Job

Error

Quality gate Change Size (prev → curr → max)
agent_deb_amd64 (on wire) +3.66 MiB (2.09% increase) 174.791 → 178.452 → 178.360
agent_deb_amd64 (on disk) +21.28 MiB (2.83% increase) 752.636 → 773.913 → 753.380
agent_deb_amd64_fips (on disk) +21.25 MiB (2.99% increase) 709.650 → 730.900 → 713.900
agent_heroku_amd64 (on disk) +21.39 MiB (6.83% increase) 313.317 → 334.704 → 320.580
agent_rpm_amd64 (on disk) +21.28 MiB (2.83% increase) 752.620 → 773.897 → 753.350
agent_rpm_amd64_fips (on disk) +21.25 MiB (2.99% increase) 709.634 → 730.883 → 713.880
agent_rpm_arm64 (on disk) +17.33 MiB (2.37% increase) 731.051 → 748.382 → 735.290
agent_rpm_arm64_fips (on disk) +17.33 MiB (2.51% increase) 691.078 → 708.409 → 696.840
agent_suse_amd64 (on disk) +21.28 MiB (2.83% increase) 752.620 → 773.897 → 753.350
agent_suse_amd64_fips (on disk) +21.25 MiB (2.99% increase) 709.634 → 730.883 → 713.880
agent_suse_arm64 (on disk) +17.33 MiB (2.37% increase) 731.051 → 748.382 → 735.290
agent_suse_arm64_fips (on disk) +17.33 MiB (2.51% increase) 691.078 → 708.409 → 696.840
docker_agent_amd64 (on wire) +5.11 MiB (1.91% increase) 268.112 → 273.226 → 272.480
docker_agent_amd64 (on disk) +21.25 MiB (2.61% increase) 812.935 → 834.189 → 815.700
docker_agent_arm64 (on disk) +17.33 MiB (2.12% increase) 816.140 → 833.472 → 821.970
docker_agent_jmx_amd64 (on wire) +5.12 MiB (1.52% increase) 336.763 → 341.878 → 341.100
docker_agent_jmx_amd64 (on disk) +21.25 MiB (2.12% increase) 1003.850 → 1025.104 → 1006.580
docker_agent_jmx_arm64 (on disk) +17.33 MiB (1.74% increase) 995.834 → 1013.166 → 1001.570
iot_agent_deb_amd64 (on wire) +3.45 MiB (30.27% increase) 11.405 → 14.858 → 12.040
iot_agent_deb_amd64 (on disk) +21.3 MiB (49.20% increase) 43.289 → 64.586 → 43.290
iot_agent_deb_arm64 (on wire) +2.72 MiB (28.02% increase) 9.705 → 12.425 → 10.450
iot_agent_deb_arm64 (on disk) +17.39 MiB (43.12% increase) 40.340 → 57.734 → 40.920
iot_agent_deb_armhf (on wire) +2.85 MiB (28.65% increase) 9.942 → 12.791 → 10.620
iot_agent_deb_armhf (on disk) +17.94 MiB (43.65% increase) 41.087 → 59.023 → 41.100
iot_agent_rpm_amd64 (on wire) +3.45 MiB (30.25% increase) 11.420 → 14.875 → 12.060
iot_agent_rpm_amd64 (on disk) +21.3 MiB (49.20% increase) 43.290 → 64.587 → 43.290
iot_agent_suse_amd64 (on wire) +3.45 MiB (30.25% increase) 11.420 → 14.875 → 12.060
iot_agent_suse_amd64 (on disk) +21.3 MiB (49.20% increase) 43.290 → 64.587 → 43.290
Gate failure full details
Quality gate Error type Error message
agent_deb_amd64 StaticQualityGateFailed static_quality_gate_agent_deb_amd64 failed!
Wire size 178.5 MB exceeds limit of 178.4 MB by 94.0 KB
Disk size 773.9 MB exceeds limit of 753.4 MB by 20.5 MB
agent_deb_amd64_fips StaticQualityGateFailed static_quality_gate_agent_deb_amd64_fips failed!
Disk size 730.9 MB exceeds limit of 713.9 MB by 17.0 MB
agent_heroku_amd64 StaticQualityGateFailed static_quality_gate_agent_heroku_amd64 failed!
Disk size 334.7 MB exceeds limit of 320.6 MB by 14.1 MB
agent_rpm_amd64 StaticQualityGateFailed static_quality_gate_agent_rpm_amd64 failed!
Disk size 773.9 MB exceeds limit of 753.3 MB by 20.5 MB
agent_rpm_amd64_fips StaticQualityGateFailed static_quality_gate_agent_rpm_amd64_fips failed!
Disk size 730.9 MB exceeds limit of 713.9 MB by 17.0 MB
agent_rpm_arm64 StaticQualityGateFailed static_quality_gate_agent_rpm_arm64 failed!
Disk size 748.4 MB exceeds limit of 735.3 MB by 13.1 MB
agent_rpm_arm64_fips StaticQualityGateFailed static_quality_gate_agent_rpm_arm64_fips failed!
Disk size 708.4 MB exceeds limit of 696.8 MB by 11.6 MB
agent_suse_amd64 StaticQualityGateFailed static_quality_gate_agent_suse_amd64 failed!
Disk size 773.9 MB exceeds limit of 753.3 MB by 20.5 MB
agent_suse_amd64_fips StaticQualityGateFailed static_quality_gate_agent_suse_amd64_fips failed!
Disk size 730.9 MB exceeds limit of 713.9 MB by 17.0 MB
agent_suse_arm64 StaticQualityGateFailed static_quality_gate_agent_suse_arm64 failed!
Disk size 748.4 MB exceeds limit of 735.3 MB by 13.1 MB
agent_suse_arm64_fips StaticQualityGateFailed static_quality_gate_agent_suse_arm64_fips failed!
Disk size 708.4 MB exceeds limit of 696.8 MB by 11.6 MB
docker_agent_amd64 StaticQualityGateFailed static_quality_gate_docker_agent_amd64 failed!
Wire size 273.2 MB exceeds limit of 272.5 MB by 763.9 KB
Disk size 834.2 MB exceeds limit of 815.7 MB by 18.5 MB
docker_agent_arm64 StaticQualityGateFailed static_quality_gate_docker_agent_arm64 failed!
Disk size 833.5 MB exceeds limit of 822.0 MB by 11.5 MB
docker_agent_jmx_amd64 StaticQualityGateFailed static_quality_gate_docker_agent_jmx_amd64 failed!
Wire size 341.9 MB exceeds limit of 341.1 MB by 797.2 KB
Disk size 1025.1 MB exceeds limit of 1006.6 MB by 18.5 MB
docker_agent_jmx_arm64 StaticQualityGateFailed static_quality_gate_docker_agent_jmx_arm64 failed!
Disk size 1013.2 MB exceeds limit of 1001.6 MB by 11.6 MB
iot_agent_deb_amd64 StaticQualityGateFailed static_quality_gate_iot_agent_deb_amd64 failed!
Wire size 14.9 MB exceeds limit of 12.0 MB by 2.8 MB
Disk size 64.6 MB exceeds limit of 43.3 MB by 21.3 MB
iot_agent_deb_arm64 StaticQualityGateFailed static_quality_gate_iot_agent_deb_arm64 failed!
Wire size 12.4 MB exceeds limit of 10.4 MB by 2.0 MB
Disk size 57.7 MB exceeds limit of 40.9 MB by 16.8 MB
iot_agent_deb_armhf StaticQualityGateFailed static_quality_gate_iot_agent_deb_armhf failed!
Wire size 12.8 MB exceeds limit of 10.6 MB by 2.2 MB
Disk size 59.0 MB exceeds limit of 41.1 MB by 17.9 MB
iot_agent_rpm_amd64 StaticQualityGateFailed static_quality_gate_iot_agent_rpm_amd64 failed!
Wire size 14.9 MB exceeds limit of 12.1 MB by 2.8 MB
Disk size 64.6 MB exceeds limit of 43.3 MB by 21.3 MB
iot_agent_suse_amd64 StaticQualityGateFailed static_quality_gate_iot_agent_suse_amd64 failed!
Wire size 14.9 MB exceeds limit of 12.1 MB by 2.8 MB
Disk size 64.6 MB exceeds limit of 43.3 MB by 21.3 MB

Static quality gates prevent the PR to merge!
You can check the static quality gates confluence page for guidance. We also have a toolbox page available to list tools useful to debug the size increase.

Successful checks

Info

Quality gate Change Size (prev → curr → max)
agent_msi +23.24 MiB (3.84% increase) 604.823 → 628.067 → 651.440
docker_cluster_agent_amd64 +31.33 KiB (0.02% increase) 203.946 → 203.977 → 206.270
docker_cluster_agent_arm64 +3.33 KiB (0.00% increase) 218.420 → 218.424 → 220.000
docker_dogstatsd_amd64 +32.32 KiB (0.08% increase) 39.238 → 39.270 → 39.380
docker_dogstatsd_arm64 +64.31 KiB (0.17% increase) 37.445 → 37.508 → 37.940
dogstatsd_deb_amd64 +34.42 KiB (0.11% increase) 29.881 → 29.915 → 30.610
dogstatsd_deb_arm64 +34.42 KiB (0.12% increase) 28.034 → 28.068 → 29.110
dogstatsd_rpm_amd64 +34.42 KiB (0.11% increase) 29.881 → 29.915 → 30.610
dogstatsd_suse_amd64 +34.42 KiB (0.11% increase) 29.881 → 29.915 → 30.610
2 successful checks with minimal change (< 2 KiB)
Quality gate Current Size
docker_cws_instrumentation_amd64 7.142 MiB
docker_cws_instrumentation_arm64 6.689 MiB
On-wire sizes (compressed)
Quality gate Change Size (prev → curr → max)
agent_deb_amd64 +3.66 MiB (2.09% increase) 174.791 → 178.452 → 178.360
agent_deb_amd64_fips +3.59 MiB (2.17% increase) 165.343 → 168.934 → 172.790
agent_heroku_amd64 +3.58 MiB (4.77% increase) 75.004 → 78.581 → 79.970
agent_rpm_amd64 +3.77 MiB (2.12% increase) 177.568 → 181.336 → 181.830
agent_rpm_amd64_fips +3.53 MiB (2.11% increase) 167.615 → 171.149 → 173.370
agent_rpm_arm64 +2.54 MiB (1.59% increase) 159.476 → 162.017 → 163.060
agent_rpm_arm64_fips +2.97 MiB (1.96% increase) 151.386 → 154.357 → 156.170
agent_suse_amd64 +3.77 MiB (2.12% increase) 177.568 → 181.336 → 181.830
agent_suse_amd64_fips +3.53 MiB (2.11% increase) 167.615 → 171.149 → 173.370
agent_suse_arm64 +2.54 MiB (1.59% increase) 159.476 → 162.017 → 163.060
agent_suse_arm64_fips +2.97 MiB (1.96% increase) 151.386 → 154.357 → 156.170
docker_agent_amd64 +5.11 MiB (1.91% increase) 268.112 → 273.226 → 272.480
docker_agent_arm64 +4.12 MiB (1.61% increase) 255.328 → 259.447 → 261.060
docker_agent_jmx_amd64 +5.12 MiB (1.52% increase) 336.763 → 341.878 → 341.100
docker_agent_jmx_arm64 +4.12 MiB (1.29% increase) 319.965 → 324.087 → 325.620
iot_agent_deb_amd64 +3.45 MiB (30.27% increase) 11.405 → 14.858 → 12.040
iot_agent_deb_arm64 +2.72 MiB (28.02% increase) 9.705 → 12.425 → 10.450
iot_agent_deb_armhf +2.85 MiB (28.65% increase) 9.942 → 12.791 → 10.620
iot_agent_rpm_amd64 +3.45 MiB (30.25% increase) 11.420 → 14.875 → 12.060
iot_agent_suse_amd64 +3.45 MiB (30.25% increase) 11.420 → 14.875 → 12.060
agent_msi +3.85 MiB (2.78% increase) 138.396 → 142.242 → 146.220
docker_cluster_agent_amd64 +7.78 KiB (0.01% increase) 71.375 → 71.382 → 72.920
docker_cluster_agent_arm64 +4.04 KiB (0.01% increase) 67.013 → 67.017 → 68.220
docker_cws_instrumentation_amd64 neutral 2.999 MiB → 3.330
docker_cws_instrumentation_arm64 neutral 2.729 MiB → 3.090
docker_dogstatsd_amd64 neutral 15.176 MiB → 15.820
docker_dogstatsd_arm64 +15.84 KiB (0.11% increase) 14.488 → 14.503 → 14.830
dogstatsd_deb_amd64 +4.75 KiB (0.06% increase) 7.893 → 7.897 → 8.790
dogstatsd_deb_arm64 +8.0 KiB (0.12% increase) 6.778 → 6.786 → 7.710
dogstatsd_rpm_amd64 +4.56 KiB (0.06% increase) 7.904 → 7.908 → 8.800
dogstatsd_suse_amd64 +4.56 KiB (0.06% increase) 7.904 → 7.908 → 8.800

@scottopell scottopell force-pushed the sopell/more-frequent-system-checks branch 2 times, most recently from 3d095cf to 1f186c2 Compare April 2, 2026 21:21
@scottopell scottopell marked this pull request as ready for review April 2, 2026 21:24
@scottopell scottopell requested review from a team as code owners April 2, 2026 21:24
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1f186c2638

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@github-actions github-actions bot added the long review PR is complex, plan time to review it label Apr 2, 2026
Copy link
Copy Markdown
Contributor

@CelianR CelianR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for adding telemetry!

@scottopell scottopell force-pushed the sopell/more-frequent-system-checks branch from 1f186c2 to b4bf1a9 Compare April 3, 2026 15:21
@scottopell
Copy link
Copy Markdown
Contributor Author

@codex re-review please

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b4bf1a92d9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +774 to +776
if h.dropCounter != nil {
h.dropCounter.Add(1, h.source)
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Count dropped observations for all signal types

The new observer.channel.dropped telemetry is only incremented in ObserveMetric; dropped logs, traces, and profiles still update only dropCount. If the observer channel is saturated by non-metric traffic (for example log bursts), this counter will significantly under-report back-pressure by source, which defeats the purpose of this new metric for operational debugging. Please increment dropCounter in the drop paths of ObserveLog, ObserveTrace, and ObserveProfile too.

Useful? React with 👍 / 👎.

Comment on lines +366 to +370
// When true, the observer runs system checks (cpu, memory, disk, io, load, network, etc.)
// at 1-second intervals and feeds them directly into the anomaly detection pipeline.
// These high-frequency samples are never forwarded to Datadog intake.
// The normal 15-second system check pipeline is unaffected.
config.BindEnvAndSetDefault("observer.high_frequency_system_checks.enabled", false)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3 Badge Document new HF system-check flag in the config template

This change adds observer.high_frequency_system_checks.enabled to runtime defaults, but the high-frequency observer section was removed from config_template.yaml without a replacement entry for the new key. That leaves users without generated config/env documentation for enabling this feature, which is a stale-doc regression for a behavior/config change and makes rollout/support harder.

Useful? React with 👍 / 👎.

Introduces a prototype to test whether 1-second system check metrics
improve anomaly detection scores in comp/observer compared to the
default 15-second cadence.

- Adds `comp/observer/impl/hfrunner`: an observer-owned check runner
  that instantiates system checks (cpu, memory, disk, io, load, network,
  uptime, filehandles) using the existing factory catalog, runs them on a
  1s tick, and routes output directly into the observer pipeline via a
  purpose-built `observerSender`. These samples never touch the
  aggregator or forwarder — intake isolation is guaranteed by design.

- When `observer.high_frequency_system_checks.enabled: true`, a
  `systemFilteredHandle` is placed on the `"all-metrics"` pipeline
  handle to suppress 15s system.* samples from the scorer, so only the
  higher-resolution 1s stream influences detection. Filtering uses
  `MetricSource` enum comparison via type assertion rather than string
  prefix matching.

- Adds `observer.channel.dropped` telemetry counter (tagged by source)
  to surface back-pressure from the observer's internal channel.

- Wires runner shutdown via `fx.Lifecycle.OnStop`; `Runner.Stop()` is
  guarded with `sync.Once` against double-close.

Removes the `observer.metrics.high_frequency_interval` mechanism that
previously hacked all check intervals globally via `CheckBase.Interval()`.
That approach is replaced entirely by the runner above.

- `checkbase.go`: `Interval()` simplified to `return c.checkInterval`
- `config.go`: `observer.metrics.high_frequency_interval` and
  `observer.metrics.enabled` config keys removed
- `sender.go`: `AggregatingSender` instantiation path removed
- `config_template.yaml`: stale `@param` doc block removed

- `TestSystemFilteredHandle`: table-driven unit test covering all 8
  system check sources (dropped), non-system sources (pass through),
  `MetricSourceUnknown` (pass through), and no-sourceProvider samples
  (pass through).
- `TestAggregatingSender_SourcePopulated`: regression test verifying
  all 12 metric methods on `AggregatingSender` stamp the correct
  `MetricSource` on observer-bound samples.
- QA confirmed via proxy-dumper MiTM: `system.cpu.user` reached intake
  4 times in 60s (15s cadence), not 60 times.
- Observer debug dump confirmed 475 series under `"system-checks-hf"`
  with 28-29 points each at strict 1s intervals after 30s runtime.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@scottopell scottopell force-pushed the sopell/more-frequent-system-checks branch from b4bf1a9 to b6fefd3 Compare April 3, 2026 16:09
@scottopell scottopell merged commit 0fa03c7 into q-branch-observer Apr 3, 2026
159 of 206 checks passed
@scottopell scottopell deleted the sopell/more-frequent-system-checks branch April 3, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

long review PR is complex, plan time to review it

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants