elastic / elastic/elastic-agent

[heartbeat] Literal dots in browser params are not preserved

Open
#16,285 3 comments 0 reactions 0 assignees View on GitHub

@macdewee is already working on this.

Since Sep 17, 2026.

bug Team:Elastic-Agent-Control-Plane
Dominant language
Go
Stars
276
Forks
266
Avg merge
1d 23h
Merged PRs (30d)
312

Description

Summary

Process-mode Heartbeat has explicit handling that extracts browser params before dot-expanding parsing and restores them using PathSep(""):

https://github.com/elastic/beats/blob/main/x-pack/heartbeat/cmd/root.go#L30-L107

The receiver path bypasses heartbeatCfg and later parses the receiver map using ucfg.PathSep("."):

https://github.com/elastic/beats/blob/main/x-pack/libbeat/cmd/instance/beat.go#L77-L81

A local reproduction using that receiver parser configuration produced:

input params:  {"subdomain.example.com": "literal-value"}
decoded params: {"subdomain":{"example":{"com":"literal-value"}}}

The existing process-mode fix for elastic/beats#51685 is therefore not effective in OTel receiver mode.

Expected

params["subdomain.example.com"] remains a literal parameter name.

Actual

It becomes the nested path params.subdomain.example.com.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the receiver parsing entry point in x-pack/libbeat/cmd/instance/beat.go#L77-L81, then compare it with the process-mode handling in x-pack/heartbeat/cmd/root.go#L30-L107. Reproduce the receiver-mode case and verify that params["subdomain.example.com"] remains a literal parameter name rather than becoming nested path components.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.