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

Add new filters allowing FLP-based dedup #640

Merged
merged 2 commits into from
Jun 26, 2024

Conversation

jotak
Copy link
Member

@jotak jotak commented Mar 19, 2024

Note this PR is based on 2 other non-merged PRs - commit ae226f9 is the significant one

Description

  • New "remove_entry_all_satisfied" filter type: entry is removed only if
    all the conditions (represented by nested rules) are satisfied. This
    allows to have logical AND in filter conditions, whereas previously it
    was only possible to have logical OR

  • New "conditional_sampling" filter type: allows to have random sampling
    based on conditions. For example, a flow matching conditions A and B
    may have a sampling ratio of 1:10 whereas a flow matching condition C
    has 1:100 sampling and all other flows are 1:1

  • Introduced a "preprocess" function on rules; currently it's only used
    to be able to cast the Value interface{} as an int (otherwise it
    comes as a float64); but could be also used in the future for other
    purpose, e.g. regex pre-compiling

  • Add tests

Breaking change

The configuration of the removeEntryIfXXX rules is modified, they now all share the same key for additional configuration, which is named removeEntry

For example, a rule previously written as:

      filter:
        rules:
        - type: remove_entry_if_exists
          removeEntryIfExists:
            input: srcPort

must be changed to:

      filter:
        rules:
        - type: remove_entry_if_exists
          removeEntry:
            input: srcPort

Same applies to rules of type remove_entry_if_doesnt_exist, remove_entry_if_equal and remove_entry_if_not_equal.

Dependencies

n/a

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
  • Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • Does this PR require product documentation?
    • If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • Does this PR require a product release notes entry?
    • If so, fill in "Release Note Text" in the JIRA.
  • Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
    • If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
    • Standard QE validation, with pre-merge tests unless stated otherwise.
    • Regression tests only (e.g. refactoring with no user-facing change).
    • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

@jotak
Copy link
Member Author

jotak commented Mar 19, 2024

Resource footprints look good: https://docs.google.com/spreadsheets/d/1qakBaK1dk_rERO30k1cSR4W-Nn0SXW4A3lqQ1sZC4rE/edit#gid=705512397
I ran two scenarios, one for dropping duplicates and another for sampling 1:50 duplicates.
=> both of them show around -30% CPU/memory/storage usage by Loki; FLP CPU decreased by ~12% and FLP memory decreased by 16% in drop scenario and 10% in sampling scenario.

Copy link

codecov bot commented Mar 19, 2024

Codecov Report

Attention: Patch coverage is 76.92308% with 27 lines in your changes are missing coverage. Please review.

Project coverage is 67.41%. Comparing base (d2b2352) to head (fb76a92).

Files Patch % Lines
pkg/api/transform_filter.go 46.15% 11 Missing and 3 partials ⚠️
pkg/pipeline/transform/transform_filter.go 85.71% 10 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #640      +/-   ##
==========================================
- Coverage   67.41%   67.41%   -0.01%     
==========================================
  Files         102      103       +1     
  Lines        7589     7641      +52     
==========================================
+ Hits         5116     5151      +35     
- Misses       2162     2176      +14     
- Partials      311      314       +3     
Flag Coverage Δ
unittests 67.41% <76.92%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

- New "remove_entry_all_satisfied" filter type: entry is removed only if
  all the conditions (represented by nested rules) are satisfied. This
allows to have logical AND in filter conditions, whereas previously it
was only possible to have logical OR

- New "conditional_sampling" filter type: allows to have random sampling
  based on conditions. For example, a flow matching conditions A and B
may have a sampling ratio of 1:10 whereas a flow matching condition C
has 1:100 sampling and all other flows are 1:1

- Introduced a "preprocess" function on rules; currently it's only used
  to be able to cast the `Value interface{}` as an int (otherwise it
comes as a float64); but could be also used in the future for other
purpose, e.g. regex pre-compiling

- Add tests
Copy link
Collaborator

@jpinsonneau jpinsonneau left a comment

Choose a reason for hiding this comment

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

LGTM in terms of code

@openshift-ci openshift-ci bot added the lgtm label Apr 8, 2024
@jpinsonneau jpinsonneau added the breaking-change This pull request has breaking changes. They should be described in PR description. label Apr 8, 2024
@codecov-commenter
Copy link

codecov-commenter commented Apr 8, 2024

Codecov Report

Attention: Patch coverage is 76.92308% with 27 lines in your changes missing coverage. Please review.

Project coverage is 67.41%. Comparing base (d2b2352) to head (fb76a92).
Report is 27 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #640      +/-   ##
==========================================
- Coverage   67.41%   67.41%   -0.01%     
==========================================
  Files         102      103       +1     
  Lines        7589     7641      +52     
==========================================
+ Hits         5116     5151      +35     
- Misses       2162     2176      +14     
- Partials      311      314       +3     
Flag Coverage Δ
unittests 67.41% <76.92%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Coverage Δ
pkg/pipeline/transform/transform_filter.go 88.98% <85.71%> (-0.15%) ⬇️
pkg/api/transform_filter.go 46.15% <46.15%> (ø)

@jotak jotak added the no-qe This PR doesn't necessitate QE approval label Jun 26, 2024
@jotak
Copy link
Member Author

jotak commented Jun 26, 2024

This has no impact on netobserv operator currently, hence marking no-qe

@jotak
Copy link
Member Author

jotak commented Jun 26, 2024

/approve

Copy link

openshift-ci bot commented Jun 26, 2024

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jotak

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jotak
Copy link
Member Author

jotak commented Jun 26, 2024

/test unit

@openshift-merge-bot openshift-merge-bot bot merged commit 3139b30 into netobserv:main Jun 26, 2024
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved breaking-change This pull request has breaking changes. They should be described in PR description. lgtm no-qe This PR doesn't necessitate QE approval
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants