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

Cherry-pick #22634 to 7.10: Avoid sending non-numeric floats in cloud foundry integrations #22751

Merged
merged 1 commit into from
Nov 25, 2020

Conversation

jsoriano
Copy link
Member

@jsoriano jsoriano commented Nov 25, 2020

Cherry-pick of PR #22634 to 7.10 branch. Original message:

What does this PR do?

Cloud Foundry integrations are sending some values as they are received
from the Firehose, some of these values can be floats with non-numeric
values (NaN/Inf), that are not supported by JSON and Elasticsearch.

I haven't been able to reproduce this, but there are only two places
where Metricbeat can receive non-numeric floats.

Add defensive code to avoid sending these values to the outputs:

  • In the container metricset, remove cpu percentages with non-numeric values.
  • In the value metricset, drop whole events with non-numeric values.

Add some helpers and mocks to be able to test the module with specific envelopes.

Why is it important?

Sending non-numeric float values to some outputs is problematic.

There were only integration tests for this module, these tests are not executed in CI yet.
With the added helpers we can test the module without needing a CF environment.

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.

Related issues

@jsoriano jsoriano added [zube]: In Review backport Team:Platforms Label for the Integrations - Platforms team labels Nov 25, 2020
@botelastic botelastic bot added the needs_team Indicates that the issue/PR needs a Team:* label label Nov 25, 2020
@elasticmachine
Copy link
Collaborator

Pinging @elastic/integrations-platforms (Team:Platforms)

@botelastic botelastic bot removed the needs_team Indicates that the issue/PR needs a Team:* label label Nov 25, 2020
…ic#22634)

Cloud Foundry integrations are sending some values as they are received
from the Firehose, some of these values can be floats with non-numeric
values (NaN/Inf), that are not supported by JSON and Elasticsearch.

Add defensive code to avoid sending these values to the outputs.

Also, add unit tests using mocked cloud foundry hubs.

(cherry picked from commit 0619788)
@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview

Expand to view the summary

Build stats

  • Build Cause: [Pull request #22751 updated]

  • Start Time: 2020-11-25T10:26:36.532+0000

  • Duration: 43 min 40 sec

Test stats 🧪

Test Results
Failed 0
Passed 4892
Skipped 356
Total 5248

Steps errors 2

Expand to view the steps failures

Terraform Apply on x-pack/metricbeat/module/aws

  • Took 0 min 14 sec . View more details on here

Terraform Apply on x-pack/metricbeat/module/aws

  • Took 0 min 16 sec . View more details on here

💚 Flaky test report

Tests succeeded.

Expand to view the summary

Test stats 🧪

Test Results
Failed 0
Passed 4892
Skipped 356
Total 5248

@jsoriano jsoriano merged commit 3e99172 into elastic:7.10 Nov 25, 2020
@jsoriano jsoriano deleted the backport_22634_7.10 branch November 25, 2020 15:44
@zube zube bot removed the [zube]: Done label Feb 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport Team:Platforms Label for the Integrations - Platforms team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants