华为云用户手册

  • 智能采样算法 APM 系统会采用智能采样算法,决定是否对请求进行调用链跟踪。 如果决定要跟踪,那么就会生成一个TraceID,拦截A下面的一些重要方法(一般具有树结构父子关系)的详细信息(称为event),同时APM会将TraceID透传到B,B也会拦截下面的重要方法,同时透传TraceID到C,C也跟B和A类似。每个节点分别上报event信息,通过TraceID形成关联,这样通过TraceID就可以查看整个请求的调用详情。 如果决定不跟踪,那么就不会生成TraceID,B服务由于没有收到TraceID,自身也会产生跟A服务一样的算法,决定是否要进行调用链跟踪。 数据上报后,APM系统除了会存储所有event详情,同时会将每个服务的根event(称为span)信息额外存储起来,用于后续调用链搜索。用户一般是先搜索到span信息,然后根据span信息上附带的TraceID获取到总体调用链详情。 调用链采样策略系统默认是智能采样,url分为错误url、慢url(默认800ms、用户自定义配置)、正常url三种url,每种url调用链数据的采样率单独计算。APM的统计数据是一分钟采集上报一次,第一个采集周期所有url调用链数据都按正常url采样。第二个采集周期时,根据上一个采集周期的统计数据,将url分类为错误url、慢url、正常url三种url。 错误url的采样率:cpu小于30%每分钟采集100条,cpu大于或等于30%小于60%每分钟采集50条,cpu大于或等于60%每分钟采集10条,每条url至少采集2条。 慢url的采样率:cpu小于30%每分钟采集100条,cpu大于或等于30%小于60%每分钟采集50条,cpu大于或等于60%每分钟采集10条,每条url至少采集2条。 正常url的采样率:cpu小于30%每分钟采集20条,cpu大于或等于30%小于60%每分钟采集10条,cpu大于或等于60%每分钟采集5条,每条url至少采集1条。 上述调用链算法优点是,一旦决定产生调用链信息,那么链路是完整的,帮用户做正确决策。对于大量调用的url,可能会采集不到异常请求,可以通过异常监控的指标采集等其他方式来定位系统中的异常。
  • 查看调用链详情 根据搜索条件查询出来的调用链列表可以查看调用链的基本信息 在查询后的调用链列表中,单击待查看的调用链前的,查看该调用链基本信息,如下图所示。 图1 调用链基本信息 表中标识的具体参数所代表的含义如下: 调用链的HttpMethod。 调用链的RestURL,Rest URL为restful风格的URL,URL中带有变量名称,如/apm/get/{id};单击该URL可以跳转到调用链的详情页面。 调用链的开始时间。 调用链返回的HTTP状态码。 调用链的响应时间。 调用链的TraceID。 调用链所在组件。 调用链所在环境。 调用链所在实例的主机名。 调用链所在实例的IP。 调用链的实际URL。 调用链支持“查看日志”功能。 在LTS服务侧,配置“采集配置”,详细操作参见 云日志 服务 LTS《用户指南》的E CS 接入章节。 单击“查看日志”,根据traceid跳转至LTS页面。LTS页面相关操作,请参见日志搜索。 如果未开通traceid关联日志,弹出“未关联日志服务”提示框。单击“跳转”,页面跳转至“关联日志服务”页面。“关联日志服务”详细操作,参见组件设置。 支持仅展示“请求成功”或“请求失败”调用链信息,以绿色“请求成功”按钮为例。 单击处于高亮状态的绿色“请求成功”按钮,仅展示“请求成功”的调用链信息,同时红色“请求失败”按钮置灰。 当红色“请求失败”按钮置灰时,单击处于高亮状态的绿色“请求成功”按钮,则展示所有调用链信息,同时红色“请求失败”恢复高亮。 绿色“请求成功”按钮和红色“请求失败”按钮,不支持同时置灰。 用户也可以从一些监控项视图页面,比如Url监控项的table视图,单击具体的Url跳转过来,这样就已经预先填写好搜索条件,帮助用户更快速搜索出所需要的调用链信息。 调用链详情页面可以查看调用链的完整链路信息,包含本地方法堆栈和相关远程调用的调用关系 单击调用链名称,可查看调用链详细信息,如下图所示。 上半部分为调用链完整链路的时序图,展示组件之间的完整调用关系,内部包含一次调用对应的客户端和服务器端的信息,然后线条越在下面,越晚发生调用。 下半部分为调用链详细的方法堆栈,每一行代表一个方法调用,展示了调用链内部方法的详细调用关系。默认只展示javaagent支持的组件方法,如需展示应用方法,可以在JavaMethod配置中配置需要拦截的应用方法。 图2 调用关系 表中标识的具体参数所代表的含义如下: 调用链的时序图中调用接口所属的组件和环境。 数字为接口调用的客户端响应时间,单位ms,具可将鼠标指针放置在该位置进行查看。 数字为接口调用的服务端响应时间,单位ms。 调用链方法堆栈中该方法对应的关键参数数据,如tomcat入口方法展示实际url、mysql的sql调用方法则展示具体执行sql。 调用链中调用所属的组件个数。 调用参数,单击查看调用中的参数列表。 更多信息,单击“查看”,展示对应的Spans详细信息。 时序图支持折叠,单击“收起时序图”,则时序图被折叠,不再展示。 图3 时序图折叠 单击“展开时序图”则时序图被展开,展示时序图。 单击,下载时序图图片。 单击“查看日志”,根据traceid跳转至LTS页面。详细介绍,参见“查看日志”章节。 调用链是“树”状结构,深度表示“树”状结构的层数。如图4所示。 图4 深度 调用链的时序图中,如下图。 使用不同类型探针或用户接入端接入时,图中1和2显示的内容不同,详见下表。 探针类型或用户接入的类型 显示内容 web前端 WEB 微信 WE_CHAT 百度 BAIDU 支付宝 ALIPAY 钉钉 DING_TALK 移动端App Android ANDROID 移动端App iOS IOS 移动端App Harmony HARMONY-APP 其它 user
  • 水印提取 当前仅支持对已通过水印注入注入暗水印的结构化数据文件(csv、xml和json)进行水印提取。 在 DataArts Studio 控制台首页,选择对应工作空间的“数据安全”模块,进入数据安全页面。 单击左侧导航树中的“文件水印”,然后选择“水印提取”,进入水印提取页面。 图2 进入水印提取页面 在水印提取页面输入基本信息,参数配置请参考表2。 表2 水印提取参数配置 参数名 参数描述 *数据类型 选择文件类型,当前仅支持结构化数据(csv、xml和json)。 结构化数据文件类型支持注入暗水印,水印内容不可见,需要进行水印提取。 *水印内容 无需填写,执行提取水印后会显示提取到的水印信息。 *数据选择 选择已通过水印注入注入暗水印的结构化数据文件(csv、xml和json)。 单击“提取水印”,完成文件水印提取,水印内容参数展示提取后的水印内容。 单击“重置”可重置配置参数至默认状态。
  • 约束与限制 结构化数据文件暗水印的注入和提取时,需限制文件大小在4MB之内。 非结构化数据文件明水印在注入时,需限制文件大小在20MB之内。 不支持为已注入水印的文件再次注入水印。 结构化数据文件水印嵌入的数据有以下要求: 待嵌入水印的源数据需要大于等于5000行。小于5000行的源数据有可能因为特征不够导致提取水印失败。 尽量选取数据取值比较多样的列嵌入水印,如果该列的值是可枚举穷尽的,则有可能因为特征不够导致提取失败。常见的适合嵌入水印的列如地址、姓名、UUID、金额、总数等。 数值整型字段嵌入水印可能会出现数据被修改的情况,请选择可以接受值发生改变的字段插入水印。 结构化数据文件的水印提取与数据水印的水印溯源任务无关。仅支持同一账号下用户对已通过水印注入或动态水印注入水印后的结构化数据文件进行水印提取。
  • 水印注入 在DataArts Studio控制台首页,选择对应工作空间的“数据安全”模块,进入数据安全页面。 单击左侧导航树中的“文件水印”,默认进入水印注入页面。 图1 进入水印注入页面 在水印注入页面输入基本信息,参数配置请参考表1。 表1 水印注入参数配置 参数名 参数描述 *数据类型 选择文件类型。 结构化数据(csv、xml和json)。支持注入暗水印,水印内容不可见,需要进行水印提取。 非结构化数据(docx、pptx、xlsx和pdf)。支持注入明水印,可在本地打开水印文件查看效果。 结构化数据 *水印内容 系统会将水印标识嵌入到数据表中,标识长度不超过16个字符即可。 *数据选择 结构化数据仅支持csv、xml和json格式文件。 *选择注入字段 选择需要注入水印的字段。 非结构化数据 *水印内容 系统会将水印标识嵌入到数据表中,标识长度不超过16个字符即可。 透明度 选择明文水印标识的透明度。 旋转角度 选择明文水印标识的旋转角度。 字体大小 选择明文水印标识的字体大小。 *数据选择 非结构化数据仅支持docx、pptx、xlsx和pdf格式文件。 单击“注入水印”,完成文件水印注入,浏览器自动下载注入后的文件。 单击“重置”可重置配置参数至默认状态。
  • 生产消息 生产消息的示例代码如下(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 @SpringBootApplication public class ProduceDemoApplication implements CommandLineRunner { @Resource private RocketMQTemplate rocketMQTemplate; public static void main(String[] args) { SpringApplication.run(ProduceDemoApplication.class, args); } @Override public void run(String... args) throws Exception { // send message synchronously rocketMQTemplate.convertAndSend("topic", "Hello, World!"); // send spring message rocketMQTemplate.send( "topic", MessageBuilder.withPayload("Hello, World! I'm from spring message").build()); // send messgae asynchronously rocketMQTemplate.asyncSend( "topic", MessageBuilder.withPayload("Hello, World! I'm from spring message").build(), new SendCallback() { @Override public void onSuccess(SendResult var1) { System.out.printf("async onSucess SendResult=%s %n", var1); } @Override public void onException(Throwable var1) { System.out.printf("async onException Throwable=%s %n", var1); } }); // Send messages orderly rocketMQTemplate.syncSendOrderly( "topic", MessageBuilder.withPayload("Hello, World").build(), "hashkey"); } }
  • 准备环境 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 进入Go脚本所在的bin目录下。 执行“touch go.mod”命令新建一个“go.mod”,并增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-client-go/v2 v2.1.2 ) 执行如下命令增加代理。 export GOPROXY=https://goproxy.cn,direct 执行如下命令下载依赖。 go mod tidy
  • 订阅顺序消息 只需要在订阅普通消息的代码基础上增加consumer.WithConsumerOrder(true),参考如下示例代码(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/consumer" "github.com/apache/rocketmq-client-go/v2/primitive" ) func main() { c, _ := rocketmq.NewPushConsumer( consumer.WithGroupName("testGroup"), consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), consumer.WithConsumerModel(consumer.Clustering), consumer.WithConsumeFromWhere(consumer.ConsumeFromFirstOffset), consumer.WithConsumerOrder(true), //consumer.WithTls(true), //创建实例时,如果开启了SSL,请添加此行代码。 ) err := c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) { orderlyCtx, _ := primitive.GetOrderlyCtx(ctx) fmt.Printf("orderly context: %v\n", orderlyCtx) fmt.Printf("subscribe orderly callback: %v \n", msgs) return consumer.ConsumeSuccess, nil }) if err != nil { fmt.Println(err.Error()) } // Note: start after subscribe err = c.Start() if err != nil { fmt.Println(err.Error()) os.Exit(-1) } time.Sleep(time.Hour) err = c.Shutdown() if err != nil { fmt.Printf("Shutdown Consumer error: %s", err.Error()) } } 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 testGroup:表示消费组名称。 192.168.0.1:8100:表示实例连接地址和端口。 test:表示Topic名称。
  • 同步发送 同步发送是指消息发送方发出一条消息到服务端,服务端接收并处理消息,然后返回响应给发送方,发送方收到响应后才会发送下一条消息的通讯方式。 参考如下示例代码(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer" "os" ) // implements a simple producer to send message. func main() { p, _ := rocketmq.NewProducer( producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), producer.WithRetry(2), //producer.WithTls(true), //创建实例时,如果开启了SSL,请添加此行代码。 ) err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } msg := &primitive.Message{ Topic: "topic1", Body: []byte("Hello RocketMQ Go Client!"), } msg.WithTag("TagA") msg.WithKeys([]string{"KeyA"}) res, err := p.SendSync(context.Background(), msg) if err != nil { fmt.Printf("send message error: %s\n", err) } else { fmt.Printf("send message success: result=%s\n", res.String()) } err = p.Shutdown() if err != nil { fmt.Printf("shutdown producer error: %s", err.Error()) } } 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 192.168.0.1:8100:表示实例连接地址和端口。 topic1:表示Topic名称。
  • 订阅普通消息 参考如下示例代码(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/consumer" "github.com/apache/rocketmq-client-go/v2/primitive" ) func main() { c, _ := rocketmq.NewPushConsumer( consumer.WithGroupName("testGroup"), consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), //consumer.WithTls(true), //创建实例时,如果开启了SSL,请添加此行代码。 ) err := c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) { for i := range msgs { fmt.Printf("subscribe callback: %v \n", msgs[i]) } return consumer.ConsumeSuccess, nil }) if err != nil { fmt.Println(err.Error()) } // Note: start after subscribe err = c.Start() if err != nil { fmt.Println(err.Error()) os.Exit(-1) } time.Sleep(time.Hour) err = c.Shutdown() if err != nil { fmt.Printf("shutdown Consumer error: %s", err.Error()) } } 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 testGroup:表示消费组名称。 192.168.0.1:8100:表示实例连接地址和端口。 test:表示Topic名称。
  • 异步发送 异步发送是指消息发送方发出一条消息后,不等服务端返回响应,接着发送下一条消息的通讯方式。 使用异步发送需要客户端实现异步发送回调接口(SendCallback)。即消息发送方在发送了一条消息后,不需要等待服务端响应接着发送第二条消息。发送方通过回调接口接收服务端响应,并处理响应结果。 参考如下示例代码(以下加粗内容需要替换为实例自有信息,请根据实际情况替换)。 package main import ( "context" "fmt" "os" "sync" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer" ) // implements a async producer to send message. func main() { p, _ := rocketmq.NewProducer( producer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), producer.WithRetry(2), //producer.WithTls(true), //创建实例时,如果开启了SSL,请添加此行代码。 ) err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } var wg sync.WaitGroup wg.Add(1) callback := func(ctx context.Context, result *primitive.SendResult, e error) { if e != nil { fmt.Printf("receive message error: %s\n", err) } else { fmt.Printf("send message success: result=%s\n", result.String()) } wg.Done() } message := primitive.NewMessage("test", []byte("Hello RocketMQ Go Client!")) err = p.SendAsync(context.Background(), callback, message) if err != nil { fmt.Printf("send message error: %s\n", err) wg.Done() } wg.Wait() err = p.Shutdown() if err != nil { fmt.Printf("shutdown producer error: %s", err.Error()) } } 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 192.168.0.1:8100:表示实例连接地址和端口。 test:表示Topic名称。
  • 准备环境 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 进入Go脚本所在的bin目录下。 执行“touch go.mod”命令新建一个“go.mod”,并增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-client-go/v2 v2.1.2 ) 执行如下命令增加代理。 export GOPROXY=https://goproxy.cn,direct 执行如下命令下载依赖。 go mod tidy
  • 消费者增加用户认证信息 无论是普通消息、顺序消息、定时消息,还是事务消息,都参考如下代码。以下加粗内容需要替换为实例自有信息,请根据实际情况替换。 package main import ( "context" "fmt" "os" "time" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/consumer" "github.com/apache/rocketmq-client-go/v2/primitive" ) func main() { c, err := rocketmq.NewPushConsumer( consumer.WithGroupName("testGroup"), consumer.WithNsResolver(primitive.NewPassthroughResolver([]string{"192.168.0.1:8100"})), consumer.WithCredentials(primitive.Credentials{ AccessKey: os.Getenv("ACL_User_Name"), //用户名和密钥直接硬编码到代码中或者明文存储都存在很大的风险,建议在配置文件或者环境变量中密文存放,使用时解密。 SecretKey: os.Getenv("ACL_Secret_Key"), }), //consumer.WithTls(true), //创建实例时,如果开启了SSL,请添加此行代码。 ) if err != nil { fmt.Println("init consumer error: " + err.Error()) os.Exit(0) } err = c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) { fmt.Printf("subscribe callback: %v \n", msgs) return consumer.ConsumeSuccess, nil }) if err != nil { fmt.Println(err.Error()) } // Note: start after subscribe err = c.Start() if err != nil { fmt.Println(err.Error()) os.Exit(-1) } time.Sleep(time.Hour) err = c.Shutdown() if err != nil { fmt.Printf("Shutdown Consumer error: %s", err.Error()) } } 示例代码中的参数说明如下,请参考收集连接信息获取参数值。 testGroup:表示消费组名称。 192.168.0.1:8100:表示实例连接地址和端口。 AccessKey:表示用户名。创建用户的步骤,请参见创建用户。 SecretKey:表示用户的密钥。 test:表示Topic名称。
  • 准备环境 执行以下命令,检查是否已安装Go。 go version 返回如下回显时,说明Go已经安装。 go version go1.16.5 linux/amd64 如果未安装Go,请下载并安装。 进入Go脚本所在的bin目录下。 执行“touch go.mod”命令新建一个“go.mod”,并增加以下代码,添加依赖。 module rocketmq-example-go go 1.13 require ( github.com/apache/rocketmq-client-go/v2 v2.1.2 ) 执行如下命令增加代理。 export GOPROXY=https://goproxy.cn,direct 执行如下命令下载依赖。 go mod tidy
  • 功能说明 云监控服务 (Cloud Eye)可以监控和查看云服务的运行状态、各个指标的使用情况,并对监控项创建告警规则。 当您创建了 CDM 集群后, 云监控 服务会自动关联CDM的监控指标,帮助您实时掌握CDM集群的各项性能指标,精确掌握CDM集群的运行情况。 本章节描述了CDM上报云监控的监控指标的命名空间、监控指标列表和维度定义。 如果您需要查看CDM相关的监控指标,请参见查看CDM监控指标。 如果您需要在监控数据满足指定条件时发送报警通知,可参见设置CDM告警规则。
  • 资源和成本规划 该解决方案主要部署如下资源,以下费用仅供参考,具体请参考华为云官网价格详情,实际收费以账单为准。 表1 资源和成本规划(按需计费) 华为云服务 资源名称 配置示例 数量 每月预估花费 虚拟私有云 VPC deploying-evalscope-demo VPC网段:172.16.0.0/16 区域:华北-北京四 1 0.00元 子网 Subnet deploying-evalscope-demo-subnet 子网网段:172.16.1.0/24 区域:华北-北京四 1 0.00元 安全组 SecurityGroup deploying-evalscope-demo-sg 允许ping:0.0.0.0/0 开放端口22允许Cloud Shell 登录:121.36.59.153/32 区域:华北-北京四 1 0.00元 Flexus云服务器X实例 deploying-evalscope-demo 按需计费:0.26元/小时 区域:华北-北京四 规格:Flexus云服务器X实例 | 性能模式(关闭)| x1.2u.4g | 2核 | 4GB 镜像:Ubuntu 22.04 server 64bit 系统盘:通用型SSD | 40GB 1 187.20元 弹性公网IP EIP deploying-evalscope-demo-eip 按需计费:0.80元/GB 区域:华北-北京四 线路:动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 1 0.80元/GB 合计 - 187.20元 + 弹性公网IP EIP费用 表2 资源和成本规划(包年包月) 华为云服务 资源名称 配置示例 数量 每月预估花费 虚拟私有云 VPC deploying-evalscope-demo VPC网段:172.16.0.0/16 区域:华北-北京四 1 0.00元 子网 Subnet deploying-evalscope-demo-subnet 子网网段:172.16.1.0/24 区域:华北-北京四 1 0.00元 安全组 SecurityGroup deploying-evalscope-demo-sg 允许ping:0.0.0.0/0 开放端口22允许Cloud Shell 登录:121.36.59.153/32 区域:华北-北京四 1 0.00元 Flexus云服务器X实例 deploying-evalscope-demo 包年包月 区域:华北-北京四 规格:Flexus云服务器X实例 | 性能模式(关闭)| x1.2u.4g | 2核 | 4GB 镜像:Ubuntu 22.04 server 64bit 系统盘:通用型SSD | 40GB 1 136.00元 弹性公网IP EIP deploying-evalscope-demo-eip 按需计费:0.80元/GB 区域:华北-北京四 线路:动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 1 0.80元/GB 合计 - 136.00元 + 弹性公网IP EIP费用
    AI
  • 操作步骤 登录华为云解决方案实践,选择“快速搭建EvalScope模型性能评测平台”,单击“一键部署”,跳转至解决方案创建资源栈界面。 图1 解决方案实施库 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,参考“表1 参数填写说明”完成自定义参数填写,部分参数会自动默认填充参数值。如需修改请在参数配置页面删除文本框内的默认值后填写新的参数值,所有参数填写完成后方可单击“下一步”。 图3 配置参数 表1 参数填写说明 参数名称 类型 是否可选 参数解释 默认值 vpc_name string 必填 虚拟私有云名称,同时作为子网、安全组的名称前缀,该模板使用新建VPC,不允许重名。取值范围:1-57个字符,支持中文、英文字母、数字、_(下划线)、-(中划线)、.(点)。 deploying-evalscope-demo ecs_name string 必填 云服务器实例名称,同时作为弹性公网 IP及其带宽的名称前缀,不支持重名。取值范围:1-54个字符,支持中文、英文字母、数字、_(下划线)、-(中划线)、.(点)。 deploying-evalscope-demo ecs_flavor string 必填 云服务器实例规格,支持弹性云服务器 ECS及华为云Flexus 云服务器X实例。Flexus 云服务器X实例规格ID命名规则为x1.?u.?g,例如2vCPUs4GiB规格ID为x1.2u.4g,具体华为云Flexus 云服务器X实例规格请参考控制台。弹性云服务器 ECS规格请参考部署指南配置。默认:x1.2u.4g。规格信息具体请参考官网弹性云服务器规格清单。 x1.2u.4g ecs_password string 必填 云服务器密码,长度为8-26位,密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。修改密码,请参考重置云服务器密码登录ECS控制台修改密码。管理员账户默认root。 空 system_disk_size number 必填 云服务器系统盘大小,磁盘类型默认为通用型SSD,单位:GB,取值范围为40-1,024,不支持缩盘。 40 charging_mode string 必填 云服务器计费模式,默认自动扣费,可选值为:postPaid(按需计费)、prePaid(包年包月)。 postPaid charging_unit string 必填 云服务器订购周期类型,仅当charging_mode为prePaid(包年/包月)生效,此时该参数为必填参数。取值范围:month(月),year(年)。 month chargeing_period number 必填 云服务器订购周期,仅当charging_mode为prePaid(包年/包月)生效,此时该参数为必填参数。取值范围:charging_unit=month(周期类型为月)时,取值为1-9;charging_unit=year(周期类型为年)时,取值为1-3。 1 (可选,如果使用华为主账号或admin用户组下的 IAM 子账户可不选委托)在资源设置界面中,在权限委托下拉框中选择“rf_admin_trust”委托,单击“下一步”。 图4 资源栈设置 在配置确认界面中,单击“创建执行计划”。 图5 配置确认 在弹出的创建执行计划框中,自定义填写执行计划名称,单击“确定”。 图6 创建执行计划 单击“部署”,并且在弹出的执行计划确认框中单击“执行”。 图7 执行计划 图8 执行计划确认 (可选)如果计费模式选择“包年包月”,在余额不充足的情况下(所需总费用请参考表2)请及时登录费用中心,手动完成待支付订单的费用支付。 待“事件”中出现“Apply required resource success”,堆栈部署成功,表示顺利完成资源的下发和部署。堆栈部署成功后,搭建EvalScope脚本开始执行,耐心等待10-20分钟左右(受网络波动影响)。 图9 部署完成
  • 资源和成本规划 资源和成本规划 该解决方案主要部署如下资源,以下费用仅供参考,具体请参考华为云官网价格详情,实际收费以账单为准。 表1 资源和成本规划(按需计费) 华为云服务 资源名称 配置示例 数量 每月预估花费 虚拟私有云 VPC deploying-evalscope-demo VPC网段:172.16.0.0/16 区域:华北-北京四 1 0.00元 子网 Subnet deploying-evalscope-demo-subnet 子网网段:172.16.1.0/24 区域:华北-北京四 1 0.00元 安全组 SecurityGroup deploying-evalscope-demo-sg 允许ping:0.0.0.0/0 开放端口22允许Cloud Shell 登录:121.36.59.153/32 区域:华北-北京四 1 0.00元 Flexus云服务器X实例 deploying-evalscope-demo 按需计费:0.26元/小时 区域:华北-北京四 规格:Flexus云服务器X实例 | 性能模式(关闭)| x1.2u.4g | 2核 | 4GB 镜像:Ubuntu 22.04 server 64bit 系统盘:通用型SSD | 40GB 1 187.20元 弹性公网IP EIP deploying-evalscope-demo-eip 按需计费:0.80元/GB 区域:华北-北京四 线路:动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 1 0.80元/GB 合计 - 187.20元 + 弹性公网IP EIP费用 表2 资源和成本规划(包年包月) 华为云服务 资源名称 配置示例 数量 每月预估花费 虚拟私有云 VPC deploying-evalscope-demo VPC网段:172.16.0.0/16 区域:华北-北京四 1 0.00元 子网 Subnet deploying-evalscope-demo-subnet 子网网段:172.16.1.0/24 区域:华北-北京四 1 0.00元 安全组 SecurityGroup deploying-evalscope-demo-sg 允许ping:0.0.0.0/0 开放端口22允许Cloud Shell 登录:121.36.59.153/32 区域:华北-北京四 1 0.00元 Flexus云服务器X实例 deploying-evalscope-demo 包年包月 区域:华北-北京四 规格:Flexus云服务器X实例 | 性能模式(关闭)| x1.2u.4g | 2核 | 4GB 镜像:Ubuntu 22.04 server 64bit 系统盘:通用型SSD | 40GB 1 136.00元 弹性公网IP EIP deploying-evalscope-demo-eip 按需计费:0.80元/GB 区域:华北-北京四 线路:动态BGP 公网带宽:按流量计费 带宽大小:300Mbit/s 1 0.80元/GB 合计 - 136.00元 + 弹性公网IP EIP费用
    AI
  • 配额限制 为防止资源滥用,平台限定了各服务资源的配额,对用户的资源数量和容量做了限制。UCS具有集群、舰队、权限、集群联邦,以及容器智能分析实例配额限制,如表1所示。若UCS提供的默认配额无法满足使用需要,您可以提交工单申请扩大配额。 集群配额:UCS支持接入的集群数量上限,华为云集群、本地集群、附着集群、多云集群和伙伴云集群的数量均占用该配额值。 舰队配额:用户拥有的舰队数量上限。 权限配额:用户可以在“权限管理”页面创建的权限数量上限。 集群联邦配额:用户可以开通的集群联邦数量上限。不可申请扩大配额。 容器智能分析实例配额:用户可以创建的容器智能分析实例数量上限。不可申请扩大配额。 表1 UCS配额项 配额项 默认配额值 集群 50 舰队 50 权限 50 集群联邦 1 容器智能分析实例 1 用户在使用UCS时也会使用其他云服务,例如弹性云服务器、云硬盘、虚拟私有云、弹性负载均衡、 容器镜像服务 、云解析服务等。其他云服务配额与UCS配额相互独立,由各服务自行管理,详情请参见关于配额。
  • 功能介绍 跨云、跨地域集群统一接入,统一管理 支持跨云、跨地域的集群统一接入、统一管理,支持接入华为云集群、本地集群、附着集群、伙伴云集群和多云集群。 集群配置跨云、跨地域统一下发,管理更简单 支持多云多集群配置策略的统一管理,支持企业级项目租户的权限管理,可以通过统一的策略管理中心完成多云多集群的合规性审计。 可视化监控洞察,运维更简单 支持立体化监控运维,并且兼容开源Prometheus和OpenTelemetry生态,拥有灵活的Dashboard,支持智能巡检、容器洞察、服务网格洞察。 算力统一调度,部署最优,运行最佳 基于Karmada内核,UCS可完成上千个分布式集群的统一接入,实现百万节点资源的协同调度,并拥有秒级响应速度。为用户提供了多种分布式部署策略,可以做到根据全局资源分布和业务特点,结合地理位置、网络QoS、资源均衡度等条件对应用进行最优化部署。 应用统一流量治理,提升业务体验 UCS可基于访问位置和业务策略对全域流量进行最优化调度,支持跨云多集群服务接入和流量管理,可实现基于权重、内容进行流量切分、灰度、故障倒换、熔断限流等功能。 应用数据协同,一键迁移 UCS实现了数据与业务一体化,围绕应用构建自动化的应用迁移、克隆能力,实现数据同步复制及跨云伸缩能力,支持存储层、容器层、中间件层等不同层次数据随应用场景实时联动,支撑应用容灾、扩容、迁移。 应用统一生态,全域可用 UCS拥有统一的服务规范,可真正实现应用开箱即用。通过自研部署引擎,统一服务生命周期管理,所有服务包统一管理、统一存储、全域分发,可实现跨云跨集群的一键部署。
  • URI POST /v1/ipdprojectservice/projects/{project_id}/feature-sets 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目的32位uuid,项目唯一标识,通过查询项目列表接口获取,响应消息体中的project_id字段的值就是项目ID 约束限制: 正则表达式,[A-Za-z0-9]{32} 取值范围: 不涉及 默认取值: 不涉及
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 status String 状态 message String 错误信息 result FeatureSetOperateParam object 特性集创建、修改参数 表4 FeatureSetOperateParam 参数 参数类型 描述 id String 特性集Id title String 特性集标题 position_float Float 特性集在目录树中的相对位置,从0F开始的浮点数,不支持科学计数法 parent_id String 父特性集Id,必填参数。 更新时需要移动特性集目录传入目标特性集Id,仅修改位置、标题属性时需要传入原父Id
  • URI PUT /v1/ipdprojectservice/projects/{project_id}/feature-sets/{feature_set_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目的32位uuid,项目唯一标识,通过查询项目列表接口获取,响应消息体中的project_id字段的值就是项目ID 约束限制: 正则表达式,[A-Za-z0-9]{32} 取值范围: 不涉及 默认取值: 不涉及 feature_set_id 是 String 特性集Id
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 status String 状态 message String 错误信息 result FeatureSetOperateParam object 特性集创建、修改参数 表4 FeatureSetOperateParam 参数 参数类型 描述 id String 特性集Id title String 特性集标题 position_float Float 特性集在目录树中的相对位置,从0F开始的浮点数,不支持科学计数法 parent_id String 父特性集Id,必填参数。 更新时需要移动特性集目录传入目标特性集Id,仅修改位置、标题属性时需要传入原父Id 状态码:400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应示例 状态码:200 成功响应 { "status" : "success", "message" : null, "result" : { "title" : "这是一个2层的特性集3", "parent_id" : "981924129047359488" } } 状态码:400 通用错误响应 { "error_code" : "PM.02174103", "error_msg" : "无操作权限" }
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 status String 请求状态 message String 请求失败信息 result ModuleEntity object 模块详情 表4 ModuleEntity 参数 参数类型 描述 id String 参数解释: 模块id 取值范围: 不涉及 sequence String 参数解释: 模块顺序值,double类型 取值范围: 不涉及 level Integer 参数解释: 模块层级,最多3层 取值范围: 1,2,3 description String 参数解释: 模块描述信息 取值范围: 不涉及 created_by String 参数解释: 模块创建人id 取值范围: 不涉及 created_time String 参数解释: 模块创建时间,unix时间戳,单位:毫秒 取值范围: 不涉及 modified_by String 参数解释: 模块最近修改人id 取值范围: 不涉及 modified_time String 参数解释: 模块最近修改时间,unix时间戳,单位:毫秒 取值范围: 不涉及 display_value String 参数解释: 模块显示名称 取值范围: 不涉及 path_name String 参数解释: 子模块的路径名称 取值范围: 不涉及 value String 参数解释: 模块唯一标识,自定义模块value和id项目 取值范围: 不涉及 parent_id String 参数解释: 父模块id 取值范围: 不涉及 child_modules Array of ModuleEntity objects 参数解释: 子模块信息 assignee String 参数解释: 模块责任人id 取值范围: 不涉及
  • 请求示例 创建子模块 POST https://{endpoint}/v1/ipdprojectservice/projects/b54914d464d1498a97d683ef198ec448/modules { "description" : "11111222", "display_value" : "API-M2-P-01", "parent_id" : 1030206424665337900, "assignee" : "a360371833bf4c558f796fd707b44daf" }
  • 响应示例 状态码:200 OK { "status" : "success", "message" : null, "result" : { "id" : "1030874468408406016", "created_by" : "a360371833bf4c558f796fd707b44daf", "value" : "1030874468408406016" } }
  • URI POST /v1/ipdprojectservice/projects/{project_id}/modules 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 项目的32位uuid,项目唯一标识,通过查询项目列表接口获取,响应消息体中的project_id字段的值就是项目ID 约束限制: 正则表达式,[A-Za-z0-9]{32} 取值范围: 不涉及 默认取值: 不涉及
  • 响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 status String 请求状态 message String 请求失败信息 result ModuleEntity object 模块详情 表4 ModuleEntity 参数 参数类型 描述 id String 参数解释: 模块id 取值范围: 不涉及 sequence String 参数解释: 模块顺序值,double类型 取值范围: 不涉及 level Integer 参数解释: 模块层级,最多3层 取值范围: 1,2,3 description String 参数解释: 模块描述信息 取值范围: 不涉及 created_by String 参数解释: 模块创建人id 取值范围: 不涉及 created_time String 参数解释: 模块创建时间,unix时间戳,单位:毫秒 取值范围: 不涉及 modified_by String 参数解释: 模块最近修改人id 取值范围: 不涉及 modified_time String 参数解释: 模块最近修改时间,unix时间戳,单位:毫秒 取值范围: 不涉及 display_value String 参数解释: 模块显示名称 取值范围: 不涉及 path_name String 参数解释: 子模块的路径名称 取值范围: 不涉及 value String 参数解释: 模块唯一标识,自定义模块value和id项目 取值范围: 不涉及 parent_id String 参数解释: 父模块id 取值范围: 不涉及 child_modules Array of ModuleEntity objects 参数解释: 子模块信息 assignee String 参数解释: 模块责任人id 取值范围: 不涉及
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全