elastic / kibana

Your window into the Elastic Stack
https://www.elastic.co/products/kibana
Other
19.78k stars 8.19k forks source link

Cross Cluster Search limitations #94965

Open stacey-gammon opened 3 years ago

stacey-gammon commented 3 years ago

There are some known limitations when using Kibana and Cross Cluster search to access data on an Elasticsearch cluster that is older than the Kibana version.

Limitations

Area CCS Limitation Expected versions broken
Discover Data from incompatible cluster is silently lost Kibana is >= 7.12 and remote cluster < 7.10
Maps geotile_grid aggregation fails Kibana is >= 7.0 and remote cluster is <= 6.8
Canvas Elasticsearch queries will timeout Kibana is >= 7.12 and remote cluster < 7.10
Canvas SQL queries will timeout All versions
Canvas EQL queries will timeout All versions
Logs Complete data loss from both compatible and incompatible clusters Kibana is < 7.12.1 & >= 7.11 and remote cluster < 7.10
Logs Data loss from incompatible clusters Kibana is >= 7.12.1 and remote cluster < 7.10
ML Limitations, but user sees helpful error messages (full context) Kibana is >= 7.12 and remote cluster < 7.10
SIEM Timeline and Hosts page are missing data. More details Most likely due to search fields option, so Kibana is >= 7.12.1 and remote cluster < 7.10
SIEM Alerts do not generate data. More details Most likely due to search fields option, so Kibana is >= 7.12.1 and remote cluster < 7.10

Details

Search fields options

Using the fields option in search requests in versions >= 7.11 will result in data not being returned from clusters <= 7.10. Areas broken in Kibana include Discover, Canvas (SQL,EQL), Logs and ML, SIEM. There is a workaround currently for Discover, bu turning the discover:searchFieldsFromSource toggle on (not the default).

Geo tile grid aggregations

These types of aggregations in the maps app and ML will fail if any clusters are <= 6.8 and Kibana is 7.0 and greater.

Progress & Status

7.12 Kibana -> 6.8 ES Owner Area Status
@MadameSheema SIEM Not started
@qhoxie Enterprise Search ✅ Done
@jasonrhodes Observability - https://github.com/elastic/kibana/issues/96318 Done
@cjcenizal ES UI ✅ Done
@wwang500 ML ✅ Done - https://github.com/elastic/kibana/issues/93624#issuecomment-801118809
@LeeDr Kibana testing ✅ Done - https://github.com/elastic/kibana/issues/93624
7.11 Kibana -> 6.8 ES Owner Area Status
@MadameSheema SIEM In Progress
@qhoxie Enterprise Search ✅ Done
@wwang500 ML ✅ Done - https://github.com/elastic/kibana/issues/94965#issuecomment-811385887
@jasonrhodes Observability - https://github.com/elastic/kibana/issues/96318 Done
@cjcenizal ES UI ✅ Done
@LeeDr Kibana testing ✅ Done - https://github.com/elastic/kibana/issues/95213
7.12 Kibana -> 7.11 ES Owner Area Status
@MadameSheema SIEM In Progress
@qhoxie Enterprise Search ✅ Done
@wwang500 ML ✅ Done - https://github.com/elastic/kibana/issues/94965#issuecomment-811385887
@jasonrhodes Observability - https://github.com/elastic/kibana/issues/96318 Done
@cjcenizal ES UI ✅ Done
@LeeDr Kibana testing - https://github.com/elastic/kibana/issues/95214 ✅ Done
sophiec20 commented 3 years ago

From the ML UI + CCS perspective, much of the standard functionality works over CCS. However if the remote cluster is a prior version which does not contain a certain feature (for example an agg), then we aim to fail early with a useful error message. Functionality that is supported on both versions, continues to work.

Adding context to the list above, for 7.12 -> 6.8:

maggieghamry commented 3 years ago

@stacey-gammon can you please elaborate on what this icon means? 🚧 7.12 Kibana -> 7.11 ES - does this mean it doesn't work?

If upgrading remote clusters before the cross-cluster search cluster, should the existing CCS Kibana continue to work with the remote clusters throughout the process? (especially with clusters that can take hours to upgrade)

stacey-gammon commented 3 years ago

@maggieghamry, I've adjusted the main issue. I meant to indicate that testing is still in progress for that configuration. Please let me know if it is still confusing.

If you upgrade Kibana last, then everything should work. This is specifically testing situations where the Kibana version is ahead of the remote cluster version.

mattkime commented 3 years ago

We don't have any automated testing for cross cluster support, it would be nice if we did. I've dealt with cross cluster issues with index pattern creation.

maggieghamry commented 3 years ago

Thank you!

cjcenizal commented 3 years ago

ES UI findings

Testing steps:

  1. Start local cluster ./bin/elasticsearch
  2. Start remote cluster ./bin/elasticsearch -E transport.port=9400
  3. On local cluster, connect to Remote Cluster with seed 127.0.0.1:9400
  4. Create index on remote cluster curl -X PUT http://elastic:changeme@localhost:9201/my-index --data '{"settings":{"number_of_shards":1,"soft_deletes.enabled":true}}' --header "Content-Type: application/json"
  5. Create follower index for my-index on local cluster
  6. Index a document on the remote index curl -X POST http://elastic:changeme@localhost:9201/my-index/_doc --data '{"a": "b"}' --header "Content-Type: application/json"

Success: In all cases (7.12 Kibana -> 6.8 ES, 7.11 Kibana -> 6.8 ES, 7.12 Kibana -> 7.11 ES) I'm able to create a remote cluster and a follower index, and though the resulting index has yellow health it replicates documents.

image

image

image

wwang500 commented 3 years ago

ML feature testing is done for both paths: 7.12 Kibana -> 7.11 ES: and 7.11 Kibana -> 6.8 ES:

7.12 Kibana -> 7.11 ES:

7.11 Kibana -> 6.8 ES

jasonrhodes commented 3 years ago

@stacey-gammon I'll have some things to report on this next week from the Logs perspective.

If discover: discover:searchFieldsFromSource toggle is off (the default), data from the remote cluster will not be returned.

Just for whatever it's worth, the data will all return but the data from the incompatible clusters will be sparse and missing many fields. This will be the case for anyone using the fields API.

jasonrhodes commented 3 years ago

Logs UI testing is now complete:

7.11.2 Kibana -> 6.8.15 ES

7.12.0 Kibana -> 6.8.15 ES

Same as 7.11.2 Kibana -> 6.8.15 ES

7.12.0 Kibana -> 7.11.2 ES

Logs UI works as usual (stream, alerts, and ML) for all data


Note: We expect that 7.12.1 and 7.13 to both work better with cross-cluster 6.8 ES, due to our finding and merging #94972, which will mean that the Log stream will begin to display all logs stored in compatible clusters, but log data from incompatible clusters (e.g. stored in the 6.8 cluster in this example scenario) will still not appear in the Log Stream UI.

Thank you to @weltenwort for completing this testing.

cc: @mukeshelastic @sgrodzicki

stacey-gammon commented 3 years ago

Aside from Fleet and Endpoint areas, SIEM has finished testing. There are issues with data not being displayed on the Hosts page and in Timeline, most likely due to the search fields option. In addition, there are issues with alerts generating data. Since 7.12 -> 7.11 has no issues, I also suspect this is due to the search fields option.

Aside from that EQL rules won't work, but this is expected.

More details:

qhoxie commented 3 years ago

I think we can call this good for Enterprise Search. The solution only accesses its own "system" indices and CCS is not supported for those, so it shouldn't factor in. Additionally, Enterprise Search is recent enough that there isn't support for ES 6.x.

damianpfister commented 1 year ago

@sophiec20 - regarding your original comment in https://github.com/elastic/kibana/issues/94965#issuecomment-805651213, has anything changed in what we support/don't support specifically around ML?

If customers wish to use CCS in ML, from the Kibana UI, would it be viable or are the missing features sufficient to make it effectively challenging to consider creating ML jobs/datastreams based on local+CCS data?

Essentially I am trying to get an idea of what works and what doesn't based on:

From the ML UI + CCS perspective, much of the standard functionality works over CCS