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 #8559 to 6.x: Add Central Management feature #8584

Merged
merged 2 commits into from
Oct 18, 2018

Conversation

exekias
Copy link
Contributor

@exekias exekias commented Oct 5, 2018

Cherry-pick of PR #8559 to 6.x branch. Original message:

Kibana will offer Central Management for Beats, this is the workflow to use it:

  • Enroll the Beat into Kibana, using the new added enroll command:
metricbeat enroll http://localhost:5601 d16a2ede945b4d9395c1ce0ff6e663f1
  • Once running, the beat will retrieve configs from Kibana and apply the changes locally.

All state is stored under meta/management.yml

Note: this is a merge from a feature branch, all PRs to it have been reviewed already

@exekias
Copy link
Contributor Author

exekias commented Oct 5, 2018

Depends on #8571, will rebase once that is merged

@ruflin
Copy link
Collaborator

ruflin commented Oct 9, 2018

I suggest we hold back merging this branch until Management in Kibana was merged into master.

@ruflin
Copy link
Collaborator

ruflin commented Oct 15, 2018

@exekias Kibana still does not seem to be merged into master / 6.x. Could you still already rebase this one so it's ready?

exekias and others added 2 commits October 16, 2018 11:30
* Beats enrollment subcommand (elastic#7182)

This PR implements intial enrollment to Central Management in Kibana. After running the enrollment command, beats will have a valid access token to use when retrieving configurations.

To test this:

- Use the following branches:
  - Elasticsearch: https://github.com/ycombinator/elasticsearch/tree/x-pack/management/beats
  - Kibana: https://github.com/elastic/kibana/tree/feature/x-pack/management/beats
- Retrieve a valid enrollment token:
```
curl  \
  -u elastic \
  -H 'kbn-xsrf: foobar'  \
  -H 'Content-Type: application/json' \
  -X POST \
  http://localhost:5601/api/beats/enrollment_tokens
```
- Use it:
```
<beat> enroll http://localhost:5601 <enrollment_token>
```
- Check agent is enrolled:
```
curl http://localhost:5601/api/beats/agents | jq
```

This is part of elastic#7028, closes elastic#7032

* Add API client to retrieve configurations from CM (elastic#8155)

* Add central management service (elastic#8263)

* Add config manager initial skeleton

Config manager will poll configs from Kibana and apply them locally. It must be
started with the beat.

In order to check the user is not trying to override configurations
provided by central management, the Config Manager can check the exisitng
configuration and return errors if something is wrong.

* Register output for reloading (elastic#8378)

* Also send beat name when enrolling (elastic#8380)

* Refactor how configs are stored (elastic#8379)

* Refactor configs storage to avoid YAML issues

* Refactor manager loop to avoid repeated code

* Use beat name var when registering confs (elastic#8435)

This should make Auditbeat or any other beat based on Metricbeat have
their own namespace for confs

* Allow user/passwd based enrollment (elastic#8524)

* Allow user/passwd based enrollment

This allows to enroll using the following workflow:

```
$ <beat> enroll http://kibana:5601 --username elastic
Enter password:

Enrolled and ready to retrieve settings from Kibana
```

It also allows to pass the password as an env variable:

```
PASS=...
$ <beat> enroll http://kibana:5601 --username elastic --password env:PASS

Enrolled and ready to retrieve settings from Kibana
```

* Fix some strings after review comments

* Add changelog

(cherry picked from commit 4247bc3)
@exekias exekias merged commit 1a52259 into elastic:6.x Oct 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants