Skip to content

[9.3](backport #49098) [Metricbeat] Bump elastic-agent-system-metrics for zswap and cgroups v2 CPU CFS data#49400

Merged
orestisfl merged 1 commit into9.3from
mergify/bp/9.3/pr-49098
Mar 11, 2026
Merged

[9.3](backport #49098) [Metricbeat] Bump elastic-agent-system-metrics for zswap and cgroups v2 CPU CFS data#49400
orestisfl merged 1 commit into9.3from
mergify/bp/9.3/pr-49098

Conversation

@mergify
Copy link
Contributor

@mergify mergify bot commented Mar 11, 2026

Proposed commit message

Bumps the elastic-agent-system-metrics dependency to v0.14.3, v0.14.2 also included.

What's Changed

Checklist

  • My code follows the style guidelines of this project
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have made corresponding change to the default configuration files
  • I have added tests that prove my fix is effective or that my feature works. Where relevant, I have used the stresstest.sh script to run them under stress conditions and race detector to verify their stability.
  • I have added an entry in ./changelog/fragments using the changelog tool.

Disruptive User Impact

None. New features.

How to test this PR locally

  1. Build metricbeat from the branch:
cd metricbeat
mage build
  1. Create a test config file metricbeat.test.yml:
metricbeat.modules:
  - module: system
    period: 5s
    metricsets:
      - memory
      - process
    process.include_top_n:
      by_cpu: 5
      by_memory: 5

output.console:
  pretty: true

logging.level: debug
  1. Run metricbeat:
./metricbeat -e -c metricbeat.test.yml
  1. Verify zswap memory metrics appear in the output (requires Linux with zswap enabled -- check with cat /sys/module/zswap/parameters/enabled):
./metricbeat -e -c metricbeat.test.yml 2>/dev/null | jq 'select(.metricset.name == "memory") | .system.memory.zswap'

Expected output (values will vary):

{
  "compressed": 950353920,
  "uncompressed": 3813502976
}
  1. To also verify the zswap.debug.* fields (requires debugfs access), grant the binary the cap_dac_read_search capability:
sudo setcap cap_dac_read_search=+ep metricbeat

Then re-run. Expected output with debug fields:

{
  "compressed": 950353920,
  "uncompressed": 3813502976,
  "debug": {
    "decompress_fail": 0,
    "pool_limit_hit": 0,
    "pool_total_size": 950353920,
    "reject_alloc_fail": 0,
    "reject_compress_fail": 0,
    "reject_compress_poor": 0,
    "reject_kmemcache_fail": 0,
    "reject_reclaim_fail": 0,
    "stored_incompressible_pages": 16779,
    "stored_pages": 931031,
    "written_back_pages": 29111
  }
}
  1. Verify cfs.weight appears in process cgroup metrics (requires cgroupsv2):
./metricbeat -e -c metricbeat.test.yml 2>/dev/null | jq 'select(.metricset.name == "process") | .system.process.cgroup.cpu.cfs.weight // empty'
  1. Run unit tests:
cd metricbeat
go test ./module/system/...

Related issues

…v2 CPU CFS data (#49098)

Bumps the elastic-agent-system-metrics dependency to [v0.14.3](https://github.com/elastic/elastic-agent-system-metrics/releases/tag/v0.14.3), [v0.14.2](https://github.com/elastic/elastic-agent-system-metrics/releases/tag/v0.14.2) also included.

### What's Changed
* Add Zswap Metrics by @orestisfl in elastic/elastic-agent-system-metrics#279
* PULL_REQUEST_TEMPLATE: Remove reference to non-existant CHANGELOG.md by @orestisfl in elastic/elastic-agent-system-metrics#286
* fix: remove shared context timeout from matrix tests by @orestisfl in elastic/elastic-agent-system-metrics#285
* Enable modernize linter and apply suggestions by @orestisfl in elastic/elastic-agent-system-metrics#287
* Use json omitzero for struct-typed fields in cgroup structs by @orestisfl in elastic/elastic-agent-system-metrics#288
* [cgv2] Add CPU CFS quota, period, and weight metrics by @orestisfl in elastic/elastic-agent-system-metrics#281
* Add missing zswap debug metrics by @orestisfl in elastic/elastic-agent-system-metrics#289

## Disruptive User Impact

None. New features.

## How to test this PR locally

1. Build metricbeat from the branch:

```bash
cd metricbeat
mage build
```

2. Create a test config file `metricbeat.test.yml`:

```yaml
metricbeat.modules:
  - module: system
    period: 5s
    metricsets:
      - memory
      - process
    process.include_top_n:
      by_cpu: 5
      by_memory: 5

output.console:
  pretty: true

logging.level: debug
```

3. Run metricbeat:

```bash
./metricbeat -e -c metricbeat.test.yml
```

4. Verify zswap memory metrics appear in the output (requires Linux with zswap enabled -- check with `cat /sys/module/zswap/parameters/enabled`):

```bash
./metricbeat -e -c metricbeat.test.yml 2>/dev/null | jq 'select(.metricset.name == "memory") | .system.memory.zswap'
```

Expected output (values will vary):

```json
{
  "compressed": 950353920,
  "uncompressed": 3813502976
}
```

5. To also verify the `zswap.debug.*` fields (requires debugfs access), grant the binary the `cap_dac_read_search` capability:

```bash
sudo setcap cap_dac_read_search=+ep metricbeat
```

Then re-run. Expected output with debug fields:

```json
{
  "compressed": 950353920,
  "uncompressed": 3813502976,
  "debug": {
    "decompress_fail": 0,
    "pool_limit_hit": 0,
    "pool_total_size": 950353920,
    "reject_alloc_fail": 0,
    "reject_compress_fail": 0,
    "reject_compress_poor": 0,
    "reject_kmemcache_fail": 0,
    "reject_reclaim_fail": 0,
    "stored_incompressible_pages": 16779,
    "stored_pages": 931031,
    "written_back_pages": 29111
  }
}
```

6. Verify `cfs.weight` appears in process cgroup metrics (requires cgroupsv2):

```bash
./metricbeat -e -c metricbeat.test.yml 2>/dev/null | jq 'select(.metricset.name == "process") | .system.process.cgroup.cpu.cfs.weight // empty'
```

7. Run unit tests:

```bash
cd metricbeat
go test ./module/system/...
```

(cherry picked from commit eeabffa)
@mergify mergify bot requested a review from a team as a code owner March 11, 2026 11:07
@mergify mergify bot added the backport label Mar 11, 2026
@mergify mergify bot requested review from a team as code owners March 11, 2026 11:07
@mergify mergify bot requested review from AndersonQ and VihasMakwana and removed request for a team March 11, 2026 11:07
@botelastic botelastic bot added the needs_team Indicates that the issue/PR needs a Team:* label label Mar 11, 2026
@github-actions
Copy link
Contributor

🤖 GitHub comments

Just comment with:

  • run docs-build : Re-trigger the docs validation. (use unformatted text in the comment!)

@github-actions github-actions bot added enhancement Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team labels Mar 11, 2026
@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Mar 11, 2026
@elasticmachine
Copy link
Contributor

Pinging @elastic/elastic-agent-data-plane (Team:Elastic-Agent-Data-Plane)

@github-actions
Copy link
Contributor

🔍 Preview links for changed docs

@github-actions
Copy link
Contributor

Vale Linting Results

Summary: 1 suggestion found

💡 Suggestions (1)
File Line Rule Message
docs/reference/metricbeat/exported-fields-system.md 810 Elastic.WordChoice Consider using 'select, press, visits' instead of 'hit', unless the term is in the UI.

The Vale linter checks documentation changes against the Elastic Docs style guide.

To use Vale locally or report issues, refer to Elastic style guide for Vale.

@orestisfl orestisfl enabled auto-merge (squash) March 11, 2026 11:37
@orestisfl orestisfl merged commit 940307d into 9.3 Mar 11, 2026
211 checks passed
@orestisfl orestisfl deleted the mergify/bp/9.3/pr-49098 branch March 11, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants