华为云用户手册

  • 场景描述 聚合增强在数据聚簇的情况下,利用向量化技术,批量处理数据,从而提升聚合性能,优化可观测性业务的聚合分析能力。 在大规模数据的集聚合分析场景下,耗时主要集中在对数据的分组聚合。 提升分组聚合能力依赖排序键和聚簇键。 排序键:数据按照排序键顺序存储。 聚簇键:是排序键的前缀子集,数据按照聚簇键聚簇在一起。 聚合增强常见的使用场景请参见表1。 表1 聚合增强的使用场景 场景 描述 相关文档 低基字段聚合 表示对具有较少不同值的列进行聚合,如对一个存储类别的列进行聚合。 低基字段分组聚合 高基字段聚合 表示对具有较多不同值的列进行聚合,如对一个存储时间的列进行按天的时间聚合。 高基字段直方图聚合 低基字段和高基字段混合聚合 表示对以上两种类型的聚合混合在一起,如先对低基字段做分组聚合,然后再对高基字段做直方图聚合。 低基字段分组聚合混合高基字段直方图聚合
  • 低基字段分组聚合 低基字段一般采用分组聚合,在排序的情况下具备较好的数据聚簇性,利于向量化批量处理数据。 例如,查询语句如下所示。 POST testindex/_search { "size": 0, "aggs": { "groupby_region": { "terms": { "field": "region" }, "aggs": { "groupby_host": { "terms": { "field": "host" }, "aggs": { "avg_cpu_usage": { "avg": { "field": "cpu_usage" } } } } } } } } 当需要对“region”和“host”这两个低基字段进行聚合增强,则需要对索引进行如下设置。 // 索引设置 "settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "region", "host", "other" ] }, "cluster" : { "field" : [ // 指定聚簇键 "region", "host" ] } } } 聚簇键必须是排序键的前缀子集。
  • 高基字段直方图聚合 高基字段一般采用直方图分组聚合,利于处理某个区间内的数据。 例如,查询语句如下所示。这条查询是对时间字段timestamp做直方图分组,然后求score的平均值。 POST testindex/_search?pretty { "size": 0, "aggs": { "avg_score": { "avg": { "field": "score" }, "aggs": { "groupbytime": { "date_histogram": { "field": "timestamp", "calendar_interval": "day" } } } } } } 当需要对典型的高基字段“timestamp”进行聚合增强时,则需要对索引进行如下设置。 // 索引设置 "settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "timestamp" ] } } }
  • 低基字段分组聚合混合高基字段直方图聚合 在低基字段和高基字段混合的场景下,一般先对低基字段做分组聚合,然后再对高基字段做直方图聚合。 假如,查询语句如下所示。 POST testindex/_search { "size": 0, "aggs": { "groupby_region": { "terms": { "field": "region" }, "aggs": { "groupby_host": { "terms": { "field": "host" }, "aggs": { "groupby_timestamp": { "date_histogram": { "field": "timestamp", "interval": "day" }, "aggs": { "avg_score": { "avg": { "field": "score" } } } } } } } } } } 当需要先对“region”低基字段进行分组,再对“host”低基字段进行分组,最后对“timestamp”高基字段进行直方图分组时,聚合增强的索引设置如下。 // 索引设置 "settings" : { "index" : { "search" : { "turbo" : { "enabled" : "true" // 开启优化 } }, "sort" : { // 指定排序键 "field" : [ "region", "host", "timestamp", "other" ] }, "cluster" : { "field" : [ // 指定聚簇键 "region", "host" ] } } } 聚簇键必须是排序键的前缀子集。 高基字段必须在排序键中,且高基字段必须在最后一个低基字段后面。
  • 查询并删除集群匹配模式 在从集群执行如下命令,查询已创建的匹配模式。 列表查询 GET auto_sync/pattern 指定名称查询 GET auto_sync/pattern/{PATTERN} 接口返回示例如下: { "patterns" : [ { "name" : "pattern1", "pattern" : { "remote_cluster" : "leader", "remote_index_patterns" : [ "log*" ], "local_index_pattern" : "{{remote_index}}-sync", "settings" : { } } } ] } 在从集群执行如下命令,指定模式名称删除模式。 DELETE auto_sync/pattern/{PATTERN}
  • 开启强制同步 开启强制同步 插件默认根据主集群索引的文档数是否发生变化来决定是否要同步元数据,当主集群只对文档进行更新且文档数不变时,插件不会同步该更新到从集群。支持修改配置,开启后,每个同步周期从集群都会强制同步主机群的索引元数据。 请求示例如下(开启强制同步): PUT _cluster/settings { "persistent": { "remote_sync.force_synchronize": true } }
  • 查询同步状态 获取自动同步状态 该接口可以获取匹配索引同步的状态。 请求示例如下: GET auto_sync/stats 接口返回示例如下: { "success_count" : 3, "failed_count" : 0, "failed_remote_cluster_state_requests_count" : 0, "last_fail_exception" : { }, "last_fail_remote_cluster_requests_exception" : { } } 获取指定索引的自动同步状态 请求示例如下: GET {index_name}/sync_stats 接口返回示例如下: { "indices" : { "data1_follower" : { "shards" : { "0" : [ { "primary" : false, "total_synced_times" : 27, "total_empty_times" : 25, "total_synced_files" : 4, "total_synced_bytes" : 3580, "total_paused_nanos" : 0, "total_paused_times" : 0, "current" : { "files_count" : 0, "finished_files_count" : 0, "bytes" : 0, "finished_bytes" : 0 } }, { "primary" : true, "total_synced_times" : 28, "total_empty_times" : 26, "total_synced_files" : 20, "total_synced_bytes" : 17547, "total_paused_nanos" : 0, "total_paused_times" : 0, "current" : { "files_count" : 0, "finished_files_count" : 0, "bytes" : 0, "finished_bytes" : 0 } } ] } } } }
  • 主从切换 当主集群出现故障时,支持通过主从切换保证业务正常进行。 判断主从集群的索引同步方式。查询从集群是否有索引同步的匹配模式,命令参考查询并删除集群匹配模式。 如果没有匹配模式,则表示主从集群是指定索引同步关系,则执行3。 如果有匹配模式,则表示主从集群是模式匹配索引同步关系,则执行2。 删除从集群的索引同步的匹配模式,命令参考查询并删除集群匹配模式。 从集群停止索引同步,将读写流量切换到从集群。如果主从集群是匹配索引同步关系,停止索引同步命令使用通配符匹配索引。 当主集群恢复后,通过索引同步将从集群数据向主集群同步,完成主从切换。
  • 索引同步 索引同步有2种方式:指定索引同步和匹配索引同步。 开启索引同步后,从集群的索引会变为只读状态,并且定时与主集群索引同步。同步周期默认30秒,如果需要修改请参见修改同步周期。 指定索引同步 在从集群执行如下命令,将主集群的单个索引同步到从集群,不修改索引配置。 PUT start_remote_sync { "remote_cluster": "leader1", "remote_index": "data1_leader", "local_index": "data1_follower" } 在从集群执行如下命令,将主集群的单个索引同步到从集群,并修改部分索引配置。 PUT start_remote_sync { "remote_cluster": "leader1", "remote_index": "data1_leader", "local_index": "data1_follower", "settings": { "number_of_replicas": 4 } } 以下索引配置不支持修改:“number_of_shards”、“version.created”、“uuid”、“creation_date”、“soft_deletes.enabled”。 表2 请求体参数说明 参数名 说明 remote_cluster 主集群配置任务的名称,在连接主从集群时设置,例如本文设置的是“leader1”。 remote_index 主集群待同步索引名称。 local_index 同步到从集群的索引名称。 settings 同步索引的索引设置。 匹配索引同步 在从集群执行如下命令,创建匹配模式同步索引,将主集群中匹配的索引同步到从集群。 PUT auto_sync/pattern/${PATTERN} { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}-sync", "apply_exist_index": true } 在从集群执行如下命令,创建匹配模式同步索引,将主集群中匹配的索引同步到从集群,并修改部分索引配置。 PUT auto_sync/pattern/${PATTERN} { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}-sync", "apply_exist_index": true, "settings": { "number_of_replicas": 4 } } 以下索引配置不支持修改:“number_of_shards”、“version.created”、“uuid”、“creation_date”、“soft_deletes.enabled”。 表3 请求体参数说明 参数名 说明 PATTERN 同步集群配置的pattern名字,用于区分多个不同的匹配模式。 remote_cluster 主集群配置任务的名称,通过连接主从集群设置,具体值如上文的“leader1”。 remote_index_patterns 主集群待同步索引模式,支持通配符“*”。 local_index_pattern 同步到从集群的索引模式,支持模板替换。例如取值为“{{remote_index}}-sync”时,待同步索引为“log1”,同步过来的索引为“log1-sync”。 apply_exist_index 是否同步主集群上已存在的索引,默认为“true”。 settings 同步索引的索引设置。
  • 场景描述 读写分离支持将写入主集群(Leader)的数据自动同步到从集群(Follower),实现主集群承担写入任务,从集群承担查询任务。读写分离可以将读写压力分开,提高查询的性能,还能支持在主集群无法提供服务时降级,使用从集群提供写入和查询服务。 图1 读写分离特性的两种使用场景 场景一(图左):主集群写入,从集群查询,分离读写压力。 场景二(图右):主集群故障时,从集群升级,正常提供服务,避免业务中断。
  • 连接主从集群 登录 云搜索服务 管理控制台。 在“集群管理”页面选择从集群,单击操作列“Kibana”,登录Kibana页面。 单击左侧导航栏的“Dev Tools”进入操作页面 执行如下命令,在从集群配置主集群的信息。 PUT /_cluster/settings { "persistent" : { "cluster" : { "remote.rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] , "username": "elastic", "password": "*****" } } } } } 表1 请求体参数说明 参数名 说明 leader1 主集群配置任务的名称,由用户自定义,在后续读写分离配置时会用到该名称。 seeds 主集群的访问地址。当集群开启HTTPS访问时,URI schema需要对应使用https。 username 主集群的用户名,仅主集群是安全集群时才需要配置。 password 主集群的密码,仅主集群是安全集群时才需要配置。 返回示例: { "acknowledged" : true, // 是否成功 "persistent" : { "cluster" : { "remote" : { "rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] } } } } }, "transient" : { } } 配置完成后,在从集群执行如下命令确认从集群和主集群的连接状况。 GET _remote/rest/info 返回示例: { "leader1" : { "connected" : true //表示连接正常 } }
  • 管理配置文件 在配置文件列表,支持对创建的配置文件进行编辑、添加到自定义模板、删除等操作。 表3 管理配置文件 功能 使用限制 操作指导 修改配置文件 当配置文件有执行中的管道任务时,不支持修改。 在配置文件列表,单击操作列的“编辑”进入编辑配置文件页面,可以修改“配置文件内容”、“隐藏内容列表”及运行参数。 将配置文件设置为模板 无 在配置文件列表,单击操作列的“添加到自定义模板”进入添加到自定义模板页面,设置模板名称、描述和配置文件内容,单击“确定”添加到自定义模板列表中,方便下次创建配置文件时直接使用。 导出配置文件 无 在配置文件列表,单击右上角的,可以批量导出配置文件到本地,便于本地备份。 删除配置文件 当配置文件有执行中的管道任务时,不支持删除。 在配置文件列表,单击操作列的“删除”,在弹窗中单击“确定”删除配置文件。
  • 场景描述 CSS 服务支持创建多种安全模式的集群,不同集群的差异请参见表1。 表1 集群类型介绍 集群类型 集群描述 适用场景 非安全集群 非安全模式的集群 非安全模式的集群无需安全认证即可访问,采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 适合内网业务,用于测试场景。 优点:简单,接入集群容易。 缺点:安全性差,任何人都可以访问集群。 安全集群 安全模式+HTTP协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTP协议明文传输数据。建议确认访问环境的安全性,勿将访问接口暴露到公网环境上。 可以实现用户权限隔离,适用于对集群性能敏感的场景。 优点:访问集群需要安全认证,提升了集群安全性。通过HTTP协议访问集群又能保留集群的高性能。 缺点:无法公网访问集群。 安全模式+HTTPS协议的集群 安全模式的集群需要通过安全认证才能访问,且支持对集群进行授权、加密等功能。采用HTTPS协议进行通信加密,使数据更安全。 有非常高的安全要求,且需要公网访问集群的场景。 优点:访问集群需要安全认证,提升了集群安全性,且HTTPS协议的通讯加密可以实现集群公网访问功能。 缺点:通过HTTPS协议访问集群,集群的读取性能相对HTTP协议来说,会下降20%左右。 同时, CS S服务支持多种安全模式的更改场景,请参见表2。 表2 安全模式的更改场景 场景 相关文档 “非安全模式的集群”切换为“安全模式+HTTP协议的集群” 非安全模式切换为安全模式 “非安全模式的集群”切换为“安全模式+HTTPS协议的集群” “安全模式+HTTP协议的集群”切换为“非安全模式的集群” 安全模式切换为非安全模式 “安全模式+HTTPS协议的集群”切换为“非安全模式的集群” “安全模式+HTTP协议的集群”切换为“安全模式+HTTPS协议的集群” 切换安全模式下的协议 “安全模式+HTTPS协议的集群”切换为“安全模式+HTTP协议的集群”
  • 约束限制 一次只能选择一个节点进行替换。 节点替换过程会按照原节点的ID、IP地址、规格、AZ等信息重建节点。 节点替换过程中不会保留手动操作。例如被替换的节点手动加过回程路由,那么节点替换完成后,需要重新添加回程路由。 当替换的是数据节点或冷数据节点时,需要确认集群或节点是否满足以下条件。 替换数据节点或冷数据节点的过程中,会先将被替换节点的数据迁移到其他数据节点,因此集群中每个索引的副本数和主分片数之和的最大值要小于集群的数据节点数量和冷数据节点数量之和。替换过程耗时跟数据迁移到其他节点的耗时强相关。 版本号在7.6.2以前的集群,不能有close的索引,否则不支持替换数据节点或冷数据节点。 被替换的数据节点或冷数据节点所在的AZ需要有两个及以上的数据节点或冷数据节点。 当替换的数据节点或冷数据节点所在集群不存在Master节点时,则集群中可用的数据节点数量和冷数据节点数量之和要大于等于3。 当替换的是Master节点或Client节点时,则不受以上四条约束。 当替换的是故障节点时,不管什么节点类型都不受以上四条约束。因为故障节点不包含在“_cat/nodes”中。
  • 推荐配置的监控指标 集群的日常监控,推荐重点配置如下监控指标:磁盘使用率、集群健康状态。 监控集群的cpu、jvm使用情况,推荐重点配置如下监控指标:平均JVM堆使用率、最大JVM堆使用率、平均CPU使用率、最大CPU利用率。 监控集群的写入、查询延迟和吞吐量情况,推荐重点配置如下监控指标:平均索引延迟、平均索引速率、平均查询延迟、平均查询速率。 监控集群的写入、查询的排队队列和拒绝情况,推荐重点配置如下监控指标:Write队列中总排队任务数、Search队列中总排队任务数、Write队列中总的已拒绝任务数、Search队列中总的已拒绝任务数。
  • 配置监控对象 参考 云监控服务 CES的创建监控面板,创建一个监控面板。如果已有监控面板,可以跳过该步骤。 参考 云监控 服务 CES 的添加监控视图,添加CSS监控视图。 其中,“资源类型”和“维度”参数的填写说明请参见表2,其他参数可以根据CES服务的参数说明自定义。 表2 监控视图的配置说明 参数 参数解释 配置说明 资源类型 添加监控视图的服务名称。 选择 云搜索 服务。 维度 指定监控的维度名称。 CSS支持2个维度,根据实际需要选择维度。 CSS集群:以集群维度监控。 CSS集群 - 云服务节点:以集群中的某个节点维度监控。
  • 约束限制 缩容是通过下线节点减少节点数量,为了降低业务影响,建议在业务低峰期进行缩容操作。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 关于跨AZ的集群,在不同AZ中同类型节点个数的差值要小于等于1。 当集群没有Master节点时,每次缩容的数据节点和冷数据节点个数之和要小于缩容前数据节点和冷数据节点个数之和的一半,缩容后的数据节点和冷数据节点个数之和要大于索引的最大副本个数。 当集群有Master节点时,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。 当集群没有Master节点时,数据节点数量和冷数据节点数量之和大于等于3时才支持缩容。当集群有Master节点时,数据节点数量大于等于2时才支持缩容。当集群不满足缩容条件却想减少集群节点时,建议新建集群,备份与恢复Elasticsearch集群数据迁移集群数据。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,缩容节点数量时请参考表2。 表2 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 说明: ess:数据节点,即创建集群时必配的节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点。 ess-client:Client节点。 ess-cold:冷数据节点。
  • 约束限制 集群的节点存储容量只支持扩容不支持缩容,请基于业务量合理选择节点存储容量。 包周期集群不支持同时扩容“节点数量”和“节点存储容量”。 在集群数据量比较大的情况下,变更节点规格耗时比较长,建议在业务低峰期更改节点规格,利于更快完成规格更改。 变更节点规格也支持将大规格更改为小规格,但是此变更会降低集群的处理性能,进而影响业务能力,请谨慎使用。 当集群包含多种节点类型时,一次只支持变更一种类型的节点规格,且变更完成后只生效所选类型的节点规格。 变更规格过程中,Kibana不可用。 变更规格过程中,会依次对节点进行关机,完成更改后再依次开机,是一个滚动的变更过程。在这过程中,Kibana不可用。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,扩容节点数量时请参考表2。 表2 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 说明: ess:数据节点,即创建集群时必配的节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点。 ess-client:Client节点。 ess-cold:冷数据节点。
  • 场景描述 CSS服务支持多种扩容场景,如表1所示。 表1 扩容场景 场景 描述 相关文档 增加节点数量和容量 只支持基于节点类型扩容集群的“节点数量”和“节点存储容量”。适用于如下场景: 当集群数据节点(ess)的写入与查询压力大、响应时间过长时,可以通过扩容数据节点的“节点存储容量”保证数据的持久性。如果因数据量过大或操作不当导致数据节点状态异常时,可以扩容“节点数量”保证集群的可用性。 冷数据节点(ess-cold)主要用于分担数据节点(ess)的压力,当发现冷数据有丢失的风险时,可以扩容冷数据节点的“节点存储容量”保证冷数据的持久性,同时也支持扩容节点个数保证集群的可用性。 扩容节点数量和节点存储容量 升级节点规格 只支持基于节点类型变更集群的“节点规格”。一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点(ess-master)的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点(ess-client)的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点(ess)的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点(ess-cold)的“节点规格”提高对数据查询的效率。 变更节点规格 增加节点类型 当集群本身没有Master节点(ess-master)和Client节点(ess-client)时,随着数据面业务增长,需要动态调整集群形态时,可以选择增加“Master节点”或“Client节点”。 添加Master或Client节点
  • 开启访问日志记录到文件 开启访问日志记录到文件后,客户端访问集群节点,会记录为{集群名_access_log.log}文件,通过日志备份功能可以在OBS详细查看访问日志。 该功能一般用于定位问题,问题解决后,建议关闭此开关。 执行如下命令,开启访问日志记录到文件。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.file.enabled": true } } 表12 访问日志记录到文件的配置项说明 参数 类型 说明 flowcontrol.log.file.enabled Boolean 是否将每个请求的日志详情记录到后台日志文件。 取值范围: true false(默认值) 执行如下命令,关闭访问日志记录到文件。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.file.enabled": false } }
  • 查看流量控制信息 查看所有节点的流量控制情况 GET /_nodes/stats/filter 查看某个具体节点的流量控制情况 GET /_nodes/{nodeId}/stats/filter “{nodeId}”为需要查看流量控制的节点ID。 响应示例: 返回值以Node级别分开,http记录并发和新建连接数据统计,memory记录内存流控统计,ip_address记录最近最多访问的客户端IP,url_sample记录采样的最近最多请求URL。cpu记录CPU流控统计。 { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-flowcontroller", "nodes" : { "ElBRNCMbTj6L1C-Wke-Dnw" : { "name" : "css-flowcontroller-ess-esn-1-1", "host" : "10.0.0.133", "timestamp" : 1613979513747, "flow_control" : { "transport" : { "concurrent_req" : 0, "rejected_concurrent" : 0, "rejected_new" : 0, "rejected_deny" : 0 }, "http" : { "concurrent_req" : 0, "rejected_concurrent" : 0, "rejected_new" : 0, "rejected_deny" : 0 }, "memory" : { "memory_allow" : 41, "memory_rejected" : 0 }, "cpu": { "rejected_cpu" : 0 } "ip_address" : [ { "ip" : "/10.0.0.198", "count" : 453 }, { "ip" : "/198.19.49.1", "count" : 42 } ], "url_sample" : [ { "url" : "/*/_search?pretty=true", "method" : "GET", "remote_address" : "/10.0.0.198:16763", "count" : 1 } ] } } } 表6 响应参数说明 参数名 说明 concurrent_req 节点实际的TCP连接数据信息, 没有开启流控这个配置也会记录,参考GET /_nodes/stats/http接口current_open值, 但是会比这个值小,这里忽略了白名单IP和内部节点IP。 rejected_concurrent HTTP流控开启生效,关闭后不清零,开启流控期间拒绝的并发连接数。 rejected_new HTTP流控开启生效,关闭后不清零,开启流控期间拒绝的新建连接数。 rejected_deny HTTP流控开启生效,关闭后不清零,配置黑名单拒绝的请求数。 memory_allow 内存流控开启生效,关闭后不清零,内存流控允许的请求数,触发内存流控后允许的请求数量,allow_path白名单中通过请求不会被记录,如果allow_path配置为“**”,所有请求都不会被记录。 memory_rejected 内存流控开启生效,关闭后不清零,内存流控拒绝的请求数,触发内存流控后拒绝的请求数量,allow_path白名单中通过请求不会被记录,如果allow_path配置为“**”,所有请求都不会被记录。 rejected_cpu CPU流控开启生效,关闭后不清零,超过CPU流控阈值拒绝的请求数。 ip_address IP地址统计,基于配置值统计节点访问的IP地址和请求数量。参数说明请参见表7表7。 url_sample 请求Path采样统计,基于配置时间和采样间隔统计相同请求URL数量。参数说明请参见表8。 表7 ip_address 参数名 说明 ip 访问节点的源IP地址。 method 对应IP地址的访问次数统计。 表8 url_sample 参数名 说明 url 请求的采样统计,记录访问节点的请求URL。 method 对应请求Path的方法。 remote_address 请求对应的源IP地址和端口。 count 对应请求Path的采样统计次数。
  • 开启并查看访问日志 执行如下命令,开启访问日志。 开启集群所有节点的访问日志 PUT /_access_log?duration_limit=30s&capacity_limit=1mb 开启集群中某一节点的访问日志 PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb “{nodeId}”为节点ID。 表9 访问日志的配置项说明 配置项 类型 说明 duration_limit String 访问日志记录时间。 取值范围:10~120 单位:s 默认值:30 capacity_limit String 访问日志记录大小。统计开启访问日志后记录的请求大小,当统计的大小大于该配置值,访问日志记录终止。 取值范围:1~5 单位:MB 默认值:1 “duration_limit”和“capacity_limit”只要有一个参数达到阈值,访问日志记录就会停止。 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,查看访问日志。 查看集群所有节点的访问日志API GET /_access_log 查看集群中某一节点的访问日志API GET /_access_log/{nodeId} “{nodeId}”为节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-flowcontroller", "nodes" : { "8x-ZHu-wTemBQwpcGivFKg" : { "name" : "css-flowcontroller-ess-esn-1-1", "host" : "10.0.0.98", "count" : 2, "access" : [ { "time" : "2021-02-23 02:09:50", "remote_address" : "/10.0.0.98:28191", "url" : "/_access/security/log?pretty", "method" : "GET", "content" : "" }, { "time" : "2021-02-23 02:09:52", "remote_address" : "/10.0.0.98:28193", "url" : "/_access/security/log?pretty", "method" : "GET", "content" : "" } ] } } } 表10 响应参数说明 参数名 说明 name 节点名称。 host 节点对应的IP地址。 count 统计周期内,访问节点的请求数量。 access 统计周期内,访问节点的请求详情。参数说明请参见表11。 表11 access 参数名 说明 time 记录请求时间。 remote_address 请求对应的源IP地址和端口。 url 请求的原始URL method 对应请求Path的方法。 content 对应请求的内容。 执行命令删除访问日志。 删除集群所有节点的访问日志API DELETE /_access_log 删除集群中某一节点的访问日志API DELETE /_access_log/{nodeId} “{nodeId}”为节点ID。
  • 开启一键断流 执行如下命令,开启一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": true } } 执行如下命令,关闭一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": false } }
  • 约束限制 2023年02月及之后创建的Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制2.0版本,之前创建Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制1.0版本。 开启流量控制功能会消耗部分节点性能。 开启流量控制会直接拒绝超过阈值的用户请求。 开启内存流控会消耗部分请求性能,开启内存流控会导致Kibana的部分search请求失败。 开启访问日志会影响集群性能。 内存流控和CPU流控都是基于请求Path的流控,Path长度和个数不应该配置过多,否则影响集群性能。
  • 开启请求采样统计 执行如下命令,开启请求采样统计。 PUT /_cluster/settings { "persistent": { "flowcontrol.statics.enabled": true, "flowcontrol.statics.threshold": 100, "flowcontrol.statics.sample_frequency": 50 } } 表5 请求采样统计的配置项说明 配置项 类型 说明 flowcontrol.statics.enabled Boolean 请求采样统计开关。开启请求采样统计对节点性能会有影响。 取值范围:true、false 默认值:false flowcontrol.statics.threshold Integer 统计最近时间访问的请求数量。配置为100,表示会统计出最近访问最多的100个IP地址和基于采样统计的访问最多的100个URL。 最小值:10 最大值:1000 默认值:100 说明: IP统计和URL采样统计基于访问时间缓存策略,节点会记录最近访问的IP和请求URL,如果缓存空间达到设置的阈值(即“flowcontrol.statics.threshold”配置值),访问时间距离现在最久的记录将被清除掉。 URL采样统计当前基于URL hash值确认访问Path的一致性。 flowcontrol.statics.sample_frequency Integer Path采样频率。配置为100,表示每100个请求采样统计一次。 最小值:50 默认值:100 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,关闭请求采样统计。 PUT /_cluster/settings { "persistent": { "flowcontrol.statics.enabled": false } }
  • 场景描述 流量控制1.0提供节点级别的流量控制功能,可提供单个节点基于黑白名单的访问限制、HTTP并发连接数限制、HTTP最大连接数限制、基于请求Path的堆内存最大使用量流控能力、基于CPU最大占用率流控能力,一键断流能力,同时也提供节点访问IP统计和URI的采样统计能力。开启流控功能会使请求在入口处直接阻塞,可以缓解节点高并发场景下的集群压力,降低P99时延,减少节点不可用的风险。 表1 流量控制策略 策略 描述 相关文档 HTTP/HTTPS流控 HTTP/HTTPS黑白名单设置IP和子网控制客户端IP访问,如果节点IP在黑名单中,则该客户端的连接将直接中断,节点不会处理任何请求。白名单规则优先于黑名单规则,如果客户端IP在黑白名单中都出现,客户端请求将不会被拒绝。 HTTP/HTTPS并发连接数流控通过限制节点每秒中的HTTP连接总数来限制节点流量。 HTTP/HTTPS新建连接数流控通过限制节点新建的连接数来限制节点流量。 开启HTTP/HTTPS节点流控 内存流控 基于节点堆内存使用量限制请求Path,支持设置内存流控白名单、全局内存使用阈值和基于单个Path设置堆内存使用阈值。全局内存流控阈值优先于单个Path内存阈值,白名单配置Path不参与内存流控。 开启内存流控 Path全局免流控白名单 可以根据客户需要,设置Path白名单全局免流控,当用户需要自定义插件时,可适当配置。 添加Path全局免流控白名单 请求采样统计 可以记录客户端IP的访问数量和采样用户的请求Path,用户可以基于统计值识别客户端IP的访问流量和分析哪些请求Path访问量大。 开启请求采样统计 一键断流 可以切断节点的所有访问流量,不包括kibana访问和elasticsearch monitor类接口。 开启一键断流 流量控制 提供单独的流量统计查看接口,记录触发流控的数量,用户可以基于统计值评估流控配置阈值和衡量集群压力。 查看流量控制信息 访问日志 可以记录一段时间内节点接收的HTTP/HTTPS请求URL和Body,用户可以基于访问日志信息分析当前的流量压力。 开启并查看访问日志 访问日志记录 客户端访问集群节点,会记录为{集群名_access_log.log}访问日志文件,通过日志备份功能可以在OBS详细查看访问日志。 开启访问日志记录到文件 CPU流控 基于节点配置的最大CPU占用率来限制节点访问流量。 开启CPU流控
  • kibana-monitor配置文件 kibana-monitor配置文件内容如下,建议保存为“monitoring-kibana.ndjson”文件。 {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] segment memory in bytes of index for top10","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] segment memory in bytes of index for top10\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"split_color_mode\":\"kibana\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"index_stats.total.segments.memory_in_bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"bytes\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"segments memory in bytes \",\"type\":\"timeseries\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false}}"},"id":"3ae5d820-6628-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwNiwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] segment count of index for top10","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"filter\":{\"language\":\"kuery\",\"query\":\"\"},\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"isModelInvalid\":false,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"rgba(231,102,76,1)\",\"fill\":0.5,\"formatter\":\"number\",\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"label\":\"segment count of index for top10\",\"line_width\":1,\"metrics\":[{\"field\":\"index_stats.total.segments.count\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\"}],\"point_size\":1,\"separate_axis\":0,\"split_color_mode\":\"kibana\",\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"timestamp\",\"tooltip_mode\":\"show_all\",\"type\":\"timeseries\"},\"title\":\"[monitoring] segment count of index for top10\",\"type\":\"metrics\"}"},"id":"45d571c0-6626-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwNywyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] markdown","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"openLinksInNewTab\":false,\"markdown\":\"### Index Monitoring \\nThis dashboard contains default table for you to play with. You can view it, search it, and interact with the visualizations.\"},\"aggs\":[]}"},"id":"b2811c70-a5f1-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwOCwyXQ=="} {"attributes":{"description":"number of document being indexing for primary and replica shards","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] Indexing Rate (/s)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] Indexing Rate (/s)\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"rgba(0,32,188,1)\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"indices_stats._all.total.indexing.index_total\"},{\"unit\":\"1s\",\"id\":\"fed72db0-a5f8-11ec-aa10-992297d21a2e\",\"type\":\"derivative\",\"field\":\"61ca57f2-469d-11e7-af02-69e470af7417\"},{\"unit\":\"\",\"id\":\"14b66420-a5f9-11ec-aa10-992297d21a2e\",\"type\":\"positive_only\",\"field\":\"fed72db0-a5f8-11ec-aa10-992297d21a2e\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"Indexing Rate (/s)\",\"type\":\"timeseries\",\"split_color_mode\":\"rainbow\",\"hidden\":false}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"legend_position\":\"bottom\"},\"aggs\":[]}"},"id":"de4f8ab0-a5f8-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIwOSwyXQ=="} {"attributes":{"description":"number of search request being executed in primary and replica shards","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] Search Rate (/s)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] Search Rate (/s)\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"rgba(0,33,224,1)\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"indices_stats._all.total.search.query_total\"},{\"unit\":\"1s\",\"id\":\"b1093ac0-a5f7-11ec-aa10-992297d21a2e\",\"type\":\"derivative\",\"field\":\"61ca57f2-469d-11e7-af02-69e470af7417\"},{\"unit\":\"\",\"id\":\"c17db930-a5f7-11ec-aa10-992297d21a2e\",\"type\":\"positive_only\",\"field\":\"b1093ac0-a5f7-11ec-aa10-992297d21a2e\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"rainbow\",\"label\":\"Search Rate (/s)\",\"type\":\"timeseries\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"}}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"legend_position\":\"bottom\"},\"aggs\":[]}"},"id":"811df7a0-a5f8-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxMCwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] total docs count","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] total docs count\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"rgba(218,139,69,1)\",\"split_mode\":\"everything\",\"split_color_mode\":\"kibana\",\"metrics\":[{\"unit\":\"\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"indices_stats._all.total.docs.count\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"total_docs_count\",\"type\":\"timeseries\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"legend_position\":\"bottom\"}}"},"id":"eea89780-664b-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxMSwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] total docs delete","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] total docs delete\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"rgba(214,191,87,1)\",\"split_mode\":\"everything\",\"split_color_mode\":\"kibana\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"indices_stats._all.total.docs.deleted\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"totol_docs_delete\",\"type\":\"timeseries\",\"hidden\":false}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"drop_last_bucket\":1,\"legend_position\":\"bottom\"}}"},"id":"cfbb4e20-664c-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxMiwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] total store size in bytes","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] total store size in bytes\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"split_color_mode\":\"kibana\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"indices_stats._all.total.store.size_in_bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"bytes\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"total store size in bytes\",\"type\":\"timeseries\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"tooltip_mode\":\"show_all\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"legend_position\":\"bottom\",\"background_color_rules\":[{\"id\":\"7712e550-664f-11ed-8b5d-8db37e5b4cc4\"}],\"bar_color_rules\":[{\"id\":\"77680a30-664f-11ed-8b5d-8db37e5b4cc4\"}]}}"},"id":"c7f72ae0-664e-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxMywyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] indexing rate of index for top10(/s)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] indexing rate of index for top10(/s)\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"index_stats.total.indexing.index_total\"},{\"unit\":\"1s\",\"id\":\"541ed8f0-a5ee-11ec-aa10-992297d21a2e\",\"type\":\"derivative\",\"field\":\"61ca57f2-469d-11e7-af02-69e470af7417\"},{\"unit\":\"\",\"id\":\"67ec1f50-a5ee-11ec-aa10-992297d21a2e\",\"type\":\"positive_only\",\"field\":\"541ed8f0-a5ee-11ec-aa10-992297d21a2e\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"indexing_rate\",\"type\":\"timeseries\",\"split_filters\":[{\"color\":\"#68BC00\",\"id\":\"81004200-a5ee-11ec-aa10-992297d21a2e\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"}}],\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"terms_size\":\"10\",\"terms_direction\":\"desc\",\"split_color_mode\":\"rainbow\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"tooltip_mode\":\"show_all\"}}"},"id":"943b3e00-a5ef-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxNCwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] search rate of index for top10(/s)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] search rate of index for top10(/s)\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"rgba(99,157,12,1)\",\"split_mode\":\"terms\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\",\"field\":\"index_stats.total.search.query_total\"},{\"unit\":\"1s\",\"id\":\"fdfdfad0-a5ef-11ec-aa10-992297d21a2e\",\"type\":\"derivative\",\"field\":\"61ca57f2-469d-11e7-af02-69e470af7417\"},{\"unit\":\"\",\"id\":\"0aaa26a0-a5f0-11ec-aa10-992297d21a2e\",\"type\":\"positive_only\",\"field\":\"fdfdfad0-a5ef-11ec-aa10-992297d21a2e\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"search rate\",\"type\":\"timeseries\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"split_color_mode\":\"rainbow\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"tooltip_mode\":\"show_all\"}}"},"id":"ab503550-a5ef-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxNSwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] indices store_size for top10","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] indices store_size for top10\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"38474c50-a5f5-11ec-aa10-992297d21a2e\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"metrics\":[{\"id\":\"38474c51-a5f5-11ec-aa10-992297d21a2e\",\"type\":\"max\",\"field\":\"index_stats.total.store.size_in_bytes\"}],\"separate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"bytes\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"label\":\"store_size for index\",\"type\":\"timeseries\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"38474c51-a5f5-11ec-aa10-992297d21a2e\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"split_color_mode\":\"rainbow\"}],\"time_field\":\"timestamp\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"axis_scale\":\"normal\",\"show_legend\":1,\"show_grid\":1,\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"isModelInvalid\":false,\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"bar_color_rules\":[{\"id\":\"7d9d3cb0-a5f5-11ec-aa10-992297d21a2e\"}],\"tooltip_mode\":\"show_all\"}}"},"id":"c78119a0-a5f5-11ec-9a68-ada9d754c566","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxNiwyXQ=="} {"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{}"},"title":"[monitoring] search query time in millis of index for top10(ms)","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"[monitoring] search query time in millis of index for top10(ms)\",\"type\":\"metrics\",\"aggs\":[],\"params\":{\"axis_formatter\":\"number\",\"axis_max\":\"\",\"axis_min\":\"\",\"axis_position\":\"left\",\"axis_scale\":\"normal\",\"default_index_pattern\":\"monitoring-eye-css-*\",\"default_timefield\":\"timestamp\",\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"index_pattern\":\"monitoring-eye-css-*\",\"interval\":\"\",\"isModelInvalid\":false,\"series\":[{\"axis_position\":\"right\",\"chart_type\":\"line\",\"color\":\"#68BC00\",\"fill\":0.5,\"formatter\":\"number\",\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"label\":\"index_query_time_in_millis\",\"line_width\":1,\"metrics\":[{\"field\":\"index_stats.total.search.query_time_in_millis\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"max\"},{\"unit\":\"1s\",\"id\":\"42c92b10-6645-11ed-925a-6de90846447d\",\"type\":\"derivative\",\"field\":\"61ca57f2-469d-11e7-af02-69e470af7417\"}],\"point_size\":1,\"separate_axis\":0,\"split_color_mode\":\"kibana\",\"split_mode\":\"terms\",\"stacked\":\"none\",\"terms_field\":\"index_stats.index\",\"terms_order_by\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\"}],\"show_grid\":1,\"show_legend\":1,\"time_field\":\"timestamp\",\"tooltip_mode\":\"show_all\",\"type\":\"timeseries\",\"background_color\":null,\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"legend_position\":\"right\"}}"},"id":"c8109100-6627-11ed-8cd7-973626cf6f70","references":[],"type":"visualization","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxNywyXQ=="} {"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":5,\"i\":\"971ed6c6-81b9-491b-9f08-e3ae9c382abd\"},\"panelIndex\":\"971ed6c6-81b9-491b-9f08-e3ae9c382abd\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"gridData\":{\"x\":0,\"y\":5,\"w\":24,\"h\":15,\"i\":\"5a6982e7-0c6c-4733-8a2d-e4c57cdf7397\"},\"panelIndex\":\"5a6982e7-0c6c-4733-8a2d-e4c57cdf7397\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"gridData\":{\"x\":24,\"y\":5,\"w\":24,\"h\":15,\"i\":\"662476f4-739c-4a05-858c-2ee8230cf410\"},\"panelIndex\":\"662476f4-739c-4a05-858c-2ee8230cf410\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"gridData\":{\"x\":0,\"y\":20,\"w\":16,\"h\":15,\"i\":\"d89c38e2-33f3-4592-b503-20460a6a7a57\"},\"panelIndex\":\"d89c38e2-33f3-4592-b503-20460a6a7a57\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"gridData\":{\"x\":16,\"y\":20,\"w\":16,\"h\":15,\"i\":\"1f693b49-79fa-4807-94e8-0c12f51e54f8\"},\"panelIndex\":\"1f693b49-79fa-4807-94e8-0c12f51e54f8\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"gridData\":{\"x\":32,\"y\":20,\"w\":16,\"h\":15,\"i\":\"616b143d-74e9-4dac-98ba-5849536f0fba\"},\"panelIndex\":\"616b143d-74e9-4dac-98ba-5849536f0fba\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"},{\"gridData\":{\"x\":0,\"y\":35,\"w\":24,\"h\":11,\"i\":\"cfa82f27-1b8d-49ba-a7b9-d8809d3b258c\"},\"panelIndex\":\"cfa82f27-1b8d-49ba-a7b9-d8809d3b258c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_6\"},{\"gridData\":{\"x\":24,\"y\":35,\"w\":24,\"h\":11,\"i\":\"135d13eb-aab6-43ca-9029-7d26e91d90e3\"},\"panelIndex\":\"135d13eb-aab6-43ca-9029-7d26e91d90e3\",\"embeddableConfig\":{},\"panelRefName\":\"panel_7\"},{\"gridData\":{\"x\":0,\"y\":46,\"w\":24,\"h\":11,\"i\":\"28a77de1-9110-49e8-b273-724f880b1653\"},\"panelIndex\":\"28a77de1-9110-49e8-b273-724f880b1653\",\"embeddableConfig\":{},\"panelRefName\":\"panel_8\"},{\"gridData\":{\"x\":24,\"y\":46,\"w\":24,\"h\":11,\"i\":\"80ece867-cf23-4935-bfbc-430afa51bcca\"},\"panelIndex\":\"80ece867-cf23-4935-bfbc-430afa51bcca\",\"embeddableConfig\":{},\"panelRefName\":\"panel_9\"},{\"gridData\":{\"x\":0,\"y\":57,\"w\":24,\"h\":11,\"i\":\"2ba970aa-c9c4-491b-bdd3-c1b1ee9bc8d3\"},\"panelIndex\":\"2ba970aa-c9c4-491b-bdd3-c1b1ee9bc8d3\",\"embeddableConfig\":{},\"panelRefName\":\"panel_10\"},{\"gridData\":{\"x\":24,\"y\":57,\"w\":24,\"h\":11,\"i\":\"f2e1b6ab-ddf7-492e-aaca-9460f11aa4aa\"},\"panelIndex\":\"f2e1b6ab-ddf7-492e-aaca-9460f11aa4aa\",\"embeddableConfig\":{},\"panelRefName\":\"panel_11\"},{\"gridData\":{\"x\":0,\"y\":68,\"w\":24,\"h\":11,\"i\":\"dd14182d-d8b9-47f2-bf36-6cba3b09586c\"},\"panelIndex\":\"dd14182d-d8b9-47f2-bf36-6cba3b09586c\",\"embeddableConfig\":{},\"panelRefName\":\"panel_12\"},{\"gridData\":{\"x\":24,\"y\":68,\"w\":24,\"h\":11,\"i\":\"a47f9333-52b7-49b7-8cac-f470cf405131\"},\"panelIndex\":\"a47f9333-52b7-49b7-8cac-f470cf405131\",\"embeddableConfig\":{},\"panelRefName\":\"panel_13\"}]","timeRestore":false,"title":"[Monitoring] Index monitoring Dashboard","version":1},"id":"524eb000-a5f2-11ec-9a68-ada9d754c566","references":[{"id":"b2811c70-a5f1-11ec-9a68-ada9d754c566","name":"panel_0","type":"visualization"},{"id":"de4f8ab0-a5f8-11ec-9a68-ada9d754c566","name":"panel_1","type":"visualization"},{"id":"811df7a0-a5f8-11ec-9a68-ada9d754c566","name":"panel_2","type":"visualization"},{"id":"eea89780-664b-11ed-8cd7-973626cf6f70","name":"panel_3","type":"visualization"},{"id":"cfbb4e20-664c-11ed-8cd7-973626cf6f70","name":"panel_4","type":"visualization"},{"id":"c7f72ae0-664e-11ed-8cd7-973626cf6f70","name":"panel_5","type":"visualization"},{"id":"943b3e00-a5ef-11ec-9a68-ada9d754c566","name":"panel_6","type":"visualization"},{"id":"ab503550-a5ef-11ec-9a68-ada9d754c566","name":"panel_7","type":"visualization"},{"id":"c78119a0-a5f5-11ec-9a68-ada9d754c566","name":"panel_8","type":"visualization"},{"id":"225f6020-a5f1-11ec-9a68-ada9d754c566","name":"panel_9","type":"visualization"},{"id":"17d49220-662a-11ed-8cd7-973626cf6f70","name":"panel_10","type":"visualization"},{"id":"c8109100-6627-11ed-8cd7-973626cf6f70","name":"panel_11","type":"visualization"},{"id":"45d571c0-6626-11ed-8cd7-973626cf6f70","name":"panel_12","type":"visualization"},{"id":"3ae5d820-6628-11ed-8cd7-973626cf6f70","name":"panel_13","type":"visualization"}],"type":"dashboard","updated_at":"2022-12-01T12:41:01.165Z","version":"WzIxOCwyXQ=="} {"exportedCount":16,"missingRefCount":0,"missingReferences":[]}
  • 查看索引读写流量 当集群启用了索引监控后,支持查询一段时间内的索引读写流量。 执行如下命令,查看所有索引读写流量。 GET /_cat/monitoring 执行如下命令,查看某一索引的读写流量。 GET /_cat/monitoring/{indexname} {indexName}为需要查看读写流量的索引名称。 执行如下命令,查看索引不同时间段的读写流量。 GET _cat/monitoring?begin=1650099461000 GET _cat/monitoring?begin=2022-04-16T08:57:41 GET _cat/monitoring?begin=2022-04-16T08:57:41&end=2022-04-17T08:57:41 表2 配置项说明 配置项 是否必选 说明 indexname 否 索引名称。 说明: 不支持查看系统索引,以“.”开头的索引是系统索引。 begin 否 查看监控的起始时间,UTC时间,默认是当前时间的前5分钟。 支持时间格式:strict_date_optional_time|epoch_millis 默认值:当前时间减去5分钟。 end 否 查看监控的结束时间,UTC时间,默认是当前时间。 支持时间格式: strict_date_optional_time|epoch_millis 默认值:当前时间。 返回信息示例: index begin end status pri rep init unassign docs.count docs.deleted store.size pri.store.size delete.rate indexing.rate search.rate test 2022-03-25T09:46:53.765Z 2022-03-25T09:51:43.767Z yellow 1 1 0 1 9 0 5.9kb 5.9kb 0/s 0/s 0/s 表3 返回信息的参数说明 参数 说明 index 索引名称。 begin 查看监控数据的起始时间。 end 查看监控数据的结束时间。 status 查询监控时间间隔内的索引状态。 pri 查询监控时间间隔内的索引的shard数量。 rep 查询监控时间间隔内的索引副本数量。 init 查询监控时间间隔内的索引的初始化数量。 unassign 查询监控时间间隔内的索引的未分配数量。 docs.count 查询监控时间间隔内的文档数量。 docs.deleted 查询监控时间间隔内的文档删除数量。 store.size 查询监控时间间隔内存储的索引大小。 pri.store.size 查询监控时间间隔内的索引主分片的大小。 delete.rate 监控时间间隔内的索引每秒删除数量。 indexing.rate 监控时间间隔内的索引每秒写入数量。 search.rate 监控时间间隔内的索引每秒查询数量。
  • 启用索引监控 执行如下命令,打开索引监控开关。 PUT _cluster/settings { "persistent": { "css.monitoring.index.enabled": "true" } } 当需要监控单个索引时,可以执行如下命令。 PUT _cluster/settings { "persistent": { "css.monitoring.index.enabled": "true", "css.monitoring.index.interval": "30s", "css.monitoring.index.indices": ["index_name"], "css.monitoring.history.duration": "3d" } } 表1 配置项说明 配置项 类型 说明 css.monitoring.index.enabled Boolean 索引监控的控制开关,设置为true将打开集群索引监控功能。 默认值:false css.monitoring.index.interval Time 索引监控采集数据的时间间隔。 最小值:1s 默认值:10s css.monitoring.index.indices String 索引监控的索引名称,默认监控所有索引,可以配置监控单个索引,也可以配置通配符监控某一类索引。 例如: “"css.monitoring.index.indices": ["index_name"]”表示只监控“index_name”索引。 “"css.monitoring.index.indices": ["log_*"]”表示监控以“log_”开头的索引。 “"css.monitoring.index.indices": ["index1", "index2"]”表示监控“index1”和“index2”两个索引。 默认值:*(表示监控所有索引) css.monitoring.history.duration Time 监控数据存储的索引保留时间,默认保存一周。 最小值:1d 默认值:7d
  • 场景描述 大查询隔离支持对查询请求进行独立管理,将高内存、长耗时的查询请求进行隔离,保证节点内存安全。在节点堆内存使用率过高时,触发中断控制程序,根据选择的中断策略将其中一条大查询请求进行中断,取消其正在运行的查询任务。大查询隔离同时支持全局查询超时配置,用户可实时配置所有查询请求的超时时间,中断超时查询请求。 大查询隔离可以有效解决以下问题,提升集群的搜索能力。 部分查询占用了很高的节点堆内存,导致机器频繁Garbage Collect,甚至引发OOM异常。 频繁Garbage Collect导致节点脱离,查询迟迟无法响应甚至失败。 查询量过大导致CPU爆满,线上业务受到影响。
共100000条