Skip to content

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

Merged
orestisfl merged 3 commits into8.19from
mergify/bp/8.19/pr-49098
Mar 11, 2026
Merged

[8.19](backport #49098) [Metricbeat] Bump elastic-agent-system-metrics for zswap and cgroups v2 CPU CFS data#49398
orestisfl merged 3 commits into8.19from
mergify/bp/8.19/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)

# Conflicts:
#	metricbeat/module/system/fields.go
@mergify mergify bot requested a review from a team as a code owner March 11, 2026 11:05
@mergify mergify bot added the backport label Mar 11, 2026
@mergify mergify bot requested a review from a team as a code owner March 11, 2026 11:05
@mergify mergify bot added the conflicts There is a conflict in the backported pull request label Mar 11, 2026
@mergify mergify bot requested a review from a team as a code owner March 11, 2026 11:05
@mergify
Copy link
Contributor Author

mergify bot commented Mar 11, 2026

Cherry-pick of eeabffa has failed:

On branch mergify/bp/8.19/pr-49098
Your branch is up to date with 'origin/8.19'.

You are currently cherry-picking commit eeabffa30.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   NOTICE.txt
	new file:   changelog/fragments/1772011445-zswap-metrics.yaml
	new file:   changelog/fragments/1772636540-zswap-metrics.yaml
	modified:   docs/reference/metricbeat/exported-fields-system.md
	modified:   go.mod
	modified:   go.sum
	modified:   metricbeat/module/system/memory/_meta/fields.yml
	modified:   metricbeat/module/system/process/_meta/fields.yml
	modified:   metricbeat/module/system/test_system.py

Unmerged paths:
  (use "git add <file>..." to mark resolution)
	both modified:   metricbeat/module/system/fields.go

To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally

@mergify mergify bot requested review from leehinman and mauri870 and removed request for a team March 11, 2026 11:05
@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
@elasticmachine
Copy link
Contributor

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

@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Mar 11, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 11, 2026

Vale Linting Results

Summary: 1 suggestion found

💡 Suggestions (1)
File Line Rule Message
docs/reference/metricbeat/exported-fields-system.md 809 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.

The auto-generated metricbeat/module/system/fields.go had merge
conflict markers from the backport cherry-pick. Regenerated using
`mage fields` based on the successfully merged _meta/fields.yml files.
@orestisfl orestisfl enabled auto-merge (squash) March 11, 2026 11:37
@github-actions
Copy link
Contributor

TL;DR

check-docs failed in the check job because generated docs are stale. Regenerate and commit metricbeat/docs/fields.asciidoc (via make update), then re-run CI.

Remediation

  • On branch mergify/bp/8.19/pr-49098, run make update from repo root (or at minimum the Metricbeat update target), then commit the regenerated file(s).
  • Confirm metricbeat/docs/fields.asciidoc is included in the commit and re-run the failed check (check-docs).
Investigation details

Root Cause

The workflow’s Run check step executes make check, which verifies generated artifacts are up to date. That check detected an uncommitted generated change in metricbeat/docs/fields.asciidoc and failed the job.

Evidence

Error: some files are not up-to-date. Run 'make update' then review and commit the changes. Modified: [metricbeat/docs/fields.asciidoc]
make[1]: *** [../dev-tools/make/mage.mk:21: check] Error 1
make: *** [Makefile:94: check] Error 1

Validation

  • Log analysis only (no local rerun in this detective pass).

Follow-up

  • If make update changes additional generated files, include them in the same commit to avoid another generator drift failure.

What is this? | From workflow: PR Actions Detective

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Run `make update` to bring generated docs in sync with the updated
field definitions for zswap and cgroups v2 CPU CFS metrics.
@orestisfl orestisfl merged commit fa05930 into 8.19 Mar 11, 2026
211 checks passed
@orestisfl orestisfl deleted the mergify/bp/8.19/pr-49098 branch March 11, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport conflicts There is a conflict in the backported pull request enhancement Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants