Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Metricbeat] Add a linux module for platform-specific metrics in linux. #17267

Merged
merged 30 commits into from
May 5, 2020

Conversation

fearful-symmetry
Copy link
Contributor

@fearful-symmetry fearful-symmetry commented Mar 26, 2020

What does this PR do?

This PR is an attempt to avoid cluttering the system module with metricsets that are not broadly cross-compatible. Instead, this introduces a linux module that contains metrics exclusive to the linux kernel and various subsystems. This is a draft PR that currently includes two metricsets: pageinfo which collects metrics on the buddy paging algorithm, which can be used to determine memory fragmentation. The other is ksm, which tracks the efficacy of kernel samepage merging. This is currently a draft, as it's already quite large and I'd rather have something to show while I continue work.

Why is it important?

This module adds valueable OS-level metrics in line with similar solutions.

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
  • I have added an entry in CHANGELOG.next.asciidoc or CHANGELOG-developer.next.asciidoc.

Author's Checklist

  • Add nf_conntrack metricset
  • Tests cannot run in a containerized environment. Deal with this.

How to test this PR locally

  • Pull down and build, and run on a linux host.
  • Enable the modules and metricsets and look for data. ksm will report no data unless a running application is making use of the KSM interface.

@fearful-symmetry fearful-symmetry requested a review from a team March 26, 2020 15:55
@fearful-symmetry fearful-symmetry self-assigned this Mar 26, 2020
@fearful-symmetry fearful-symmetry changed the title [Metricbeat] Add a linux module for OS-level metrics in linux. [Metricbeat] Add a linux module for platform-specific metrics in linux. Mar 26, 2020
@fearful-symmetry fearful-symmetry added the Team:Integrations Label for the Integrations team label Mar 26, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/integrations (Team:Integrations)

@elasticmachine
Copy link
Collaborator

elasticmachine commented May 4, 2020

💔 Build Failed

Pipeline View Test View Changes Artifacts preview stats

Expand to view the summary

Build stats

Test stats 🧪

Test Results
Failed 0
Passed 7515
Skipped 1212
Total 8727

Steps errors

Expand to view the steps failures

  • Name: Report to Codecov

    • Description: curl -sSLo codecov https://codecov.io/bash for i in auditbeat filebeat heartbeat libbeat metricbeat packetbeat winlogbeat journalbeat do FILE="${i}/build/coverage/full.cov" if [ -f "${FILE}" ]; then bash codecov -f "${FILE}" fi done

    • Result: FAILURE

    • Duration: 2 min 22 sec<

    • Start Time: 2020-05-05T00:16:32.443+0000

  • Name: Mage pythonIntegTest

    • Description: mage pythonIntegTest

    • Result: FAILURE

    • Duration: 7 min 11 sec<

    • Start Time: 2020-05-05T00:03:44.501+0000

Log output

Expand to view the last 100 lines of log output

