Skip to content

Latest commit

Β 

History

History
301 lines (243 loc) Β· 16.3 KB

File metadata and controls

301 lines (243 loc) Β· 16.3 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased section should follow Release Toolkit.

Remember that the keywords that you can use under Unreleased section are:

  • breaking => Major
  • security => Minor
  • enhancement => Minor
  • bugfix => Patch

Only add an entry if it changes what a user of Agent Control experiences: a new capability, a changed behavior, or a fixed bug. Skip:

  • Internal refactors with no behavior change
  • Documentation-only changes
  • Test-only changes
  • Pipeline/CI changes, unless they add support for something new (e.g. a new build target)

Unreleased

enhancement

  • Linux: added Debian 13 (trixie) as a supported/published platform.

v1.24.0 - 2026-09-08

πŸš€ Enhancements

  • Renamed the secrets_providers config key to value_providers, the old key is kept for backwards compatibility.
  • OnHost: added support for RedHat 10
  • K8s: add a new nr-kubecm value provider to resolve variables from Kubernetes ConfigMaps.
  • chart_values.global is still supported in agentTypes, but deprecated. You can still configure globals via chart_values.[chart-name].global
  • Linux: added uninstall.sh script bundled in the package that auto-detects the package manager (apt, yum, zypper) and removes newrelic-agent-control.

🐞 Bug fixes

  • On-host: the eBPF agent now writes its status log under the AC managed filesystem directory instead of /etc/newrelic-ebpf-agent.
  • On-host: fix false "already running" startup error when a stale PID file held a PID reused by an unrelated process.
  • Suppress Health reporting (OpAMP and status server) for sub-agents whose agent type defines no health: block, including on initial supervisor start failure.
  • On-host: when an agent type is upgraded to a new version, stale filesystem entries declared by the old version are now removed via a diff instead of a full agent directory wipe; the sub-agent's OpAMP instance ID is preserved across version bumps.
  • K8s: when a sub-agent type is upgraded to a new version, the OpAMP instance ID is now preserved across the upgrade; previously the fleet-data ConfigMap was deleted on every type change regardless of whether the agent name changed, causing a new instance ID to be generated on the next start.
  • Linux: postremove script now correctly removes newrelic-agent-control directories on any uninstall (not only on apt purge), and targets the right paths (/etc/newrelic-agent-control, /var/lib/newrelic-agent-control, /var/run/newrelic-infra) instead of the old infra-agent ones.
  • On-host: the service now retries indefinitely on failure (20 s delay) instead of stopping after 5 rapid restarts; applies to both the Linux systemd unit and the Windows SCM failure actions.

⛓️ Dependencies

  • Updated rust crate nr-auth to v0.5.2
  • Updated rust crate opamp-client to v0.0.42
  • Updated rust crate flate2 to 1.1.10
  • Updated rust crate rcgen to 0.14.10
  • Updated rust crate serde-saphyr to 1.2.0
  • Updated alpine/kubectl to v1.37.0
  • Updated rust crate aws-lc-rs to 1.18.1
  • Updated rust crate toml to 1.1.5
  • Updated rust to v1.98.1
  • Updated rust crate windows-link to 0.100.0
  • Updated rust crate windows-registry to 0.100.0
  • Updated rust crate syn to 3.0.5
  • Updated rust crate crossbeam to 0.8.5
  • Updated rust crate rstest to 0.27.0
  • Updated rust crate encoding_rs to 0.8.40

v1.23.0 - 2026-08-25

πŸš€ Enhancements

  • Add support for variables override through variable.agentConfig syntax in Remote Configuration keys.
  • Add support for a single entry of a string_map variable override through variable.agentConfig.<variable>:<map-key> syntax in Remote Configuration keys.
  • On-host infrastructure agent type (linux): expose the nri-docker integration configuration through a new config_docker variable.

🐞 Bug fixes

  • K8s supervisor: force a Flux reconciliation on stalled HelmReleases (e.g. after exhausting install/upgrade retries) when a new remote config
  • On-host: report the actual last failure (launch error or non-zero exit) in the lastErrorMessage of the unhealthy status once the restart policy is exceeded, instead of the generic "Restart policy exceeded" message.
  • On-host: persist fluent-bit's home directory (fb.db) across infra-agent package updates instead of storing it in the replaced package directory

⛓️ Dependencies

  • Updated rust crate either to 1.18.0
  • Updated rust to v1.98.0
  • Updated rust crate actix-web to 4.15.0
  • Updated alpine/kubectl to v1.36.4
  • Updated rust crate syn to 3.0.4

v1.22.0 - 2026-08-18

πŸš€ Enhancements

  • On-host: enforce a 2400 MiB hard memory limit on the Agent Control process tree (AC + all child agents) via systemd MemoryMax on Linux.
  • Agent type: enforce variable name format to [A-Za-z0-9_-] starting with a letter and maximum length of 64 characters.
  • On-Host: enable self-update capability by default. Self updates are only executed when commanded by Fleet Control.

🐞 Bug fixes

  • Linux: prevent systemd service disable after RPM package update

⛓️ Dependencies

  • Updated rust crate futures to 0.3.34
  • Updated alpine/helm to v4.2.4
  • Updated rust crate serde-saphyr to 1.1.0

v1.21.0 - 2026-08-11

πŸš€ Enhancements

  • Windows filesystem: Removed unused code and use higher-level APIs for Windows interaction.
  • Reports the com.newrelic.remoteAgentTypeRepoReachable OpAMP custom capability when the configured Agent Type OCI repository is reachable at startup.

🐞 Bug fixes

  • Windows: fixed files under Agent Control's managed directories being left with permissions it could not use. Managed directories now use an inheritable Administrators ACE, and Agent Control tries to repair ACEs on startup.

⛓️ Dependencies

  • Updated rust crate http to 1.5.0
  • Updated rust crate clap to 4.6.6
  • Updated rust crate serde-saphyr to 1.0.1
  • Updated rust crate base64 to 0.23.1
  • Updated rust crate aws-lc-rs to 1.18.0
  • Updated rust crate thiserror to 2.0.20
  • Updated rust crate async-trait to 0.1.92
  • Updated rust crate actix-web to 4.14.1
  • Updated rust crate rcgen to 0.14.9

v1.20.0 - 2026-07-29

πŸš€ Enhancements

  • Kubernetes: --release-name is now optional on uninstall-agent-control; omitting it skips deleting the release's own HelmRelease/HelmRepository CRs.
  • On-host: added nri-apache and nri-nginx agentTypes.
  • On-host: added nri-postgresql agentType.
  • On-host: added nri-mysql agentType.
  • On-host: added nri-memcached Agent Type.
  • On-host: added nri-flex agentType.
  • Log files rotated have now 30 days of retention.
  • Added agent-type validate --file <path> subcommand to newrelic-agent-control-cli and newrelic-agent-control-k8s-cli for schema-level validation of agent type definition files.
  • Extended agent-type validate with semantic validation: every ${nr-var:X} reference in deployment must have a matching variables declaration.
  • Enable cache for remote Agent Type registry

⛓️ Dependencies

  • Updated rust crate kube to 4.2.0
  • Updated rust crate rustls-pki-types to 1.15.1
  • Updated rust crate base64 to 0.23.0
  • Updated rust crate either to 1.17.0
  • Updated rust crate jsonwebtoken to v11
  • Updated rust crate serial_test to v4
  • Updated rust crate schemars to 1.2.2
  • Updated alpine/kubectl to v1.36.3
  • Updated rust crate toml to 1.1.4

v1.19.1 - 2026-07-23

⛓️ Dependencies

  • Updated rust crate clap to 4.6.4
  • Updated rust crate tokio to 1.53.1
  • Updated rust crate glob to 0.3.4
  • Updated rust crate tokio-stream to 0.1.19
  • Updated rust crate syn to 3.0.3

🐞 Bug fixes

  • On-host: the infra agentType has been fixed removing nri-flex binary copy.

v1.19.0 - 2026-07-20

πŸš€ Enhancements

  • On-host and Kubernetes: when an agent's type is bumped via a live remote config update, Agent Control now reconciles both per-agent and shared filesystems, deleting paths declared by the old type that no longer appear in any active agent's declarations. Co-owned shared paths still claimed by another active agent are preserved. On Kubernetes, k8s objects annotated with the old type are garbage-collected while new-type resources are left intact.
  • Adds oci-utils CLI to test/crates/oci-test-utils for pushing agent packages and agent type definitions to OCI registries from the command line (dev/test tooling; not published).
  • On-host agent-type parsing now validates reported_version_package: it must reference a declared package, and is required when more than one package is defined. Invalid configurations are rejected at parse time with a descriptive error. This reported_version_package will be used to know which version to report as agent.version.
  • Add support for copy_from_file for on-host "in-agent" filesystem.
  • Add support for shared_filesystem in on-host agent types. It includes a single-owner rule: two agents claiming the same path in the shared-filesystem are invalid and reported as Failed.
  • On-host self-update: skip sub-agent reconciliation when a self-update is in progress. When a single remote config both bumps the Agent Control version and changes a sub-agent's agent_type, the changed sub-agent is no longer recreated moments before the process restarts; the new config is stored and re-applied cleanly by the restarted process, avoiding a redundant sub-agent restart and telemetry gap.
  • On-host: added support for nri-redis agentType for both Linux and Windows.
  • On-host health config: replaced the flat health.http: / health.file: fields with an explicit checks: list. Each entry is discriminated by kind: (Process, Http, or File). The previously implicit supervised-process health check is now declared as kind: Process. An omitted or empty checks: list disables health reporting entirely.
  • On-host filesystem entries (file/dir) now always survive sub-agent stop, restart, and config-apply. A stray persistent: key in existing agent-type YAML is ignored rather than rejected.

🐞 Bug fixes

  • Added identifying attributes for each package specified in the agentType as package.version.<id>.
  • RPM packages now restore local_config.yaml from the .rpmsave backup left by a prior uninstall.

⛓️ Dependencies

  • Updated rust crate bytes to 1.12.1
  • Updated rust crate regex to 1.13.1
  • Updated rust to v1.97.1
  • Updated alpine/helm to v4.2.3
  • Updated rust crate toml to 1.1.3
  • Updated rust crate syn to v3
  • Updated rust crate clap to 4.6.2
  • Updated rust crate tokio to 1.53.0
  • Updated rust crate aws-lc-rs to 1.17.3
  • Updated rust crate thiserror to 2.0.19
  • Updated rust crate serde to 1.0.229
  • Updated rust crate async-trait to 0.1.91
  • Updated rust crate futures to 0.3.33
  • Updated rust crate quote to 1.0.47
  • Updated rust crate serde_json to 1.0.151

v1.18.0 - 2026-07-06

πŸš€ Enhancements

  • Adds exponential backoff + jitter retries to OCI artifact fetches via a new BackoffPolicy (configurable under self_update.download_retry), replacing the old with_retries(usize, Duration) API.
  • add post-download script support for OCI packages.
  • Hardens service restart policies on Linux and Windows (systemd rate limiting: 5 restarts max in 60s) to prevent crash-looping from saturating CPU.
  • Added support for remote agent type definition retrieval from OCI registries.
  • Agent type definitions now tolerate unknown fields for forward compatibility.
  • On-host agents: now it is possible to avoid specifying a health check in the agent type definition, in which case the agent health will be not reported.
  • On-host agents: removed command-based version checking. Agent version is now determined from OCI package metadata, eliminating the need for deployment.version configuration in agent type definitions.
  • Replace filesystem in on-host agent-type definitions with an explicit, recursive, tagged-kind tree: every entry declares kind: file | dir | dir_content_from_map, and dir entries nest via entries:.
  • On-host filesystem entries now accept a persistent flag (default false): ephemeral entries are deleted on sub-agent stop, persistent entries survive until the agent is removed from the fleet. Reconciliation across writes is driven by a .ac-managed-paths.json manifest (reserved filename β€” agent types must not declare it) so paths Agent Control no longer owns are deleted while sub-agent-created files are preserved.
  • Include new 'shared-filesystem-dir` variable for Agent Types.
  • Extend internal fs crate with a copy operation.
  • Removed the filesystem manifest-based prune mechanism; Agent Control no longer deletes previously-declared paths that a config later drops. Agent-managed files are reclaimed only when the agent is removed from the fleet.

🐞 Bug fixes

  • On-host self-update: an empty version: "" pushed from Fleet Control now behaves the same as an absent version field (no-op, no update attempted). Previously it silently triggered a pull of the :latest OCI tag.

⛓️ Dependencies

  • Updated rust crate config to 0.15.25
  • Updated rust crate syn to 2.0.118
  • Updated alpine/helm to v4.2.2
  • Updated rust crate bytes to 1.12.0
  • Updated rust crate serde-saphyr to 0.0.29
  • Updated rust crate actix-web to 4.14.0
  • Updated rust crate quote to 1.0.46
  • Updated kubernetes crates (major)
  • Updated rust crate opentelemetry-semantic-conventions to 0.32.1
  • Updated rust crate mockall to 0.15.0
  • Updated rust to v1.96.1
  • Updated rust crate aws-lc-rs to 1.17.1
  • Updated rust crate rustls-pki-types to 1.15.0
  • Updated rust crate opamp-client to v0.0.41

v1.17.0 - 2026-06-16

πŸš€ Enhancements

  • Added support for JP endpoints.
  • Agent type definitions changed: flat per-platform schema (one YAML per (platform, operating_system) pair), a new top-level protocol_version field (quoted MAJOR.MINOR, validated at registry ingestion), and stricter name/namespace validation (no -) and version (plain Major.Minor.Patch semver). FQNs and configuration values are unchanged, so this is not a breaking change for end users; internal authors of custom definitions must migrate β€” see docs/INTEGRATING_AGENTS.md.

🐞 Bug fixes

  • Validate version coming from remote.

⛓️ Dependencies

  • Updated rust crate chrono to 0.4.45
  • Updated amazon-eks to v1.36
  • Updated rust crate http to 1.4.2
  • Updated rust crate regex to 1.12.4
  • Updated alpine/kubectl to v1.36.2
  • Updated alpine/helm to v4.2.1
  • Updated rust crate opamp-client to v0.0.40
  • Updated rust crate nr-auth to v0.5.1

v1.16.1 - 2026-06-04

🐞 Bug fixes

  • the agentType for the PCG config should be called pipeline_control_gateway_config_mode

v1.16.0 - 2026-06-02

πŸš€ Enhancements

  • Add support for Ubuntu 26.

⛓️ Dependencies

  • Updated rust crate serial_test to 3.5.0

v1.15.2 - 2026-05-29

🐞 Bug fixes

  • Add DaemonSet health-check in pipeline-control-gateway-config Agent Type
  • pcg_config: revert agentType config

⛓️ Dependencies

  • Updated rust crate opentelemetry_sdk to 0.32.1
  • Updated rust crate serde-saphyr to 0.0.27
  • Updated rust to v1.96.0

v1.15.1 - 2026-05-26

🐞 Bug fixes

  • On-host: clean the OpAMP instance id and remote config of an agent when it is removed, matching the k8s behavior (previously these files were left orphaned under fleet-data/).
  • self-instrumentation: dropped the internal traces exporter support for self-instrumentation.
  • pcg_config: the agentType variable structure should assume the same file structure
  • cd_enabled: when cd_enabled is false, we should set ac_remote_update to false as well

⛓️ Dependencies

  • Updated rust crate oci-client to 0.17.0
  • Updated rust crate either to 1.16.0
  • Updated rust crate serde_json to 1.0.150
  • Updated rust crate http to 1.4.1
  • Updated rust crate reqwest to 0.13.4

v1.15.0 - 2026-05-19

πŸš€ Enhancements

  • bumping opamp-rs to fix custom_capabilities

⛓️ Dependencies

  • Updated rust crate aws-lc-rs to 1.17.0
  • Updated rust crate config to 0.15.23
  • Updated alpine/helm to v4.2.0
  • Updated rust crate opamp-client to v0.0.39
  • Updated alpine/kubectl to v1.36.1
  • Updated rust crate tar to 0.4.46

1.14.1 - 2026-05-13

πŸš€ Enhancements

  • We should check cd_enabled not remote update

1.14.0 - 2026-05-08

πŸš€ Enhancements

  • OCI registry authentication configurable via config
  • Adds support for Fluxless mode