How do I use Elasticsearch with Wasabi?

Elasticsearch has been validated for use with Wasabi. Follow instructions outlined below for more information.

 

NOTE: We are running this on an Ubuntu 20.04 System in single-node mode. You will have to restart the Elasticsearch services after installing the "repository-s3" plugin. This procedure should be adjusted to your own cluster, and tested in a lab environment before attempting on a production system. In addition, if you are running a different OS you may need to adjust certain commands to fit your OS.

 

Install HTTPie HTTP client for making local HTTP requests to Elasticsearch

$ sudo snap install http

 

Install the Elasticsearch repository-s3 plugin

$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install -b repository-s3

 

Restart Elasticsearch Service to enable repository-s3 plugin

$ sudo systemctl restart elasticsearch

 

Validate plugin has been installed

$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin list

 

Set Wasabi Environment Variables

You will need to replace the access key, and secret key with keys generated from your Wasabi account. (This keypair combination has been revoked and will not work)

Creating a Wasabi API Access Key Set

$ WASABI_ACCESS_KEY=3E7H7DRC0I6Q4JGK6FGC
$ WASABI_SECRET_KEY=ZqempHGBL5ZXmRyXGzF8DXd5nbj6n5GPX0gG9wv2+l3ych5dWhyKiM7EIkHOhzE=

 

Load keys into Elasticsearch Keystore using the default client

$ echo $WASABI_ACCESS_KEY | sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.access_key
$ echo $WASABI_SECRET_KEY | sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add s3.client.default.secret_key

 

Reload Elasticsearch Secure Settings

$ http POST 127.0.0.1:9200/_nodes/reload_secure_settings

 

Load repository configuration into Elasticsearch

This is an example of the JSON required to configure Wasabi as an Object Storage Endpoint. You want to replace the bucket attribute with your bucket name, and the endpoint attribute with the appropriate URL for the Wasabi Region your bucket is located.

{
"type": "s3",
"settings": {
"bucket": "<bucket-name>",
"endpoint": "<wasabi-region-url>"
}
}

 

Send request to Elasticsearch and create repository

This takes your JSON request, and sends it in an HTTP PUT to the Elasticsearch server running on 127.0.0.1. The Request Path will be used to name the repository. In this example, the name of the repository is "my_wasabi_repository". You should name this according to your own naming conventions. You also want to update the bucket and endpoint attributes to match your Wasabi configuration.

$ echo '{ "type":"s3","settings":{"bucket":"my-es-bucket","endpoint":"https://s3.wasabisys.com"}}' | http PUT 127.0.0.1:9200/_snapshot/my_wasabi_repository

 

NOTE: That this example discusses the use of Wasabi's us-east-1 storage region. To use other Wasabi storage regions, please use the appropriate Wasabi service URL as described in this article

 

Checked your indices if you only want to take a snapshot of certain indices

This command will give you a list of indices if you want to take a snapshot of only a particular index to push to Wasabi.

$ http 127.0.0.1:9200/_cat/indices?v=true

The output will look like this

HTTP/1.1 200 OK
content-encoding: gzip
content-length: 624
content-type: text/plain; charset=UTF-8

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open filebeat-7.10.2-2021.02.10-000001 Qk0GZpH3QJCss7z7n0fDxQ 1 1 0 0 208b 208b
yellow open metricbeat-7.10.2-2021.02.10-000001 v6mk_95RRWa9lO7HG0OPtw 1 1 291 0 475.3kb 475.3kb
green open .apm-custom-link kfr4lt2hQUuD6ZFwmEWjQA 1 0 0 0 208b 208b
green open .kibana_task_manager_1 oFgmJ4zVQd2rmAgTFdoaJQ 1 0 5 2140 302.1kb 302.1kb
yellow open filebeat-7.10.2-2021.02.10 rERopYJ1SMKS1YVHZgqjsw 1 1 69374 0 15mb 15mb
green open .apm-agent-configuration eaiKkoekQkSuilh7e355kQ 1 0 0 0 208b 208b
yellow open metricbeat-7.10.2-2021.02.10 GSo_oNpyQMyD5ceud1eCwg 1 1 61582 0 56.2mb 56.2mb
green open .async-search OxG0O-3ISOK-XbHBWxZG6Q 1 0 0 0 3.7kb 3.7kb
green open .kibana_1 FJAauGDmSzeiLw1JESY3gA 1 0 1101 18 2.5mb 2.5mb
green open .kibana-event-log-7.10.2-000001 RX8Yqi5JRF-KANOd7GocRQ 1 0 2 0 11kb 11kb
yellow open packetbeat-7.10.2-2021.02.10 qiaVu6SNRTSQCHvW8gvXQw 1 1 171524 0 46.6mb 46.6mb

 

Taking Snapshots

Take a snapshot of all of your indices

This command will take a snapshot of all of your indices, and push them to "my_wasabi_repository". The name of the snapshot in this example is "full_snapshot_021021", you will want to rename this for your own naming conventions.

$ http PUT 127.0.0.1:9200/_snapshot/my_wasabi_repository/full_snapshot_021021?wait_for_completion=true

 

Take a snapshot of a certain index only

$ echo '{"indices":"filebeat-*"}' | http PUT 127.0.0.1:9200/_snapshot/my_wasabi_repository/filebeat-021021?wait_for_completion=true

 

Validate Snapshots

You will need to update the name of the snapshot at the end of the path.

$ http 127.0.0.1:9200/_snapshot/my_wasabi_repository/full_snapshot_021021

 

 

 

 

Have more questions? Submit a request