华为云用户手册

  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 slow_sql_templates Array of SlowSqlTemplate objects 慢日志模板数据列表。 total_count Integer 慢日志模板总数。 表5 SlowSqlTemplate 参数 参数类型 描述 sql_template String SQL模板。 sql_sample String SQL样本。 db_names Array of strings 库名。 execute_count Long 执行次数。 avg_execute_time Double 平均执行耗时(ms)。 max_execute_time Double 最大执行耗时(ms)。 avg_lock_wait_time Double 平均锁等待时间(ms)。 max_lock_wait_time Double 最大锁等待时间(ms)。 avg_rows_examined Double 平均扫描行数。 max_rows_examined Double 最大扫描行数。 avg_rows_sent Double 平均返回行数。 max_rows_sent Double 最大返回行数。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 最小长度:8 最大长度:36 error_msg String 错误描述。 最小长度:2 最大长度:512
  • 使用须知 全量SQL默认关闭,如需使用SQL洞察功能,请先开启全量SQL收集开关。开启收集全量SQL后,实例性能损耗5%以内。 关闭收集全量SQL后,将不再采集新产生的SQL,已经收集的SQL也会被删除,请您谨慎操作。 当前全量SQL受内存缓冲区限制,业务量大的场景下,全量SQL有较小概率因缓冲区满,存在丢弃部分记录。 当前全量SQL单条记录超过4096字节时,会默认丢弃该条记录。 此限制在MySQL 5.7.33.3及以后小版本可以通过设置参数rds_sql_tracer_reserve_big_records来选择是否丢弃,5.6和8.0版本不支持设置该参数。您可以在参数设置界面,将该参数设为ON,即表示单条记录超过4096字节也不被丢弃。 免费实例的全量SQL日志仅保留1个小时,付费实例默认保留7天,最长可保存30天,到期后自动删除。 版本限制:5.6.51.1及以上版本、5.7.29.2及以上版本、8.0.20.3及以上版本支持。
  • 示例流程 图1 给用户授权DAS权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予数据管理服务 “DAS FullAccess”权限。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 在“服务列表”中选择“数据管理服务 DAS”,进入DAS主界面,单击详情页左上角“新增数据库登录”,若可以正常创建数据库登录,则表示DAS所需权限策略均已生效。
  • 隐藏账号说明 为了保证数据库的正常运行,防止必要的账户信息被误删,数据管理服务将对 GaussDB (for MySQL)数据库以下账户进行隐藏。 表1 账户信息 账户名 说明 mysql.session@localhost GaussDB(for MySQL)5.7及以上版本,所配置的数据库内部账号。 mysql.sys@localhost GaussDB(for MySQL)5.7及以上版本,所配置的数据库内部账号。 mysql.infoschema@localhost 数据库内部账号。 root@% 用户创建GaussDB(for MySQL)实例时设置的账户。 rdsAdmin@localhost 管理账户,拥有最高的superuser权限,用于查询、修改实例信息、故障排查、迁移、恢复等操作。 rdsBackup@localhost 备份账户,用于后台的备份。 rdsMetric 计量账户,用于watchdog采集数据库的状态数据。 rdsRepl 复制账户,用于备实例或只读实例在主实例上同步数据。 rdsProxy 数据库代理账户,该账户在 开通读写分离 时才会自动创建,用于通过读写分离地址连接数据库时鉴权使用。 drsFull 数据复制服务 启动全量迁移任务时,系统在目标数据库中添加的账户,用于迁移数据。 drsIncremental 数据复制服务启动增量迁移任务时,系统在目标数据库中添加的账户,用于迁移数据。
  • DAS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DAS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DAS时,需要先切换至授权区域。 根据授权精确程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DAS服务,管理员能够控制IAM用户仅能对某一类数据库资源进行指定的管理操作。 如表1所示,包括了DAS的所有系统权限。 表1 DAS系统权限 策略名称 描述 类别 依赖关系 DAS Administrator 数据管理服务管理员,拥有该服务下的所有权限。 系统角色 依赖Tenant Guest角色。 在同项目中勾选依赖的角色。 DAS FullAccess 数据管理服务的所有权限。 系统策略 无。 DAS作为数据库的管理和运维功能,依赖于其他服务。 如果您是通过细粒度方式为IAM用户授权,并且想通过DAS管理实例,在授权时一同添加DAS FullAccess系统策略即可。 在DAS中所能查看和管理的实例列表与您在对应服务配置的一致。 使用系统细粒度权限授权的用户默认具有查看开发工具数据库登录列表、删除数据库登录信息和访问DBA智能运维功能的权限,其在DAS所能看到的实例列表与您在对应服务配置的一致。 表2列出了DAS常用操作与系统权限的授权关系。您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 DAS Administrator DAS FullAccess 登录数据库 √ √ 新增数据库登录 √ √ 修改数据库登录 √ √ 删除数据库登录 √ √ 查看开发工具数据库登录列表 √ √ 访问DBA智能运维功能 √ √ 执行SQL诊断 √ √ 导出全量SQL数据 √ √ 订阅日报 √ √ 导出慢SQL数据 √ √ 查询全量SQL列表 √ √ 查询慢SQL列表 √ √ 查看云DBA页面 √ √ 查询TopSQL列表 √ √ 查询日报列表 √ √ 查询SQL执行计划 √ √ 表3 常用操作与对应授权项 操作名称 授权项 备注 登录数据库 das:connections:login 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 获取登录信息列表 das:connections:list 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 删除登录信息 das:connections:delete 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 新增数据库登录 das:connections:create 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 修改数据库登录 das:connections:modify 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 修改DBA智能运维付费模式 das:clouddba:changePaymentMode 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; DBA智能运维实时、紧急kill会话 das:clouddba:deleteProcess 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 执行SQL诊断 das:clouddba:sqlDiagnosis 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 导出全量SQL数据 das:clouddba:fullSqlExport 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 订阅日报 das:clouddba:dailyReportsSubscribe 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 导出慢SQL数据 das:clouddba:slowSqlExport 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 查询全量SQL列表 das:clouddba:fullSqlList 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 查询慢SQL列表 das:clouddba:slowSqlList 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 查看云DBA页面 das:clouddba:menuList 说明: 该权限为IAM授权,仅支持配置在IAM授权下,配置该权限后,方可查看DAS服务智能DBA页面,否则智能DBA页面无法显示。 查询TopSQL列表 das:clouddba:topSqlList 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 查询日报列表 das:clouddba:dailyReportsList 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 查询SQL执行计划 das:clouddba:getSqlExecutionPlan 根据您需要登录的实例类型,选择配置其他服务查询实例列表的权限: rds:instance:list; dds:instance:list; gaussdb:instance:list; 表4 DAS功能依赖其他服务的权限 策略名称 描述 类型 依赖关系 Tenant Administrator 操作权限: 对账号中心、费用中心和资源中心执行任意操作。 对账号拥有的所有云资源执行任意操作。 对象存储服务 (OBS)策略在全局项目下配置。 系统角色 无 OBS OperateAccess 操作权限:拥有该权限的用户可以执行列举桶、获取桶基本信息、获取桶元数据、列举对象、上传对象、下载对象、删除对象、获取对象ACL等对象基本操作。 对象存储服务(OBS)策略在全局项目下配置。 系统策略 无 DAS服务所支持的导入、导出等特性,需用到您的OBS(对象存储服务)桶,您需要配置OBS的相关系统策略,才能正常使用这些特性。 通常,建议您配置Tenant Administrator策略,以便对OBS资源执行相关操作。 当您不想其他员工拥有创建桶、删除桶等高危操作的权限时,您可以为员工用户配置OBS OperateAccess策略,以便正常使用DAS这些特性,但是无法对OBS桶执行创建、删除等操作。
  • 与文档数据库服务(DDS)的关系 数据管理服务支持文档数据库(DDS)实例的管理。 通过数据管理服务连接目标数据库时,需要使用到目标数据库的用户名和密码。 数据库实例与数据管理服务须在同一个区域下。 表3 文档数据库服务 模块 功能 DDS 命令操作 命令查询。 √ 命令执行记录。 √ 库管理 数据库的管理。 √ 集合管理 数据库中对集合的管理。 √ 视图管理 数据库中对视图的管理 √ 用户管理 创建与管理用户信息。 √ 角色管理 创建与管理角色信息。 √
  • 与弹性云服务器(E CS )的关系 数据管理服务支持弹性云服务器(ECS)自建库实例的数据管理。 通过数据管理服务连接目标数据库时,需要使用到自建库实例的用户名、密码及端口信息。 弹性云服务器与数据管理服务须在同一个区域下。 暂仅支持MySQL5.5、5.6、5.7、8.0版本的实例,不支持HA集群。 表2 ECS自建库数据源 模块 MySQL Microsoft SQL Server PostgreSQL 库管理 √ √ √ SQL窗口 √ √ √ SQL执行记录 √ √ √ 导入 √ √ √ 导出 √ √ √ 任务调度 √ × × 实时性能 √ × × 实时会话 √ √ × SQL诊断 √ × × 诊断报告 √ × × InnoDB锁等待 √ - × 用户管理 √ √ ×
  • 如何进行应用同步? 工业数字模型驱动引擎-数据建模引擎(xDM Foundation,简称xDM-F)的应用同步功能帮助您实现应用源之间的模型数据同步,适用于iDME跨应用模型数据同步、跨租户模型数据同步等业务场景。根据应用形态(应用设计态和应用运行态)不同,xDM-F提供不同的同步能力。 表1 同步对比 对比项 应用设计态 应用运行态 适用场景 同一租户下,不同环境标识的同名应用设计态之间同步。 例如,将“环境标识”为“dev”的A应用同步至“环境标识”为“sit”的同名应用。 同一租户下,不同地域的应用设计态之间同步。 例如,将广州友好区域的B应用同步至北京四区域的C应用。 不同租户下,应用设计态之间同步。 例如,将租户A构建的某iDME应用同步至租户B的iDME环境下。 同一iDME应用,不同逻辑租户下,应用运行态之间同步。 不同租户下,应用运行态之间同步。 例如,将租户A已部署至xDM-F的某应用运行态同步至租户B的iDME环境下。 不同iDME部署环境下,应用运行态之间同步。 例如,将已部署在公有云的某应用运行态同步至边缘云的iDME环境。 同步方式 在线同步 离线同步 离线同步 支持的同步内容 在线同步/离线同步 数据模型:包含数据实体、关系实体和接口模型。 基础数据:枚举类型。 数据模型:包含数据实体和关系实体。 基础数据:包含属性库、合法值、分类、文件夹和计量单位。 生命周期:包含生命周期模板、状态和业务操作。 服务编排:包含高代码编排。 参考文档 应用同步(设计态) 应用同步(运行态) 当您的本地服务器中已有数据库和物理表,且希望通过iDME统一管理所有模型时,可使用xDM-F的反向建模功能,将已有物理表反向建模至iDME的数据模型中。具体操作请参见通过反向建模将已有数据库物理表转为iDME模型。 父主题: 数据建模引擎相关问题
  • CSS 服务中是否支持停止集群? CSS不支持停止集群功能。如果是迁移集群的场景,用户需要将旧集群的功能先暂停,确认集群迁移成功后,再将旧集群删除。可以采用如下方式处理: 如果使用的集群版本支持流量控制功能,可以开启一键断流切断节点上除运维接口外的所有流量。 如服务管理控制果使用的集群版本不支持流量控制功能,可以关闭所有业务索引的读写。例如所有业务索引以log开头,在Kibana的“Dev Tools”页面执行以下命令: PUT log*/_settings { "index.blocks.read": true, "index.blocks.write": true, "index.blocks.metadata": true } 父主题: CSS集群管理
  • CSS服务中如何清理Elasticsearch缓存? 清理fielddata 进行聚合和排序时,会使用fielddata数据结构,会占用较大内存。 在Kibana执行如下命令,查看scroll_id值。 GET my_index/_search/?scroll=1m 执行如下命令查看索引的fielddata占用情况。 DELETE /_search/scroll { "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" } 当fielddata占用内存过高时,可以执行如下命令清理fielddata。 POST /test/_cache/clear?fielddata=true “test”为fielddata占用内存较高的索引名称。 清理segment 每个segment的FST结构都会被加载到内存中,并且这些内存是不会被垃圾回收的。因此如果索引的segment数量过大,会导致内存使用率较高,建议定期进行清理。 在Kibana执行如下命令,查看各节点的segment数量和占用内存大小。 GET /_cat/nodes?v&h=segments.count,segments.memory&s=segments.memory:desc 如果segment占用内存过高时,可以通过删除部分不用的索引、关闭索引或定期合并不再更新的索引等方式释放内存。 清理cache 在Kibana执行如下命令清理cache。 POST _cache/clear 父主题: CSS集群搜索引擎使用
  • 是否支持跨Region迁移CSS集群? CSS集群不支持直接迁移,但可以通过OBS桶备份和恢复的方式进行数据迁移实现集群迁移。 如果OBS桶在同一个区域,请参考备份与恢复索引进行集群迁移。 如果OBS桶跨区域,请先参考配置跨区域复制进行跨区域复制OBS桶,再参考备份与恢复索引进行集群迁移。 在跨区域复制之前,要保证目标集群设置的快照文件夹为空,否则无法将快照信息刷新到目标集群的快照列表中。 每次迁移都需要将文件夹置空。 父主题: CSS集群迁移
  • 步骤3:搜索数据 在Elasticsearch集群中对数据进行全文检索和聚合结果显示。 全文检索 假设用户进入该电商网站,她想要查找名称包含“春装牛仔裤”的商品信息,可以搜索“春装牛仔裤”。 在Kibana执行如下搜索命令。 GET /my_store/_search { "query": {"match": { "productName": "春装牛仔裤" }} } 返回结果如下所示。 { "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : 1.7965372, "hits" : [ { "_index" : "my_store", "_type" : "_doc", "_id" : "9xf6VHIBfClt6SDjw7H5", "_score" : 1.7965372, "_source" : { "productName" : "2018春装新款牛仔裤女装", "size" : "M" } }, { "_index" : "my_store", "_type" : "_doc", "_id" : "-Bf6VHIBfClt6SDjw7H5", "_score" : 1.7965372, "_source" : { "productName" : "2018春装新款牛仔裤女装", "size" : "S" } }, { "_index" : "my_store", "_type" : "_doc", "_id" : "-Rf6VHIBfClt6SDjw7H5", "_score" : 0.5945667, "_source" : { "productName" : "2017春装新款休闲裤女装", "size" : "L" } }, { "_index" : "my_store", "_type" : "_doc", "_id" : "-hf6VHIBfClt6SDjw7H5", "_score" : 0.5945667, "_source" : { "productName" : "2017春装新款休闲裤女装", "size" : "S" } } ] } } Elasticsearch支持IK分词,上面执行命令会将“春装牛仔裤”分词为“春装”和“牛仔裤”。 Elasticsearch支持全文检索,上面执行命令会在所有商品信息中搜索包含“春装”或“牛仔裤”的商品信息。 Elasticsearch与传统数据库不同,它能借助倒排索引在毫秒级返回结果。 Elasticsearch支持评分排序,在上面返回结果中,前两条商品信息中同时出现了“春装”和“牛仔裤”,后两条商品信息中只出现了“春装”,所以前两条比后两条与检索关键词的匹配度更高,分数更高,排序也更靠前。 聚合结果显示 该电商网站可以提供聚合结果显示功能,例如: 对“春装”对应的产品按照尺码分类,统计不同尺码的数量。 在Kibana执行如下聚合结果命令。 GET /my_store/_search { "query": { "match": { "productName": "春装" } }, "size": 0, "aggs": { "sizes": { "terms": { "field": "size" } } } } 返回结果如下所示。 { "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "sizes" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "S", "doc_count" : 2 }, { "key" : "L", "doc_count" : 1 }, { "key" : "M", "doc_count" : 1 } ] } } }
  • 场景描述 某女装品牌在网上经营电商业务,以前使用传统数据库来为用户提供商品搜索功能,但随着用户数量和业务的增长,使用传统数据库的弊端愈来愈明显。主要问题表现为响应速度慢、准确性低。为了改善用户体验从而避免用户流失,该电商网站开始使用 云搜索服务 为用户提供商品搜索功能,不仅解决了之前使用传统数据库产生的问题,而且实现了用户数量的增长。 假设该电商网站经营商品的数据如下所示: { "products":[ {"productName":"2017秋装新款文艺衬衫女装","size":"L"} {"productName":"2017秋装新款文艺衬衫女装","size":"M"} {"productName":"2017秋装新款文艺衬衫女装","size":"S"} {"productName":"2018春装新款牛仔裤女装","size":"M"} {"productName":"2018春装新款牛仔裤女装","size":"S"} {"productName":"2017春装新款休闲裤女装","size":"L"} {"productName":"2017春装新款休闲裤女装","size":"S"} ] }
  • 步骤2:导入数据 Elasticsearch集群支持通过多种方式导入数据,本示例选择在Kibana使用开源Elasticsearch API导入数据。 在Elasticsearch集群管理页面,选择已创建的“Sample-ESCluster”集群,单击操作列中的“Kibana”进入Kibana控制台。 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。 Console左侧区域为输入框,输入框右侧的三角形为执行命令按钮,Console右侧为结果输出区域。 图5 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”时,表示导入数据成功。
  • 操作流程 以下是使用Elasticsearch集群完成数据搜索的操作步骤。 开始迁移数据前,请务必按准备工作指导完成必要操作。 步骤1:创建集群:创建一个Elasticsearch非安全集群用于搜索数据。 步骤2:导入数据:在Kibana上使用开源Elasticsearch API导入数据。 步骤3:搜索数据:在Elasticsearch集群中对数据进行全文检索和聚合结果显示。 步骤4:删除索引:当不再使用对应的索引数据时,可以删除对应索引节约资源。
  • 操作流程 以下是使用Logstash集群将源Elasticsearch集群迁移到目标Elasticsearch集群的操作步骤。 开始迁移数据前,请务必按准备工作指导完成必要操作。 步骤1:获取Elasticsearch集群信息:获取源Elasticsearch集群和目标Elasticsearch集群的访问地址。 步骤2:创建Logstash集群:创建一个Logstash集群用于迁移Elasticsearch集群的数据。 步骤3:配置迁移任务:在Logstash集群配置Elasticsearch集群的迁移任务。 步骤4:启动迁移任务:在Logstash集群启动配置好的迁移任务。 步骤5:停止任务:当数据迁移完成,不再需要迁移任务时,您可以停止任务。 步骤6:删除集群:无需继续使用集群时,可删除集群释放资源。
  • 步骤3:配置迁移任务 在Logstash集群配置Elasticsearch集群的迁移任务。 在Logstash集群管理页面,选择已创建的“Sample-Logstash”集群,进入集群基本信息页面。 单击右侧“配置中心”,进入Logstash配置中心界面。 图6 Logstash配置中心界面 在配置中心界面,单击右上角“创建”,进入创建配置文件页面,编辑配置文件。 图7 配置任务 表5 创建配置文件参数说明 参数 说明 取值样例 名称 自定义配置文件名称。 只能包含字母、数字、中划线或下划线,且必须以字母开头。必须大于等于4个字符。 es-es 配置文件内容 展开上方“系统模板”,选择“elasticsearch”,单击操作列的“应用”,在配置文件内容中,基于模板注释填写配置项。 关键配置项请参见表6,其他配置项保持默认值。 隐藏内容列表 配置隐藏字符串列表后,在返回的配置内容中,会将所有在列表中的字串隐藏为“***”。 输入需要隐藏的敏感字串列表,按“Enter”创建。 列表最大支持20条,单个字串最大长度512字节。 不涉及 表6 配置项说明 配置 说明 取值样例 hosts 分别在input和output中填写源Elasticsearch集群和目标Elasticsearch集群的访问地址。获取方式请参见步骤1:获取Elasticsearch集群信息。 input hosts:http://10.62.179.32:9200 output hosts:http://10.62.179.33:9200 user 访问Elasticsearch集群的用户名。仅安全集群涉及,如果是非安全集群则此项使用“#”注释掉。 使用“#”注释掉 password 访问Elasticsearch集群的密码。仅安全集群涉及,如果是非安全集群则此项使用“#”注释掉。 使用“#”注释掉 index 需要迁移的索引信息,可以使用通配符设置。 index* 编辑完成后,单击“下一页”配置Logstash管道参数。 图8 配置管道参数 表7 管道参数说明 参数 说明 取值样例 pipeline.workers 并行执行管道的Filters和Outputs阶段的工作线程数。 4 pipeline.batch.size 单个工作线程在尝试执行其Filters和Outputs之前将从inputs收集的最大事件数,该值较大通常更有效,但会增加内存开销。 125 pipeline.batch.delay 创建管道事件批时,在将过小的批调度到管道工作线程之前,等待每个事件的时间。 50 query.type 用于事件缓冲的内部队列模型。 “memory”为基于内存的传统队列。 “persisted”为基于磁盘的ACKed持久化队列。 memory 配置完成后,单击“创建”,系统会自动进行配置文件校验,等待配置文件状态为“可用”,表示创建成功。 图9 配置文件校验
  • 准备工作 已 注册华为账号 并开通华为云,进行了实名认证,且在使用 云搜索 服务前检查账号状态,账号不能处于欠费或冻结状态。 如果您还没有华为账号,请参考以下步骤创建。 打开华为云网站。 在页面右上角单击“注册”,根据提示信息完成注册。 勾选服务条款, 单击“开通”。 实名认证,请参考: 个人账号:实名认证 企业账号:实名认证 已准备好源Elasticsearch集群“Source-ES”和目标Elasticsearch集群“Dest-ES”,且都是单节点的非安全集群。
  • 步骤4:启动迁移任务 在Logstash集群启动配置好的迁移任务。 在Logstash集群管理页面,选择已创建的“Sample-Logstash”集群,进入集群基本信息页面。 单击右侧“配置中心”,进入Logstash配置中心界面。 选择状态为“可用”的配置文件,单击“启动”,启动配置任务。管道列表中“事件”列显示配置任务处理的任务数量。 图10 启动配置任务 数据迁移完毕,检查目标Elasticsearch集群和源集群数据的一致性。例如,分别在源集群和目标集群执行_cat/indices命令,对比两者的索引信息是否一致。 在Elasticsearch集群管理页面,选择源Elasticsearch集群“Source-ES”或目标Elasticsearch集群“Dest-ES”,单击操作列中的“Kibana”进入Kibana控制台。 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。 在Console界面,执行如下命令查看索引信息。 _cat/indices
  • 与其他服务之间的关系 CSS与其他服务的关系如图1所示。 图1 CSS与其他服务的关系 表1 CSS服务于其他服务的关系 相关服务 交互功能 虚拟私有云(Virtual Private Cloud,简称VPC) 云搜索服务CSS的集群创建在虚拟私有云(VPC)的子网内,VPC通过逻辑方式进行网络隔离,为用户的集群提供安全、隔离的网络环境。详细请参考虚拟私有云用户指南。 弹性云服务器(Elastic Cloud Server,简称ECS) 云搜索服务CSS的集群中每个节点为一台弹性云服务器(ECS)。创建集群时将自动创建弹性云服务器作为节点。 云硬盘(Elastic Volume Service,简称EVS) 云搜索服务CSS使用云硬盘(EVS)存储索引数据。创建集群时,将自动创建云硬盘用于集群存储。 对象存储服务(Object Storage Service,简称OBS) 云搜索服务CSS的集群快照存储在对象存储服务(OBS)的桶中。详细请参考对象存储服务用户指南。 统一身份认证 服务(Identity and Access Management,简称IAM) 云搜索服务CSS使用统一身份认证服务(IAM)进行鉴权。详细请参考统一身份认证服务用户指南。 云监控服务 (Cloud Eye) 云搜索服务使用 云监控 服务实时监测集群的指标信息,保障服务正常运行。云搜索服务当前支持的监控指标为磁盘使用率和集群健康状态。用户通过磁盘使用率指标可以及时了解集群的磁盘使用情况。通过集群健康状态指标,用户可以了解集群的健康状态。详细请参考云监控服务用户指南。 云审计 服务(Cloud Trace Service,简称 CTS ) 云审计服务(CTS)可以记录与CSS云搜索服务相关的操作事件,便于日后的查询、审计和回溯。详细请参考云审计服务用户指南。
  • 原因分析 导致出现I/O Reactor STOPPED的原因,大致可以分为以下3类: 回调中抛出异常导致。 客户端并发太高导致。 在日志中发现异常后,查看ElasticSearch集群监控指标,如CPU使用率、网络连接数等。 当用户集群配置为5台16U128G的i3.4xlarge.8节点时,且每天上午5点左右会做大量bulk操作,写入大概100G-200G的数据,根据集群监控指标的CPU使用率、网络流入流出速率来看对ElasticSearch节点造成不了压力,网络连接数较高,其它节点情况也相同。但是,有的节点网络连接数高达近9000,5个节点瞬间有将近5万连接数,用户的代码大致是用同一个Rest Client多个线程并发且调用HLRC的bulkAsync接口。客户端一个节点,单是ES的连接就消耗了4-5万个连接数,这种情况很容易造成客户端节点句柄数耗尽,或者连接数耗尽。 ElasticSearch的Rest client导致。建议ElasticSearch完善Rest client,添加exception handler。 Apache(HLRC和LLRC都使用了Apache HTTPComponents Async Client)手册中提到,在与会话通道交互过程中有些I/O异常是可以预料的,这些异常可能会导致单个session终止,但不会影响I/O Reactor和其他session。但某些情况下,当I/O Reactor本身遇到内部问题是,例如底层NIO的一些类中的I/O异常或者没被handle的一些Runtime Exception。这些异常是致命的,会使I/O Reactor关闭。Apache官方建议重写IOReactorExceptionHandler接口。 图3 重写IOReactorExceptionHandler接口 但是尝试了重写ExceptionHandler并放到HLRC的配置中,并通过在回调中抛出异常来模拟异常场景,最后发现这种回调的异常并不会被IOReactorExceptionHandler捕获,运行脚本后也没有异常抛出,所以此处IOReactorExceptionHandler的实现并不好验证。通过ElasticSearch社区issue中其他开发者的验证,添加了IOReactorExceptionHandler后跑很久也不会有问题。所以建议添加IOReactorExceptionHandler,但是注意不要忽略所有异常。 Elasticsearch Rest Client需要有一个exception handler,而不是让用户通过设置IOReactorExceptionHandler来处理异常,且这种方式也不会解决所有的异常。
  • I/O Reactor STOPPED是什么问题? 首先根据调用栈可以定位到报错来自CloseableHttpAsyncClientBase中的90行,如下图所示: ensureRunning()方法是在每次请求执行开始的时候调用,用来确认client状态是否为ACTIVE,如果不是ACTIVE,则会报错。然后观察CloseableHttpAsyncClientBase中的status何时会变成STOPPED,发现有且仅有两处会set为STOPPED,如下图所示: 图1 第一处STOPPED 图2 第二处STOPPED 由于客户不会手动关闭客户端之后再调用接口,所以有且仅有第一处会导致status切换为STOPPED状态。 对于第一处STOPPED,reactorThread线程是用来在io events发生时调度io events,当内部抛出异常时,最终会将status改为STOPPED状态。然后在bulkAsync请求的回调中抛出异常验证status的状态切换,如下图所示: 当请求失败,status会切换为STOPPED且I/O Reactor将关闭,并使HLRC实例卡住。后续使用该HLRC实例调用任何请求都会失败。此处手动抛出异常是为了复现问题,生产环境中很难分辨是什么原因导致I/O Reactor关闭。
  • 统计图表类型 支持使用表格、柱状图、折线图等图表类型展示不同场景数据,详细请参考表1。 表1 图表类型 图表类型 使用场景 表格 表格是最常见的数据展示类型,通过对数据结构化的整理,实现数据的对比与统计。大多数场景均适用。 柱状图 柱状图描述的是分类数据,直观表现每一个分类项的大小对比关系。统计近一天各错误码类型出现的次数等分类统计场景适用。 折线图 折线图需要统计数据具备时序字段,依据时间顺序组织与聚合指标。可直观反映指标随时间的变化趋势。 饼图 饼图描述的是不同分类的占比情况,通过扇区大小来衡量各分类项的占比情况。错误码占比情况分析等占比统计场景适用。 数字图 数字图描述的是单个指标,一般选择具备有业务价值的关键性指标。统计天、周、月PV、UV等单指标场景适用。 数字折线图 折线图和数字图的组合。折线图用于表示数据趋势和变化的,数字图则展示关键性指标。在一些需要同时显示趋势和关键数据点的场合适用。 地图 地图通过图形的位置来表现数据的地理位置,通常来展示数据在不同地理区域上的分布情况。攻击IP地理分布等地理位置统计场景适用。 漏斗图 漏斗图适用于单流向单路径的业务流程,对各环节进行统计并用梯形面积表示某个环节业务量与上一个环节之间的差异。
  • 分析日志 登录 云日志 服务控制台,进入“日志管理”页面。 单击目标日志组或日志流名称,进入日志详情页面。 选择“ 日志分析 ”页签。 在可视化页面支持交互式分析,通过该模块配置简单的分析语句,查询可视化数据,配置可视化图表。设置过滤条件,通过添加指标、添加分组、添加排序进行数据分析,方便用户操作。 选择时间范围,参考SQL分析语法介绍输入SQL语句,单击“查询”,在下方区域通过不同类型图表展示搜索结果。 时间范围有三种方式,分别是相对时间、整点时间和自定义。您可以根据自己的实际需求,选择时间范围。 相对时间:表示查询距离当前时间1分钟、5分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置相对时间1小时,表示查询18:20:31~19:20:31的日志数据。 整点时间:表示查询最近整点1分钟、15分钟等时间区间的日志数据。例如当前时间为19:20:31,设置整点时间1小时,表示查询18:00:00~19:00:00的日志数据。 自定义:表示查询指定时间范围的日志数据。 SQL查询约束有: 单次查询返回结果最多10W条。 当聚合结果超过10W时,聚合结果可能存在误差。 SQL查询语句中,string类型的where条件的键值有限制: 精确查找value需添加英文单引号, 模糊查找value需添加英文单引号或者双引号,key与SQL内置保留字段名称相同时需添加英文双引号。 建议使用where条件时,使用where "key"='value',或者where "key" like '%value%'。 SQL查询语句中,float和long类型的where条件不受限制,但当与关键词冲突时可能会导致查询异常,建议使用where "key"='value',或者where "key" like '%value%'进行查询。 日志搜索框支持自定义上下拖动调整高度。 输入搜索语法后,单击设置格式化sql和反格式化sql,优化搜索语句,提高搜索效率。 当设置时间范围内日志量超过10亿行时会触发迭代查询,可以通过迭代查询分多次完成全部日志的查询,界面会显示“查询状态:结果精确”。 根据SQL查询返回的数据,依照业务需求选择不同图表类型,呈现查询结果。详细请参考使用统计图表将日志可视化。 对查询结果可执行如下操作: 单击“新建”,在弹出的“创建可视化图表”中,根据业务需求填写“图表名称”,开启“同时添加到仪表盘”,单击“确定”,可视化图表保存成功。 单击“保存”,对在弹出的“保存可视化图表”中,根据业务需求填写“图表名称”,开启“同时添加到仪表盘”,单击“确定”,可视化图表保存成功;当选中某个可视化图表时,单击“保存”,可对该图表进行修改。 单击“另存为”,在弹出的“另存为可视化图表”中,根据业务需求填写“图表名称”,开启“同时添加到仪表盘”,单击“确定”,对已有可视化图表进行复制。 须先保存一个图表后,才可另存为可视化图表。 单击“下载”,可下载当前SQL查询结果的可视化数据,该文件为.csv。 单击按钮添加告警,在弹出的“新建告警规则”中,为选中的可视化图表配置创建SQL告警规则。 须先保存一个图表后,才能新建告警规则。 单击“展开图表”,可对当前日志流下的可视化图表展开;单击“收起图表”,可收起当前日志流下展开的可视化图表。
  • 数据类型 SQL查询中支持的数据类型如表1。如果当前字段数据类型需要改为其他数据类型,我们会进行数据类型的转换。例如STRING类型的字段转为LONG类型。字段数据类型转换之后的结果将会显示默认值,如STRING类型的数据转换为LONG类型的数据,结果会显示为LONG类型的默认值0。同理,当空值被转换为非空类型值时,也会使用默认值进行替换。例如,当把STRING类型空值转换为数字类型时,将会返回默认值0。 SQL语法中,字符必须被单引号('')包裹,无符号或双引号("")包裹的为字段或表名称,如:'msg'表示字符串msg,msg或"msg"表示日志结构化msg字段。 表1 SQL查询支持的数据类型 原生数据类型 默认值 说明 STRING "" 原生STRING类型 FLOAT 0.0 原生FLOAT类型 LONG 0 原生LONG类型
  • 计费示例 以全文索引使用场景为例。 图中价格仅为示例,实际计算请以价格计算器中的价格为准。 假设您有1台服务器,每天产生100GB原始日志,并开启全文索引,日志存储时长30天(存储日志的时长,只存30天的日志,第31天则会删除第一天的日志)。开启智能冷存储后,标准存储层数据保存时间为7天,则冷存储时长为30-7=23天,具体明细如下表所示。 表2 计费明细表(全文索引使用场景) 计费项 说明 使用量 单价 月计费 读写流量 每天读写流量100GB/5(压缩倍率)=20GB(压缩后),30天累计20GB*30=600GB 600GB 0.18元/GB (600GB-500MB/1024) *0.18=107.91元 索引流量 索引流量为100GB*30=3000GB 3000GB 0.32元/GB (3000GB-500MB免费额度/1024) *0.32=959.84元 标准存储 标准存储量为100GB/天*7天=700GB 700GB 0.000479元/GB/小时 (700GB-500MB免费额度/1024)*0.000479*24小时*30天=241.25元 冷存储 冷存储量为100GB/天*23天=2300GB 2300GB 0.000208元/GB/小时 2300GB*0.000208*24小时*30天=344.45元 日志基础转储流量 日志基础转储流量为100GB/天*30天=3000GB 3000GB 0.05元/GB 3000GB*0.05=150元 日志高级转储流量 日志高级转储流量为100GB/天*30天=3000GB 3000GB 0.2元/GB 3000GB*0.2=600元
  • 计费说明 如图1所示,云日志服务的计费项由日志读写流量、日志索引流量、日志存储量、日志基础转储流量和日志高级转储流量费用组成。具体内容请查看表1。 如您需要快速了解LTS服务的具体价格,请参见LTS价格详情。 如果每月免费赠送的额度已经可以满足您的使用需求,超过后希望暂停日志收集,可以在配置中心进行设置,详情请参见:配置中心。 图1 计费项 表1 计费组成表 费用类别 计费项 计费说明 付费方式 免费额度 存储费用 标准存储量 原始日志(含备份,压缩后)所产生的存储量。 例如原始日志为10GB,上传到云日志服务后,原始日志(含备份,压缩后)还是10GB。 按量付费: 标准存储量费用=标准存储量(GB)× 每GB单价 500 MB/月 冷存储量 原始日志(含备份,压缩后)所产生的存储量。 例如原始日志为10GB,上传到云日志服务后,原始日志(含备份,压缩后)还是10GB。 按量付费: 冷存储量费用=冷存储量(GB)× 每GB单价 无 流量费用 日志读写流量 日志读写流量包括写流量和读流量,详细说明如下: 写流量:数据(压缩后)被上传到日志服务时,按照传输的数据量计算写流量费用。 例如:原始数据量为5GB,则上传到云日志服务会产生1GB(压缩率20%)的写流量。 读流量:读流量暂未统计和收费。 按量付费: 读写流量费用= 写流量(GB,20%压缩率)× 每GB单价 500 MB/月 日志索引流量 日志索引流量,详细说明如下: 原始日志数据默认会构建全文索引,按照日志(未压缩)被构建索引所产生的索引数据量计算索引流量。 在写入数据时一次性收取索引流量费用,即全文索引流量费用。 对同时构建了全文索引和字段索引的字段,只计算一次索引流量费用,即全文索引流量费用。 当关闭全文索引,仅开启字段索引,则long类型和float类型的字段名将不记入索引流量中,每个字段值占用的索引流量统一为8字节。如果是String类型,则日志字段名(Key)和字段值(Value)都将作为text类型存储,字段名和字段值都被计入索引流量中。使用字段索引,可降低索引流量费用。 示例: 对request_uri字段名设置了索引(String类型),字段值为/request/path,则字符串request_uri和/request/path都会被计入索引流量中。 对status字段名设置了索引(long类型),字段值为400,则字段名status不会被计入在索引流量中,字段值400的索引流量统一为8字节。 说明: 字段索引的自定义分词符和特殊分词符仅支持白名单用户提交工单申请使用。详细操作请参考提交工单。 示例: 例如:原始日志量为10GB,写入到日志服务并开启全文索引,则索引流量以10GB 计费。 例如:原始日志量为10 GB,写入到日志服务并关闭全文索引开启其中两个字段的索引,这两个字段的数据量为5GB,则索引流量以5GB 计费。 例如:原始日志量为10GB,写入到日志服务并开启全文索引和其中两个字段的索引,则索引流量以10GB计费。 按量付费: 日志索引费用=索引流量(GB)× 每GB单价 500 MB/月 转储费用 转储费用只统计用户的日志字段,LTS的内置保留字段不参与流量统计。 但是日志转储至OBS、DIS后,储存日志等功能由OBS和DIS独立计费,收费详情请参见:华为云 定价 。 说明: 目前华北-北京一、华北-北京二、华南-广州-友好用户环境、华南-深圳、西南-贵阳一、华东-上海二、华东-青岛、华北-乌兰察布一局点已全部开启日志转储计费功能。 提供如下转储日志样例,方便进行流量统计举例说明:原始日志:"192.168.0.1 200 190 /check" 该日志被结构化解析后为:{"ip":"192.168.0.1","status":200,"cost_time":190,"url":"/check"} 日志基础转储流量 转储OBS(原始日志格式/JSON格式)、转储DMS、转储DIS属于日志基础转储,典型特征是源日志流和转储目标之间不需要字段映射,日志基础转储算力消耗相对日志高级转储较少。 转储流量会统计非压缩的转储数据量,以转储DMS流量统计为例: 若用户转储原始日志:LTS会统计转储的原始日志的大小(非压缩),那么统计的转储流量是length("192.168.0.1 200 190 /check")=26字节 若用户转储结构化解析后的日志:LTS会统计转储日志的KEY和VALUE的大小(非压缩),数字统一按照8字节,那么统计的转储流量是length("ip")+length("192.168.0.1")+length("status")+8+length("cost_time")+8+length("url")+length("/check")=2+11+6+8+9+8+3+6=53字节 按量付费: 日志基础转储流量费用=转储流量(GB,非压缩)× 每GB单价 无 日志高级转储流量 转储OBS(ORC格式)、转储DWS、转储 DLI 属于日志高级转储,典型特征是源日志流和转储目标之间需要字段映射,日志高级转储算力消耗相对日志基础转储较多。 转储流量会统计非压缩的转储数据量,以转储DWS流量统计为例: 若用户将转储日志样例中的ip、status、cost_time、url 4个字段都转储到DWS数仓中,那么LTS会统计转储日志的每个字段的VALUE的大小(非压缩),数字统一按照8字节,那么统计的转储流量是length("192.168.0.1")+8+8+ length("/check")=11+8+8+6=33字节 按量付费: 日志高级转储流量费用=转储流量(GB,非压缩)× 每GB单价 无
  • 使用流程 图1 轮转密码流程 流程说明如下: 定时触发器到期后,会发布定时触发事件。 函数工作流 接收到事件后,会生成新的随机密码,替换凭据模板内容中的占位符,随后将替换后的内容作为新版本存入凭据中。 应用程序定期通过调用API/SDK获取最新凭据版本。 凭据管理服务检索并解密凭据密文,将凭据中保存的信息通过凭据管理API安全地返回到应用程序中。 应用程序获取到解密后的凭据明文信息,使用新密码更新目标对象(数据库、服务器等),使新密码生效,后续使用新密码对目标对象进行访问。
  • 解决方案 用户需要在KMS中创建一个用户主密钥。 用户计算文件的摘要,调用KMS的“sign”接口对摘要进行签名。用户得到摘要的签名结果。将摘要签名结果和密钥ID与文件一同传输或者存储。签名流程如图 签名流程所示。 图1 签名流程 用户需要使用文件时,先进行完整性校验,确保文件未被篡改。 用户重新计算文件的摘要,连同签名值调用KMS的“verify”接口对摘要进行验签。用户得到验签结果。如果能正常验签,则表明文件未被篡改。验签流程如图 验签流程所示。 图2 验签流程
  • 组件说明 表1 dew-provider组件 容器组件 说明 资源类型 dew-provider dew-provider负责与凭据管理服务交互,从凭据管理服务中获取指定的凭据,并挂载到业务Pod内。 DaemonSet secrets-store-csi-driver secrets-store-csi-driver负责维护两个CRD资源,即SecretProviderClass(以下简称为SPC)和SecretProviderClassPodStatus(以下简称为spcPodStatus),其中SPC用于描述用户感兴趣的凭据信息(比如指定凭据的版本、凭据的名称等),由用户创建,并在业务Pod中进行引用;spcPodStatus用于跟踪Pod与凭据的绑定关系,由csi-driver自动创建,用户无需关心。一个Pod对应一个spcPodStatus,当Pod正常启动后,会生成一个与之对应的spcPodStatus;当Pod生命周期结束时,相应的spcPodStatus也会被删除。 DaemonSet
共100000条