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 #23848 to 7.x: Agent supports capabilities definition #24037

Merged
merged 1 commit into from
Feb 15, 2021

Conversation

michalpristas
Copy link
Contributor

@michalpristas michalpristas commented Feb 15, 2021

Cherry-pick of PR #23848 to 7.x branch. Original message:

What does this PR do?

This PR introduces capabilities as described in #21000
Consists of first step of implementation - bare input/output/upgrade filter without any additional filtering options such as only subset of metricsets etc.

How this works is that there is a Capability injected down to components which checks objects passed to Apply fn.
This capability has set of input/output/upgrade capabilities based on description in capabilities.yml file. This file sits next to agent config and contains a list of definitions.

Each of these capabilities decides whether input object is interesting and capability can operate on it or not.
If so it checks for whatever it is configured for and returns updated object.
It always returns object of the same type as it was passed in.
E.g input capability is able to operate on maps and on AST. if ast is passed in it can never happen map is returned.

When agent rules out inuput/output log is written with ERROR log level and health of agent is degraded as discussed in elastic/kibana#76841

Feature works for standalone and fleet managed mode.

sample constaints.yml allowing system metrics and nothing else

version: 0.0.1
constraints:
- rule: allow
  input: system/metrics
- rule: deny
  input: "*"

Testing

The ideal way how to play with this is to package an agent and then modify elastic-agent.yml, capabilities.yml and invoking ./elastic-agent inspect to see how the resulting config looks like

Why is it important?

#21000

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.

…3848)

[Ingest Management] Agent supports capabilities definition (elastic#23848)
@elasticmachine
Copy link
Collaborator

Pinging @elastic/agent (Team:Agent)

@botelastic botelastic bot added needs_team Indicates that the issue/PR needs a Team:* label and removed needs_team Indicates that the issue/PR needs a Team:* label labels Feb 15, 2021
@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 #24037 opened

  • Start Time: 2021-02-15T13:48:02.813+0000

  • Duration: 30 min 51 sec

  • Commit: b62dc78

Test stats 🧪

Test Results
Failed 0
Passed 6494
Skipped 24
Total 6518

Trends 🧪

Image of Build Times

Image of Tests

💚 Flaky test report

Tests succeeded.

Expand to view the summary

Test stats 🧪

Test Results
Failed 0
Passed 6494
Skipped 24
Total 6518

@michalpristas
Copy link
Contributor Author

/package

@michalpristas michalpristas merged commit 86a0bd8 into elastic:7.x Feb 15, 2021
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.

3 participants