华为云用户手册

  • 日志文件介绍 Elasticsearch和OpenSearch集群备份的日志文件主要包括废弃操作日志、运行日志、慢索引日志、慢查询日志。 表3 日志文件类型 日志名称 描述 clustername_deprecation.log 弃用操作的日志记录。 clustername_index_indexing_slowlog.log 慢索引日志。 clustername_index_search_slowlog.log 慢索引查询日志。 clustername.log Elasticsearch运行日志。 clustername_access.log 接入日志。
  • 采集日志 日志采集可以实时将 CSS 集群日志存放到本集群或其他同网络的集群中,方便通过Kibana进行日志搜索分析。 如果要使用日志采集功能,集群必须满足以下条件。当集群不满足要求时,建议先升级集群再启用日志采集。 集群版本是Elasticsearch 7.10.2、OpenSearch 1.3.6或OpenSearch 2.11.0。 集群的镜像版本号 ≥ 24.2.0。集群的镜像版本号可以在集群列表的“版本”列查看,如图所示。 图2 查看集群子版本号 登录 云搜索服务 管理控制台。 在“集群管理”页面,单击需要配置日志备份的集群名称,进入集群基本信息页面。 左侧导航栏,选择“日志管理”,在“日志采集开关”右侧单击开关,打开集群的日志采集功能。 如果页面上没有“日志采集开关”,则表示该集群不支持采集日志。 在“日志采集配置”弹窗中,完成参数配置。 表2 日志采集配置 参数 说明 索引前缀名称 设置采集的日志中索引名称的前缀,则日志采集的索引名称为“索引前缀名称+日志采集日期”,日志采集日期以天为单位。 索引前缀名称只支持数字、小写字母、下划线和中划线,支持1~128个字符。 保留周期 设置采集的日志的保留周期,单位为天,支持输入1~3650。当采集的日志超过保存周期时,日志将会被删除。 日志保存集群 设置采集的日志保存在哪个集群,支持选择“当前集群”和“其他集群”。 默认选择“当前集群”。当选择“其他集群”时,需要选择日志保存的目标集群,并进行集群网络联通行检查,只有在同一VPC网络下的集群才支持跨集群保存日志,且集群版本必须一致。 如果集群已经启用了日志采集功能,也可以单击右侧的编辑图标修改日志采集配置。 单击“确定”,开启集群日志采集开关。 当“状态”变成“运行中”时,表示已启动日志采集。 单击“访问Kibana”,登录集群,可以搜索查看日志。 单击“日志保存集群”处的集群名称,可以跳转到集群详情页面。 图3 日志采集 当需要关闭日志采集时,单击“日志采集开关”右侧的开关,在弹窗中单击“确定”,关闭日志采集。 日志采集关闭后,集群中已采集的日志不会被清空,仅当超过采集日志时设置的“保存周期”时才会被删除。
  • 开启访问日志记录到文件 开启访问日志记录到文件后,客户端访问集群节点,会记录为{集群名_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 } }
  • 开启一键断流 执行如下命令,开启一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": true } } 执行如下命令,关闭一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": false } }
  • 开启请求采样统计 执行如下命令,开启请求采样统计。 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 } }
  • 查看流量控制信息 查看所有节点的流量控制情况 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。
  • 约束限制 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长度和个数不应该配置过多,否则影响集群性能。
  • 场景描述 流量控制1.0提供节点级别的流量控制功能,可提供单个节点基于黑白名单的访问限制、HTTP并发连接数限制、HTTP最大连接数限制、基于请求Path的堆内存最大使用量流控能力、基于CPU最大占用率流控能力,一键断流能力,同时也提供节点访问IP统计和URL的采样统计能力。开启流控功能会使请求在入口处直接阻塞,可以缓解节点高并发场景下的集群压力,降低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流控
  • 给用户组授权 在用户组列表中,单击新建用户组“开发人员组”操作列的“授权”“权限配置”。 在用户组“选择策略”页面中,在搜索框中搜索“ CS S FullAccess”和“OBS Administrator”,勾选并单击“下一步”。 创建CSS集群的权限有“CSS FullAccess”或“Elasticsearch Administrator”。 如果还需要查看资源的消费情况,请在同区域选择“BSS Administrator”权限。 设置最小授权范围。建议权范围方案选择“指定区域项目资源”,使用哪个区域的资源就选哪个区域。 此处以仅为“华北-北京四”区域的资源设置权限为例,选择授权范围方案为“指定区域项目资源”,并选择“cn-north-4 [华北-北京四]”区域。 图1 设置最小授权范围 单击“确定”,完成用户组授权。
  • IAM 用户登录并验证权限 在登录页面,单击登录下方的“IAM用户”“IAM用户登录”“子用户登录”,在“IAM用户登录”页面,输入“租户名/原华为云账号名”、“IAM用户名/邮件地址”和“密码”“账号名”、“用户名/邮箱”和“密码”。 图5 IAM用户登录 表3 登录信息 参数 示例 说明 租户名/原华为云账号名 Company-A IAM用户所属的账号。此处假设A公司的账号名为“Company-A”。 IAM用户名/邮件地址 Alice 在IAM创建用户时,输入的IAM用户名/邮件地址。如果不知道用户名及初始密码,请向管理员获取。 IAM用户密码 ******** IAM用户的密码,非账号密码。此处需要输入上一步中下载的密码。 单击“登录”,登录华为云。 在“服务列表”中选择 云搜索 服务,进入云搜索服务CSS控制台。 在云搜索服务总览页面右上角,单击“创建集群”按钮,按照创建集群的步骤创建集群,如果创建成功,则表示权限配置成功。
  • 背景信息 Elasticsearch的ISM(Index State Management)是一个索引状态管理插件,支持通过索引使用期限、索引大小或文档数等信息的变化来自动触发周期性的管理操作。通过ISM插件可以自定义索引策略,实现自动处理索引的滚动或删除,以优化集群搜索性能或降低存储成本。ISM的使用流程: 创建生命周期策略:在Kibana创建索引的生命周期策略Policy。 索引关联生命周期策略:将索引关联上创建的生命周期策略,生成索引策略。 管理索引策略:支持对索引策略进行策略修改、重启和变更。 ISM更多功能请参见索引管理官方介绍。 创建的索引生命周期策略常用于以下场景: 通过索引生命周期管理实现Elasticsearch集群自动滚动索引 通过索引生命周期管理实现Elasticsearch集群存算分离
  • 创建生命周期策略 登录云搜索服务管理控制台。 在“集群管理”页面选择需要登录的集群,单击“操作”列中的“Kibana”,登录Kibana页面。 在菜单栏选择“IM”或“Index Management”,进入索引管理页面 。 单击“Create policy”,配置生命周期策略。 “Policy ID”:自定义策略名称。 “Define policy”:基于策略示例,配置自定义策略。 图1 配置策略 单击“Create”,完成策略的创建。
  • 管理索引策略 登录云搜索服务管理控制台。 在“集群管理”页面选择需要登录的集群,单击“操作”列中的“Kibana”,登录Kibana页面。 在菜单栏选择“IM”或“Index Management”,进入索引管理页面 。 左侧选择“Managed Indices”,进入索引策略管理列表。 此处会展示当前集群已配置的索引策略。 在索引策略管理列表,管理策略。 当索引的策略状态异常时,可以勾选状态异常的索引,单击“Retry policy”,可以重试策略。 当需要更新索引的策略时,可以勾选索引,单击“Change policy”进入变更策略页面,更新策略后,单击“Change”变更策略。 当需要解除索引的策略时,可以勾选索引,单击“Remove policy”,在弹窗确认后单击“Remove”改索引将被解除策略。 具体使用可参考索引管理官方介绍。
  • 背景信息 OpenSearch的ISM(Index State Management)是一个索引状态管理插件,支持通过索引使用期限、索引大小或文档数等信息的变化来自动触发周期性的管理操作。通过ISM插件可以自定义索引策略,实现自动处理索引的滚动或删除,以优化集群搜索性能或降低存储成本。ISM的使用流程: 创建生命周期策略:在Kibana创建索引的生命周期策略Policy。 索引关联生命周期策略:将索引关联上创建的生命周期策略,生成索引策略。 管理索引策略:支持对索引策略进行策略修改、重启和变更。 ISM更多功能请参见索引管理官方介绍。 创建的索引生命周期策略常用于以下场景:通过索引生命周期管理实现OpenSearch集群自动滚动索引
  • 管理索引策略 在OpenSearch Dashboard的“Index Management”页面,选择“Managed Indices”,进入索引策略管理列表。 此处会展示当前集群已配置的索引策略。 在索引策略管理列表,管理策略。 当索引的策略状态异常时,可以勾选状态异常的索引,单击“Retry policy”,可以重试策略。 当需要更新索引的策略时,可以勾选索引,单击“Change policy”进入变更策略页面,更新策略后,单击“Change”变更策略。 当需要解除索引的策略时,可以勾选索引,单击“Remove policy”,在弹窗确认后单击“Remove”改索引将被解除策略。 具体使用可参考索引管理官方介绍。
  • 创建生命周期策略 登录云搜索服务管理控制台。 在“集群管理”页面选择需要登录的集群,单击“操作”列中的“Kibana”。 登录OpenSearch Dashboard,在左侧选择“Index Management”,进入索引管理页面 。 右侧单击Create policy,创建索引策略。在Configuration method对话框中,选择“JSON editor”,单击“Continue”进入创建索引策略页面。 “Policy ID”:自定义策略名称。 “Define policy”:基于策略示例,配置自定义策略。 图1 配置策略 单击Create完成索引策略的创建。
  • 采集日志 日志采集可以实时将CSS集群日志存放到本集群或其他同网络的集群中,方便通过Kibana进行日志搜索分析。 如果要使用日志采集功能,集群必须满足以下条件。当集群不满足要求时,建议先升级集群再启用日志采集。 集群版本是Elasticsearch 7.10.2、OpenSearch 1.3.6或OpenSearch 2.11.0。 集群的镜像版本号 ≥ 24.2.0。集群的镜像版本号可以在集群列表的“版本”列查看,如图所示。 图2 查看集群子版本号 登录云搜索服务管理控制台。 在“集群管理”页面,单击需要配置日志备份的集群名称,进入集群基本信息页面。 左侧导航栏,选择“日志管理”,在“日志采集开关”右侧单击开关,打开集群的日志采集功能。 如果页面上没有“日志采集开关”,则表示该集群不支持采集日志。 在“日志采集配置”弹窗中,完成参数配置。 表2 日志采集配置 参数 说明 索引前缀名称 设置采集的日志中索引名称的前缀,则日志采集的索引名称为“索引前缀名称+日志采集日期”,日志采集日期以天为单位。 索引前缀名称只支持数字、小写字母、下划线和中划线,支持1~128个字符。 保留周期 设置采集的日志的保留周期,单位为天,支持输入1~3650。当采集的日志超过保存周期时,日志将会被删除。 日志保存集群 设置采集的日志保存在哪个集群,支持选择“当前集群”和“其他集群”。 默认选择“当前集群”。当选择“其他集群”时,需要选择日志保存的目标集群,并进行集群网络联通行检查,只有在同一VPC网络下的集群才支持跨集群保存日志,且集群版本必须一致。 如果集群已经启用了日志采集功能,也可以单击右侧的编辑图标修改日志采集配置。 单击“确定”,开启集群日志采集开关。 当“状态”变成“运行中”时,表示已启动日志采集。 单击“访问Kibana”,登录集群,可以搜索查看日志。 单击“日志保存集群”处的集群名称,可以跳转到集群详情页面。 图3 日志采集 当需要关闭日志采集时,单击“日志采集开关”右侧的开关,在弹窗中单击“确定”,关闭日志采集。 日志采集关闭后,集群中已采集的日志不会被清空,仅当超过采集日志时设置的“保存周期”时才会被删除。
  • 日志文件介绍 Elasticsearch和OpenSearch集群备份的日志文件主要包括废弃操作日志、运行日志、慢索引日志、慢查询日志。 表3 日志文件类型 日志名称 描述 clustername_deprecation.log 弃用操作的日志记录。 clustername_index_indexing_slowlog.log 慢索引日志。 clustername_index_search_slowlog.log 慢索引查询日志。 clustername.log Elasticsearch运行日志。 clustername_access.log 接入日志。
  • Logstash使用流程 表1 Logstash集群的使用流程 任务分类 操作 参考文档 使用 规划集群 在创建Logstash集群前,需要先完成集群规划。规划时,应考虑是否多可用区部署以提高集群的高可用性,合理配置集群的节点数量与规格,以确保集群的稳定性和性能。 Logstash集群规划建议 创建集群 基于集群规划,创建合适的Logstash集群。 创建Logstash集群 配置路由 当Logstash集群与数据源子网位于同一主网卡时,网络自动互通;如果不同,则需在Logstash集群的每个节点上配置指向源数据服务器IP的回程路由。 配置Logstash集群路由 配置Logstash迁移任务 通过Logstash集群的配置中心,可以创建并启动Logstash配置文件,以实现数据从不同数据源到目的端的迁移。 创建Logstash配置文件 启动Logstash迁移任务 运维 扩缩容 CSS服务提供灵活的扩容和缩容功能,支持增加节点数量、升级节点规格,以及随机缩容节点,以动态调整集群资源,适应不同业务需求并优化成本。 扩容Logstash集群 缩容Logstash集群 管理集群 CSS服务提供全面的集群管理功能,包括集群信息查看、标签管理、企业项目绑定、自定义CA证书上传等,旨在帮助用户高效、灵活地管理Logstash集群。 查看Logstash集群信息 设置Logstash集群标签 为Logstash集群绑定企业项目 管理Logstash集群的CA证书 强制重启Logstash集群 删除Logstash集群 监控与日志管理 CSS服务提供全面的监控和日志管理功能,包括集群、节点和Logstash管道监控指标、告警规则配置、日志备份与查看,帮助用户有效监控和分析Logstash集群,确保集群的稳定性。 CES 中Logstash集群支持的监控指标 使用CES监控Logstash集群 查询和管理Logstash集群日志 审计日志 通过 云审计 服务,用户可以记录和查询Logstash集群的关键操作事件,且操作记录在管理控制台保存最近7天,便于后续的审计和回溯。 查看Logstash集群审计日志 父主题: 使用Logstash迁移数据
  • 开启并查看访问日志 执行如下命令,开启访问日志。 开启集群所有节点的访问日志 PUT /_access_log?duration_limit=30s&capacity_limit=1mb 开启集群中某一节点的访问日志 PUT /_access_log/{nodeId}?duration_limit=30s&capacity_limit=1mb “{nodeId}”为节点ID。 表6 访问日志的配置项说明 配置项 类型 说明 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" : "" } ] } } } 表7 响应参数说明 参数名 说明 name 节点名称。 host 节点对应的IP地址。 count 统计周期内,访问节点的请求数量。 access 统计周期内,访问节点的请求详情。参数说明请参见表8。 表8 access 参数名 说明 time 记录请求时间。 remote_address 请求对应的源IP地址和端口。 url 请求的原始URL method 对应请求Path的方法。 content 对应请求的内容。 执行命令删除访问日志。 删除集群所有节点的访问日志API DELETE /_access_log 删除集群中某一节点的访问日志API DELETE /_access_log/{nodeId} “{nodeId}”为节点ID。
  • 开启访问日志记录到文件 开启访问日志记录到文件后,客户端访问集群节点,会记录为{集群名_access_log.log}文件,通过日志备份功能可以在OBS详细查看访问日志。 该功能一般用于定位问题,问题解决后,建议关闭此开关。 执行如下命令,开启访问日志记录到文件。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.file.enabled": true } } 表9 访问日志记录到文件的配置项说明 参数 类型 说明 flowcontrol.log.file.enabled Boolean 是否将每个请求的日志详情记录到后台日志文件。 取值范围: true false(默认值) 执行如下命令,关闭访问日志记录到文件。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.file.enabled": false } }
  • 场景描述 流量控制2.0提供节点级别的流量控制功能,可提供单个节点基于黑白名单的访问限制、HTTPS并发连接数限制、HTTP最大连接数限制,基于节点内存的客户端写入流量反压控制,一键断流能力。同时也提供节点访问IP统计和URL的统计能力。开启客户端写入流量反压控制功能,会在节点堆内存过大时阻止大请求涌入节点占用内存,避免节点崩溃,减少节点不可用的风险。 表1 流量控制策略 策略 描述 相关文档 HTTP/HTTPS流控 HTTP/HTTPS黑白名单设置IP和子网控制客户端IP访问,如果节点IP在黑名单中,则该客户端的连接将直接中断,节点不会处理任何请求。白名单规则优先于黑名单规则,如果客户端IP在黑白名单中都出现,客户端请求将不会被拒绝。 HTTP/HTTPS并发连接数流控通过限制节点每秒中的HTTP连接总数来限制节点流量。 HTTP/HTTPS新建连接数流控通过限制节点新建的连接数来限制节点流量。 开启HTTP/HTTPS节点流控 内存流控 基于节点堆内存使用量限制写入流量,将请求需要读取的内容反压在客户端,暂停请求的接收。同时尽力触发垃圾回收,按堆内存的空闲量继续读取请求。 开启内存流控 请求采样统计 可以记录客户端IP的访问和客户端的请求类型,用户可以基于统计值识别客户端IP的访问流量,分析当前客户端的写入和查询访问量。 开启请求采样统计 一键断流 可以切断节点的所有客户端连接,不包括Kibana访问和CSS后台运维、监控类接口。用于应对突发流量场景下的集群异常,达到快速恢复集群的目的。 开启一键断流 流量控制 提供单独的流量统计接口,记录当前客户端连接数以及客户端反压连接数,用户可以基于统计值评估流控配置阈值和衡量集群压力。 查看流量控制信息 访问日志 可以记录一段时间内节点接收的HTTP/HTTPS请求URL和Body,用户可以基于访问日志信息分析当前的流量压力。 开启并查看访问日志 访问日志记录 客户端访问集群节点,会记录为{集群名_access_log.log}访问日志文件,通过日志备份功能可以在OBS详细查看访问日志。 开启访问日志记录到文件
  • 开启内存流控 执行如下命令,开启内存流控。 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.enabled": true, "flowcontrol.memory.heap_limit": "80%" } } 表3 内存流控的配置项说明 配置项 类型 说明 flowcontrol.memory.enabled Boolean 内存流控开关,开启后持续监控内存使用情况。 取值范围: true false(默认值) flowcontrol.memory.heap_limit String 节点堆内存的阈值,限制节点全局堆内存的使用率,超过此值将进行流量反压。 取值范围:10%-100% 默认值:90% 说明: 默认值90%是一个比较保守的阈值,即堆内存大于90%使用量时会停止读取客户端超过64KB的大请求,直至堆内存下降。如堆内存下降到85%,会开始允许最多一次读取“5%×堆内存最大值”的客户端数据量。如果堆内存持续超过90%,则无法放开客户端连接的请求读取,此时会尝试触发GC算法进行垃圾回收,直到堆内存低于所设定的阈值。 日常使用时可以将“flowcontrol.memory.heap_limit”阈值设置为80%或以下,保证节点有一定的堆内存余量,供写入内存以外的行为使用,比如:Elasticsearch查询、Segment merge等。 flowcontrol.holding.in_flight_factor Float 反压释放因子,原理类似于熔断器“network.breaker.inflight_requests.overhead”参数。内存达到限制值时,该值越大反压越强,写入流量将受限。 取值范围:≥0.5 默认值:1.0 flowcontrol.holding.max TimeValue 每个请求最长的延迟时间,当延迟超过此值时可以设置断开该请求反压或断开请求链路。详见“flowcontrol.holding.max_strategy”配置。 取值范围:≥15s 默认值:60s flowcontrol.holding.max_strategy String 超过最大延迟时间后的运行策略。 取值范围: keep(默认值):如果堆内存仍在高位,选择继续反压 - 何时执行请求仍由服务器根据实时内存自主决定。 soft:如果堆内存仍在高位,也必须执行该请求。执行/拒绝权力交给inFlight熔断器。 hard:如果堆内存仍在高位,丢弃该请求,同时断开该请求的客户端连接。 flowcontrol.memory.once_free_max String 被暂停的请求队列一次性最大重新打开的内存,防止强压场景下短暂的低内存现象一次性冲挂集群。 取值范围:1%-50% 默认值:10% flowcontrol.memory.nudges_gc Boolean 写入压力过大时(1s检查一次反压连接池,所有现有连接均被阻塞无法放开新的写入请求),是否尽力触发垃圾回收,保证写入稳定性。取值: true(默认值) false 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,关闭集群内存流控。 PUT /_cluster/settings { "persistent": { "flowcontrol.memory.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请求失败。 开启访问日志会影响集群性能。 内存流控是基于请求Path的流控,Path长度和个数不应该配置过多,否则影响集群性能。
  • 开启请求采样统计 执行如下命令,开启请求采样统计。 PUT _cluster/settings { "transient": { "flowcontrol.log.access.enabled": true } } 表4 请求采样统计的配置项说明 配置项 类型 说明 flowcontrol.log.access.enabled Boolean 请求采样统计开关,统计最近访问Elasticsearch集群的客户端IP地址及其请求数量,会统计bulk写入和search、msearch查询请求的个数。 取值范围: true false(默认值) flowcontrol.log.access.count Integer 统计最近IP地址访问集群的客户端来源个数。IP统计分为请求类型统计和日志记录开关。 取值范围:0-100 默认值:10 当所有参数指设置为“null”时,表示恢复配置默认值。 执行如下命令,关闭请求采样统计。 PUT /_cluster/settings { "persistent": { "flowcontrol.log.access.enabled": false } }
  • 查看流量控制信息 查看所有节点的流量控制情况 GET /_nodes/stats/filter/v2 查看所有节点的流量控制详细情况 GET /_nodes/stats/filter/v2?detail 查看某个具体节点的流量控制情况 GET /_nodes/{nodeId}/stats/filter/v2 “{nodeId}”为需要查看流量控制的节点ID。 响应示例: { "_nodes" : { "total" : 1, "successful" : 1, "failed" : 0 }, "cluster_name" : "css-xxxx", "nodes" : { "d3qnVIpPTtSoadkV0LQEkA" : { "name" : "css-xxxx-ess-esn-1-1", "host" : "192.168.x.x", "timestamp" : 1672236425112, "flow_control" : { "http" : { "current_connect" : 52, "rejected_concurrent" : 0, "rejected_rate" : 0, "rejected_black" : 0, "rejected_breaker" : 0 }, "access_items" : [ { "remote_address" : "10.0.0.x", "search_count" : 0, "bulk_count" : 0, "other_count" : 4 } ], "holding_requests" : 0 } } } } 表5 响应参数说明 参数名 说明 current_connect 节点实际的HTTP连接数据信息, 没有开启流控这个配置也会记录,等同于GET /_nodes/stats/http接口current_open值, 可以看到节点当前的客户端连接数。 rejected_concurrent HTTP流控开启生效,关闭后不清零,开启流控期间拒绝的并发连接数。 rejected_rate HTTP流控开启生效,关闭后不清零,开启流控期间拒绝的新建连接数。 rejected_black HTTP流控开启生效,关闭后不清零,配置黑名单拒绝的请求数。 rejected_breaker 一键断流开启,拒绝的新建连接数。 remote_address IP地址统计,基于配置值统计节点访问的IP地址和请求数量。 search_count 该客户端以_search、_msearch访问的次数。 bulk_count 该客户端以_bulk访问的次数。 other_count 该客户端其他请求的访问次数。
  • 开启一键断流 执行如下命令,开启一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": true } } 执行如下命令,关闭一键断流。 PUT /_cluster/settings { "persistent": { "flowcontrol.break.enabled": false } }
  • 操作流程 以下是使用OpenSearch集群完成数据搜索的操作步骤。 开始迁移数据前,请务必按准备工作指导完成必要操作。 步骤1:创建集群:创建一个OpenSearch非安全集群用于搜索数据。 步骤2:导入数据:在OpenSearch Dashboards上使用开源Elasticsearch API导入数据。 步骤3:搜索数据:在OpenSearch集群中对数据进行全文检索和聚合结果显示。 步骤4:删除索引:当不再使用对应的索引数据时,可以删除对应索引节约资源。
  • 步骤2:导入数据 OpenSearch集群支持通过多种方式导入数据,本示例选择在OpenSearch Dashboards上使用开源Elasticsearch API导入数据。 在OpenSearch集群管理页面,选择已创建的“Sample-OSCluster”集群,单击操作列中的“Kibana”进入OpenSearch Dashboards控制台。 在OpenSearch Dashboards的左侧导航中选择“Dev Tools”,进入Console界面。 Console左侧区域为输入框,输入框右侧的三角形为执行命令按钮,Console右侧为结果输出区域。 图4 Console界面 在Console界面,执行如下命令创建索引“my_store”。 PUT /my_store { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "productName": { "type": "text", "analyzer": "ik_smart" }, "size": { "type": "keyword" } } } } 返回结果如下所示。 { "acknowledged" : true, "shards_acknowledged" : true, "index" : "my_store" } 在Console界面,执行如下命令,将数据导入到“my_store”索引中。 POST /my_store/_doc/_bulk {"index":{}} {"productName":"2017秋装新款文艺衬衫女装","size":"L"} {"index":{}} {"productName":"2017秋装新款文艺衬衫女装","size":"M"} {"index":{}} {"productName":"2017秋装新款文艺衬衫女装","size":"S"} {"index":{}} {"productName":"2018春装新款牛仔裤女装","size":"M"} {"index":{}} {"productName":"2018春装新款牛仔裤女装","size":"S"} {"index":{}} {"productName":"2017春装新款休闲裤女装","size":"L"} {"index":{}} {"productName":"2017春装新款休闲裤女装","size":"S"} 当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。
共100000条