问题标签 [elastic-cloud]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elasticsearch - Elasticsearch - 一般架构和 Elastic Cloud 问题
背景
我们现在正在使用 Elasticsearch 设计一个新系统的架构,并且我们计划使用 Elastic Cloud,基于对比他们的服务与 AWS 的服务的评论,以及在 EC2 实例上的自托管。在我们设计系统时,我试图从我的团队 6 个月前部署在 Elastic Cloud 上的一个小型测试项目中学习。虽然我花了很多时间阅读Elasticsearch Docs、Elasticsearch: The Definitive Guide和Elastic Cloud's Docs,但这里有一些概念我仍然不明白。
我们的测试项目的问题
我们的测试项目使用默认的 5 个主分片和每个主分片 1 个副本分片。它是使用 Elastic Cloud 上的默认部署选项配置的,具有单个节点,当前具有 2GB 内存。因为只有一个节点,并且副本分片从未分配到与其主分片相同的节点(原因 2),所以没有一个副本被分配。此外,该项目使用基于时间的数据,并且每天为每个账户创建一个索引,从而每天产生大约 10 个索引(或 100 个分片),并且随着时间的推移,会产生众所周知的Kagillion Shards。这个系统本来只打算一次有几个月的数据,所以解决方案是在这个部署的内存用完时手动删除旧数据。
新系统
我们的新系统旨在拥有 5 年的基于时间的数据,预计其大小将增长到 250 GB。当前的实现对基于时间的数据使用单个索引,每个主分片有 6 个主分片和 1 个副本。这个决定是基于单个分片的最大目标是 30GB 的阅读而做出的。
问题
- 我们的旧系统有一个节点的索引太多(超过 100 个)和分片太多(超过 1000 个),而我们的新系统似乎设计的太少了(一个索引用于 5 年以上的数据)。根据基于时间的数据建议,似乎更好的索引策略是每周或每月创建一个索引?话虽如此,根据SO 上的另一个答案,每个节点的最佳索引数是 1,那么如果我们只在一个节点上运行,那么首先为基于时间的数据创建多个索引有什么用处?
- 如何将节点添加到 Elastic Cloud 中的 ES 部署?目前测试项目中的所有副本节点都未分配,因为部署只有一个节点。有一个滑块可让您轻松选择部署中每个节点的内存(介于 1GB 和 250B 之间),但是我认为无法添加多个节点,这令人困惑,因为它似乎是 Elasticsearch 的基本功能。
- 我们测试项目的节点已经重启了好几次,总是在节点上有很多旧数据的时候,因此内存压力很大。解决方案是删除旧数据(因为测试项目一次只需要几个月的数据),但似乎节点在重新启动时并没有丢失数据。为什么会这样?
- 我们的测试项目没有拍摄快照,这些快照应该每 30 分钟在 Elastic Cloud 上自动发生一次。我已经询问了他们对此的支持,但只是想知道是否有人知道可能导致此问题的原因以及如何解决?
logstash - 尝试将数据从 logstash 发送到 Elastic Cloud 时收到“pipeline_id 的空配置”错误
附加信息:
- Logstash 版本:6.3.1
- 操作系统:macOS 10.13.4
- 弹性搜索:弹性云上的 6.2.24
- Kibana:弹性云上的 6.2.24
问题:
你好,
我正在尝试将数据从 logstash 发送到 Elastic Cloud,但是当 logstash 运行时我收到以下错误:
但是,如果我尝试在 logststah.yml 中不定义 xpack 配置的情况下运行 logstash,这可以正常工作,并且 stdout {} 将收集到的数据发送到输出。
请查看我的配置文件:
日志存储.yml
管道.yml
艺术家个人资料视图
样本数据:
怎么了?
谢谢。
elasticsearch - Logstash Elastic Cloud 401 未经授权的错误
我的logstash.yml
样子:
前面有 2 个空格,最后没有空格,在""
这就是我所拥有的logstash.yml
,没有别的了,
我得到:
[2018-08-29T12:33:52,112][WARN ][logstash.outputs.elasticsearch] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"https://myserverurl:12345/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :error=>"Got response code '401' contacting Elasticsearch at URL 'https://myserverurl:12345/'"}
my_config_file_name.conf
看起来像:
我正在做的是bin/logstash
在 windows上点击cmd
,
它从我在 conf 文件的输入中配置的数据库加载数据,然后显示错误,我想在 Cloud 上索引我的数据MySQL
,elasticsearch
我试用了 14 天并创建了一个测试索引,用于学习目的,因为我稍后必须部署它。我的管道看起来像:
如果日志不包含敏感数据,我也可以提供。
基本上我不想在云上
同步(计划检查)我的MYSQL
数据,即ElasticSearch
AWS
elasticsearch - Elasticsearch 从快照恢复单个索引
在我做一些愚蠢的事情之前,我可以与其他 Elastic 用户仔细检查一下吗:
我的集群有 2000 多个索引。我只弄乱了其中一个,需要从快照中恢复它。如果我选择要恢复的那个索引,我只是想确保我不会最终得到一个只有那个索引而我的另一个 1999+ 丢失的集群。
我想相反的情况会发生,1999+ 将保持不变,只是会恢复,但我需要确定在我点击之前。
如果它对事物有任何影响,我正在使用 Elastic Cloud。
authentication - 在 Elastic Cloud 上保护 Elasticsearch 集群
考虑到我们有数十万用户并且我想在后端本身而不是在 Elasticsearch 上处理授权逻辑,确保 Elastic Cloud 上托管的 Elasticsearch 集群和后端之间的连接的最佳方法是什么?
是在本机领域创建一个具有所有读写访问权限的“系统”用户(看起来用户功能是为真正的最终用户设计的)还是使用其他类型的身份验证(但 SAML、PKI 或 Kerberos也是面向最终用户的)?还是使用其他安全手段,如基于 IP 的?
我习惯了 AWS 上的 Elasticsearch 服务,其中授权基于 IAM 角色,所以我在这里有点迷失了。
编辑:18 个月后,对此没有明确的答案,如果我不得不再做一次,我可能最终会使用 JWT。
http - 为什么 Elastic Cloud 提供专用端口 (9243) 而不是仅使用默认端口 (443)?
我刚刚设置了一个 Elastic Cloud 部署,想知道为什么我的端点有一个特定的端口 (9243) 而默认的 HTTPS 端口 443 也可以工作?
- 这种行为将来会改变吗?
- 是否会逐步淘汰其中一个端口?
- 我应该从哪一个开始?
在文档上,我只能找到这个:
端口 9200 用于 HTTP 连接,端口 9243 和 443 用于 HTTPS。通常建议使用 HTTPS,因为它更安全。
elasticsearch - Migrating from source
I want to migrate data from an old Elastic Search deployment to a new one with a newer version. I read that the only way to do so is by 'migrating from source'.
I can't really find any documentation on this. Do they really just mean uploading all the data again from the same source that you aquired it from before?
elasticsearch - 如何追踪缓慢的 Elasticsearch 查询?
我需要一些关于如何诊断慢速 Elasticseach 查询的建议。
设置
- ElasticCloud 中的 1 个节点集群(1 个主分片,0 个副本)。注意:ElasticCloud = 没有慢日志。(也是的,我知道我应该有更多节点..但这只是 DEV)
- 使用 NEST 库通过我的 Azure .NET Web App 与集群交互
行为
- 我的网络服务器的大多数响应时间是 50-80 毫秒
- ES 中的所有查询时间(例如已占用)均 < 5 毫秒。
- 我的 Web 服务器和 ElasticCloud 之间的网络延迟约为 15 毫秒
问题 - 有时,响应时间会在 100-200 毫秒之间跳跃,但花费的时间仍然是 1 毫秒。我也能够在本地复制这种行为(使用 ElasticSearch docker)。
这是我捕获的 Fiddler 的跟踪,这是我的应用程序对 Elasticsearch 的调用:
所以,上面说 Elasticsearch 集群需要 218 毫秒来处理请求。但是花费了1ms。
我怎样才能跟踪这个缓慢的请求?显然不是查询速度的问题(因为 take 是低的),所以它一定是集群中的东西。
有什么建议吗?
编辑
这是来自 Kibana 的一些数据,在我进行的 15 分钟负载测试期间:
所以..根据我的菜鸟分析,那里没有什么不好的。
- 搜索延迟/延迟很快(< 5ms)
- JVM堆似乎很好
- CPU没问题
- 没有过多的GC
这是我的性能监控工具的统计数据。您可以清楚地看到尖峰和缓慢的异常值:
不知道从这里可以去哪里?我应该寻找其他一些指标吗?
elasticsearch - CloudWatch 到 Elastic Cloud:缺少数据?
我目前正在使用 Elastic Cloud 来存储我的 AWS CloudWatch 日志。一切似乎都很好,因为我已经能够显示图表并正确查询 ElasticSearch。然而,我有一个奇怪的行为,我无法解释。
我正在从我的应用程序中记录一些事件。让我们说request_start
和request_end
。它们都在 Kibana 上可用。然而,我还在记录另一个事件,比如说request_middle
. 我可以在 CloudWatch 上看到它。
签入Discover
Kibana 的选项卡时,我没有看到此事件。我试过event:"request_middle"
查询,徒劳。如果我在同一个选项卡下显示所有事件的列表,我会得到一个完整列表,除了request_middle
.
我尝试直接查询 Elastic Search,以防万一。但也没有结果。
你们中的一些人是否已经遇到过这样的情况?如果是这样,你是如何解决的?
elasticsearch - Elasticseach - RestHighLevelClient 连接到弹性云
我无法使用以下方式连接到由 Elastic Cloud 托管的集群RestHighLevelClient
:
我可以使用连接org.elasticsearch.client.Client
但不能使用org.elasticsearch.client.RestHighLevelClient
.
这是我的代码:
这是完整的堆栈跟踪:
我正在使用 Elasticsearch 6.5.4。
构建.gradle
这是相关的依赖报告:
知道我做错了什么吗?提前致谢!