[2020-05-05T01:14:47.445Z] + FILE=libbeat/build/coverage/full.cov
[2020-05-05T01:14:47.445Z] + [ -f libbeat/build/coverage/full.cov ]
[2020-05-05T01:14:47.445Z] + FILE=metricbeat/build/coverage/full.cov
[2020-05-05T01:14:47.445Z] + [ -f metricbeat/build/coverage/full.cov ]
[2020-05-05T01:14:47.445Z] + FILE=packetbeat/build/coverage/full.cov
[2020-05-05T01:14:47.445Z] + [ -f packetbeat/build/coverage/full.cov ]
[2020-05-05T01:14:47.445Z] + FILE=winlogbeat/build/coverage/full.cov
[2020-05-05T01:14:47.445Z] + [ -f winlogbeat/build/coverage/full.cov ]
[2020-05-05T01:14:47.445Z] + FILE=journalbeat/build/coverage/full.cov
[2020-05-05T01:14:47.445Z] + [ -f journalbeat/build/coverage/full.cov ]
[2020-05-05T01:14:49.122Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats
[2020-05-05T01:14:49.624Z] + find . -type f -name TEST*.xml -path */build/* -delete
[2020-05-05T01:14:49.659Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Lint
[2020-05-05T01:14:49.882Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Elastic-Agent-Mac-OS-X
[2020-05-05T01:14:50.208Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Filebeat-Mac-OS-X
[2020-05-05T01:14:50.373Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-Mac-OS-X
[2020-05-05T01:14:50.577Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Dockerlogbeat
[2020-05-05T01:14:50.790Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Elastic-Agent-x-pack
[2020-05-05T01:14:51.009Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Winlogbeat-oss
[2020-05-05T01:14:51.254Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Generators-Metricbeat-Linux
[2020-05-05T01:14:51.502Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Journalbeat-oss
[2020-05-05T01:14:51.746Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Functionbeat-x-pack
[2020-05-05T01:14:51.895Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Elastic-Agent-x-pack-Windows
[2020-05-05T01:14:52.129Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-crosscompile
[2020-05-05T01:14:52.520Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-Python-integration-tests
[2020-05-05T01:14:52.728Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-OSS-Unit-tests
[2020-05-05T01:14:52.973Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Heartbeat-oss
[2020-05-05T01:14:53.159Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Auditbeat-x-pack
[2020-05-05T01:14:53.339Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Libbeat-x-pack
[2020-05-05T01:14:53.609Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Functionbeat-Mac-OS-X-x-pack
[2020-05-05T01:14:53.874Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Winlogbeat-Windows-x-pack
[2020-05-05T01:14:54.052Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Auditbeat-Linux
[2020-05-05T01:14:54.285Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Filebeat-Windows
[2020-05-05T01:14:54.537Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Heartbeat-Mac-OS-X
[2020-05-05T01:14:54.861Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Packetbeat-oss
[2020-05-05T01:14:55.084Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-Windows
[2020-05-05T01:14:55.307Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Auditbeat-crosscompile
[2020-05-05T01:14:55.538Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Generators-Beat-Linux
[2020-05-05T01:14:55.820Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Winlogbeat-Windows
[2020-05-05T01:14:56.188Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Filebeat-x-pack
[2020-05-05T01:14:56.398Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Heartbeat-Windows
[2020-05-05T01:14:56.625Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-OSS-Integration-tests
[2020-05-05T01:14:56.866Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Functionbeat-Windows
[2020-05-05T01:14:57.212Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Filebeat-oss
[2020-05-05T01:14:57.524Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Libbeat-oss
[2020-05-05T01:14:57.876Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Auditbeat-Mac-OS-X
[2020-05-05T01:14:58.410Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Generators-Metricbeat-Mac-OS-X
[2020-05-05T01:14:58.697Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Libbeat-crosscompile
[2020-05-05T01:14:58.878Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Generators-Beat-Mac-OS-X
[2020-05-05T01:14:59.099Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Auditbeat-Windows
[2020-05-05T01:14:59.327Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack
[2020-05-05T01:14:59.560Z] Running in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Libbeat-stress-tests
[2020-05-05T01:15:00.217Z] + cat
[2020-05-05T01:15:00.217Z] + /usr/local/bin/runbld ./runbld-script
[2020-05-05T01:15:00.217Z] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
[2020-05-05T01:15:06.998Z] runbld>>> runbld started
[2020-05-05T01:15:06.998Z] runbld>>> 1.6.11/a66728ff8f4356963772e6e6d2069392fa06acbe
[2020-05-05T01:15:08.980Z] runbld>>> The following profiles matched the job 'Beats/beats-beats-mbp/PR-17267' in order of occurrence in the config (last value wins).
[2020-05-05T01:15:10.548Z] runbld>>> Debug logging enabled.
[2020-05-05T01:15:10.548Z] runbld>>> Storing result
[2020-05-05T01:15:10.548Z] runbld>>> Store result: created {:total 2, :successful 2, :failed 0} 1
[2020-05-05T01:15:10.548Z] runbld>>> BUILD: https://c150076387b5421f9154dfbf536e5c60.us-west1.gcp.cloud.es.io:9243/build-1587637540455/t/20200505011510-C7B1DB6E
[2020-05-05T01:15:10.548Z] runbld>>> Adding system facts.
[2020-05-05T01:15:11.549Z] runbld>>> Adding vcs info for the latest commit:  0334edf603d64989fbbd6ee43e942f6e743c9eb8
[2020-05-05T01:15:11.549Z] runbld>>> >>>>>>>>>>>> SCRIPT EXECUTION BEGIN >>>>>>>>>>>>
[2020-05-05T01:15:11.549Z] runbld>>> Adding /usr/lib/jvm/java-8-openjdk-amd64/bin to the path.
[2020-05-05T01:15:11.821Z] + echo 'Processing JUnit reports with runbld...'
[2020-05-05T01:15:11.821Z] Processing JUnit reports with runbld...
[2020-05-05T01:15:12.099Z] runbld>>> <<<<<<<<<<<< SCRIPT EXECUTION END <<<<<<<<<<<<
[2020-05-05T01:15:12.099Z] runbld>>> DURATION: 19ms
[2020-05-05T01:15:12.099Z] runbld>>> STDOUT: 40 bytes
[2020-05-05T01:15:12.099Z] runbld>>> STDERR: 49 bytes
[2020-05-05T01:15:12.099Z] runbld>>> WRAPPED PROCESS: SUCCESS (0)
[2020-05-05T01:15:12.099Z] runbld>>> Searching for build metadata in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats
[2020-05-05T01:15:13.534Z] runbld>>> Storing build metadata: 
[2020-05-05T01:15:13.534Z] runbld>>> Adding test report.
[2020-05-05T01:15:13.534Z] runbld>>> Searching for junit test output files with the pattern: TEST-.*\.xml$ in: /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats
[2020-05-05T01:15:14.525Z] runbld>>> Found 102 test output files
[2020-05-05T01:15:15.515Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack/x-pack/metricbeat/build/TEST-go-integration-openmetrics.xml
[2020-05-05T01:15:15.515Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack/x-pack/metricbeat/build/TEST-go-integration-istio.xml
[2020-05-05T01:15:15.515Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack/x-pack/metricbeat/build/TEST-go-integration-iis.xml
[2020-05-05T01:15:15.515Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack/x-pack/metricbeat/build/TEST-go-integration-activemq.xml
[2020-05-05T01:15:15.515Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack/x-pack/metricbeat/build/TEST-go-integration-tomcat.xml
[2020-05-05T01:15:15.515Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-x-pack/x-pack/metricbeat/build/TEST-go-integration-cloudfoundry.xml
[2020-05-05T01:15:16.119Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-OSS-Integration-tests/metricbeat/build/TEST-go-integration-windows.xml
[2020-05-05T01:15:16.120Z] runbld>>> No testsuite node found in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267/src/github.com/elastic/beats/Metricbeat-OSS-Integration-tests/metricbeat/build/TEST-go-integration-graphite.xml
[2020-05-05T01:15:16.721Z] runbld>>> Test output logs contained: Errors: 0 Failures: 0 Tests: 8577 Skipped: 996
[2020-05-05T01:15:16.721Z] runbld>>> Storing result
[2020-05-05T01:15:16.721Z] runbld>>> FAILURES: 0
[2020-05-05T01:15:17.010Z] runbld>>> Store result: updated {:total 2, :successful 2, :failed 0} 2
[2020-05-05T01:15:17.010Z] runbld>>> BUILD: https://c150076387b5421f9154dfbf536e5c60.us-west1.gcp.cloud.es.io:9243/build-1587637540455/t/20200505011510-C7B1DB6E
[2020-05-05T01:15:17.010Z] runbld>>> Email notification disabled by environment variable.
[2020-05-05T01:15:17.010Z] runbld>>> Slack notification disabled by environment variable.
[2020-05-05T01:15:24.133Z] Running on Jenkins in /var/lib/jenkins/workspace/Beats_beats-beats-mbp_PR-17267
[2020-05-05T01:15:24.938Z] [INFO] getVaultSecret: Getting secrets
[2020-05-05T01:15:25.279Z] Masking supported pattern matches of $VAULT_ADDR or $VAULT_ROLE_ID or $VAULT_SECRET_ID
[2020-05-05T01:15:26.899Z] + chmod 755 generate-build-data.sh
[2020-05-05T01:15:26.899Z] + ./generate-build-data.sh https://beats-ci.elastic.co/blue/rest/organizations/jenkins/pipelines/Beats/beats-beats-mbp/PR-17267/ https://beats-ci.elastic.co/blue/rest/organizations/jenkins/pipelines/Beats/beats-beats-mbp/PR-17267/runs/35 FAILURE 6380216
[2020-05-05T01:15:27.810Z] INFO: curl https://beats-ci.elastic.co/blue/rest/organizations/jenkins/pipelines/Beats/beats-beats-mbp/PR-17267/runs/35/steps/?limit=10000 -o steps-info.json
[2020-05-05T01:15:33.038Z] INFO: curl https://beats-ci.elastic.co/blue/rest/organizations/jenkins/pipelines/Beats/beats-beats-mbp/PR-17267/runs/35/tests/?status=FAILED -o tests-errors.json

@fearful-symmetry fearful-symmetry requested review from urso and a team May 4, 2020 19:57
@fearful-symmetry fearful-symmetry requested review from ycombinator and a team May 4, 2020 22:38
Copy link
Contributor

@ycombinator ycombinator left a comment

Choose a reason for hiding this comment

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

LGTM.

@fearful-symmetry fearful-symmetry merged commit d59b149 into elastic:master May 5, 2020
@fearful-symmetry fearful-symmetry added [zube]: In Progress needs_backport PR is waiting to be backported to other branches. v7.8 and removed [zube]: Done labels May 5, 2020
@fearful-symmetry fearful-symmetry added v7.8.0 and removed needs_backport PR is waiting to be backported to other branches. labels May 5, 2020
fearful-symmetry added a commit to fearful-symmetry/beats that referenced this pull request May 5, 2020
…x. (elastic#17267)

* init commit of linux module

* init commit of conntrack metricset

* code cleanup

* update notice

* run go vendor

* make update

* first draft of pef mertricset

* first pass of linux/perf

* update and merge

* add build tags, disable tests

* remove system-dependent tests

* code cleanup

* more code cleanup

* fix docs, revert hostfs change

* fmt, update

* update with new upstream changes

* code cleanup, work on PID checks

* remove perf, revert to 3 metricsets

* update notice

* update config

* mage update

* fix formatting, comments

* code cleanup

(cherry picked from commit d59b149)
fearful-symmetry added a commit that referenced this pull request May 5, 2020
…rm-specific metrics in linux. (#18246)

* [Metricbeat] Add a linux module for platform-specific metrics in linux. (#17267)

* init commit of linux module

* init commit of conntrack metricset

* code cleanup

* update notice

* run go vendor

* make update

* first draft of pef mertricset

* first pass of linux/perf

* update and merge

* add build tags, disable tests

* remove system-dependent tests

* code cleanup

* more code cleanup

* fix docs, revert hostfs change

* fmt, update

* update with new upstream changes

* code cleanup, work on PID checks

* remove perf, revert to 3 metricsets

* update notice

* update config

* mage update

* fix formatting, comments

* code cleanup

(cherry picked from commit d59b149)

* mage fmt update
@andresrc andresrc added test-plan Add this PR to be manual test plan test-plan-added This PR has been added to the test plan and removed [zube]: In Progress labels May 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement :integrations Metricbeat Metricbeat Team:Integrations Label for the Integrations team test-plan Add this PR to be manual test plan test-plan-added This PR has been added to the test plan v7.8 v7.8.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants