Skip to content

Radar: connect with agents - #3955

Open
kaitlynmichael wants to merge 5 commits into
mainfrom
DOC-7023
Open

Radar: connect with agents#3955
kaitlynmichael wants to merge 5 commits into
mainfrom
DOC-7023

Conversation

@kaitlynmichael

@kaitlynmichael kaitlynmichael commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Note

Low Risk
Documentation-only changes with no application code, credentials handling, or deployment logic modified in this PR.

Overview
Documents Radar agents for Redis Software and Redis Open Source when Radar cannot reach clusters directly (firewalls, private subnets, air-gapped paths).

Adds agent.md, a new operate guide that explains managed vs static credential modes, tarball install and systemd setup, managed activation and static YAML provisioning, private CA trust, isolated-network export/submit-export, monitoring (/healthz, /metrics), security notes, and upgrade/removal. It references new UI screenshots under images/radar/.

Updates _index.md and connect.md so network reachability is called out as a setup requirement, with links to the agent page when direct outbound access from Radar is not possible.

Reviewed by Cursor Bugbot for commit 2bf5eaa. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

DOC-7023

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

🧠 Redis Memory

Found 9 related items from repository history (1 new this commit):

Memory updated at 2bf5eaa

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9251adf. Configure here.

Comment thread content/operate/radar/agent.md

@dwdougherty dwdougherty left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Apart from the Bugbot issue and the TODO you have in a comment, the language looks good to me. One nitpick: the first image, activate-managed-agent.png could do with a bit of trimming.

Comment on lines +104 to +110
2. Copy the endpoint from the dialog, then activate the agent on its host.

```bash
sudo -u mcm /usr/libexec/mcm/radar-agent activate \
--endpoint <radar-agent-grpc-host>:9443 \
--state-dir /var/lib/radar-agent \
--display-name <agent-name>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

For Cloud deployments, this example drops the required --tenant-activation-id argument. Radar already generates a short-lived, tenant-bound handle when the administrator opens Activate managed agent, and the UI includes it in the copied activation command. The Cloud gRPC service rejects activation without that handle, so following this example will fail before a pending request appears.

Please instruct readers to copy the entire activation command from the dialog, preserve all generated arguments (including --tenant-activation-id when present), replace the endpoint and agent-name placeholders, and run it as the mcm service user before the displayed deadline.

Also, the dialog currently displays an endpoint placeholder, not the actual deployment endpoint. Readers need the public Agent gRPC hostname and port; 9443 is not necessarily the public port. Automatically populating that endpoint would be a separate Radar UI/API/configuration improvement. The tenant-handle generation and enforcement already exist; the fix for the missing flag here is in the documentation.

@gnesher gnesher left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Five documentation-only follow-ups from checking the agent setup instructions against Radar’s current implementation.

Comment on lines +193 to +196
5. Collect from every source and print a redacted summary without submitting to Radar.

```bash
sudo -u mcm /usr/libexec/mcm/radar-agent dry-run --config /etc/radar-agent/config.yaml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P1] Create the static agent's redaction salt before the first collection

The bundled examples/static-agent.yaml enables redaction and sets redaction.salt_file to /var/lib/radar-agent/redaction-salt, but these instructions only create the directory. The runtime reads an existing salt file; it does not generate one. Following the guide therefore passes validate and then fails here with read redaction salt file: ... no such file or directory (reproduced against the current Radar code).

Please add a one-time step before dry-run to generate a nonempty random salt at the configured path, owned by mcm with mode 0600. Tell readers to retain the same salt across restarts and upgrades rather than overwrite it when repeating installation steps. This can be fixed in the guide without changing the agent.

Comment on lines +125 to +127
4. Enter the Redis Software or Redis Open Source connection details in the approval form.

Radar stores these credentials and sends them to the agent.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Complete approval and wait for credential storage before starting the service

The initial Approve action opens the connection-details form; entering those details does not submit the approval. The UI has a separate Confirm approval button. The agent then polls for approval and writes its credential before printing Activation approved; managed credential stored.

Please end this step with: select Confirm approval, then wait for that terminal success message before proceeding to start the service. This makes the UI-to-terminal handoff explicit and ensures the managed daemon has the credential file it needs.

These endpoints are unauthenticated. Bind them to loopback, as in `--metrics-addr 127.0.0.1:9090`, or put a firewall in front of them.
{{< /warning >}}

To read the health snapshot the daemon writes locally, run `sudo -u mcm /usr/libexec/mcm/radar-agent health`. Use `journalctl` for the agent's logs and `systemctl` to restart the service.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Configure the health file on both the daemon and the health command

The documented bare radar-agent health command exits with --health-file is required (reproduced). The daemon also only writes a local health snapshot when started with --health-file; neither daemon example currently includes it. --metrics-addr alone exposes HTTP health/metrics but does not create the local JSON file.

Please either direct readers to the configured /healthz endpoint, or show both sides: add --health-file /var/lib/radar-agent/health.json to RADAR_AGENT_DAEMON_ARGS, restart the service, and read it with sudo -u mcm /usr/libexec/mcm/radar-agent health --health-file /var/lib/radar-agent/health.json.

sudo -u mcm /usr/libexec/mcm/radar-agent submit-export --config /etc/radar-agent/config.yaml --input telemetry.json
```

The exported file holds sanitized telemetry only. It never contains your Radar token or your source credentials. The configuration file on each host does contain them, so protect both hosts.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Document separate collection and submission configurations for offline use

Both commands accept --config, but they do not require the same credentials. The current CLI deliberately uses collection-only validation for export (source configuration required, no Radar token required) and submission-only validation for submit-export (Radar endpoint/token required, no source configuration required).

Please show two minimal configurations with matching agent.id: source credentials and the redaction salt on the collector, and Radar endpoint/token on the submission host. Update the preceding instruction to copy the configuration to both hosts accordingly. Saying that both hosts' configurations contain both sets of credentials unnecessarily moves source secrets off the collector and conflicts with the static-mode custody benefit described above. The code already supports this separation.


Radar enforces a version policy on every request. An agent older than the minimum supported version is rejected until you upgrade it. An agent newer than the Radar deployment supports is also rejected, and Radar asks for a server upgrade instead.

If Radar's database is reset, activate the managed agent again: remove the old state directory, run `sudo -u mcm /usr/libexec/mcm/radar-agent activate`, then start the service.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

[P2] Link reactivation to the complete managed setup procedure

The bare radar-agent activate command fails immediately with --endpoint is required; --state-dir and --display-name are also required, and Cloud needs a fresh tenant activation handle from the UI. Removing /var/lib/radar-agent introduces another missing step: the mcm user cannot recreate that directory under the root-owned /var/lib parent during activation.

Please tell readers to stop the service before clearing managed registration state, recreate the state directory with mcm:mcm ownership and mode 0700 if it was removed, and repeat the complete managed activation/approval procedure before restarting. Linking back to that procedure will avoid maintaining an incomplete second activation command here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants