开发者社区> 问答> 正文

云监控调用方式

反向一觉 2017-10-31 13:45:22 1302

请求结构
服务地址
地域服务地址
华东 1 (杭州)metrics.cn-hangzhou.aliyuncs.com
华东 2 (上海)metrics.cn-shanghai.aliyuncs.com
华北 1 (青岛)metrics.cn-qingdao.aliyuncs.com
华北 2 (北京)metrics.cn-beijing.aliyuncs.com
华南 1 (深圳)metrics.cn-shenzhen.aliyuncs.com
华北 3(张家口)metrics.cn-zhangjiakou.aliyuncs.com
香港metrics.cn-hongkong.aliyuncs.com
亚太东南 1(新加坡)metrics.ap-southeast-1.aliyuncs.com
美国西部 1(硅谷)metrics.us-west-1.aliyuncs.com
美国东部 1(弗吉尼亚)metrics.us-east-1.aliyuncs.com
欧洲中部 1(法兰克福)metrics.eu-central-1.aliyuncs.com
亚太东南 2(悉尼)metrics.ap-southeast-2.aliyuncs.com
中东东部 1(迪拜)metrics.me-east-1.aliyuncs.com
亚太东北 1(东京)metrics.cn-hangzhou.aliyuncs.com
亚太东南3(吉隆坡)metrics.ap-southeast-3.aliyuncs.com
华北 5 (呼和浩特)metrics.cn-huhehaote.aliyuncs.com

备注:查询亚太东北 1(东京)地域的监控数据时,请使用华东 1 (杭州)的服务地址。
通信协议
支持通过HTTP进行请求通信。
请求方法
支持HTTP GET或POST方法发送请求,GET方式下请求参数需要包含在请求的URL中。
请求参数
每个请求都需要包含公共的鉴权、签名相关请求参数和相关操作所特有的请求参数。
字符编码
请求及返回结果都使用UTF-8字符集进行编码。
公共参数
名称类型是否必须描述
FormatString返回值的类型,支持JSON和XML,默认为XML
VersionStringAPI版本号,为日期形式:YYYY-MM-DD,本版本对应为2017-03-01
AccessKeyIdString阿里云颁发给用户的访问服务所用的密钥ID
SignatureString签名结果串,关于签名的计算方法,请参见<签名机制>。
SignatureMethodString签名方式,目前支持HMAC-SHA1
TimestampString请求的时间戳。日期格式按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ例如,2017-03-23T06:59:55Z(为北京时间2017年3月23日14点59分55秒)
SignatureVersionString签名算法版本,目前版本是1.0
SignatureNonceString唯一随机数,用于防止网络重放攻击。用户在不同请求间要使用不同的随机数值

签名机制
CloudMonitor服务会对每个访问的请求进行身份验证,使用HTTP需要在请求中包含签名(Signature)信息。CloudMonitor通过使用Access Key ID和Access Key Secret进行对称加密的方法来验证请求的发送者身份。
Access Key ID和Access Key Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中Access Key ID用于标识访问者的身份;Access Key Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。
Java 签名算法可直接引用 签名算法参考
签名处理步骤
  1. 使用请求参数构造规范化的请求字符串(Canonicalized Query String)。
  2. 使用上一步构造的规范化字符串按照下面的规则构造用于计算签名的字符串。[backcolor=transparent]StringToSign[backcolor=transparent]=
  3. [backcolor=transparent]HTTPMethod[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]“&”[backcolor=transparent] [backcolor=transparent]+
  4. [backcolor=transparent]percentEncode[backcolor=transparent](“/”)[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]”&”[backcolor=transparent] [backcolor=transparent]+
  5. [backcolor=transparent]percentEncode[backcolor=transparent]([backcolor=transparent]CanonicalizedQueryString[backcolor=transparent])

其中HTTPMethod是提交请求用的HTTP方法,比GET.percentEncode(“/”)是按照1.b中描述的URL编码规则对字符“/”进行编码得到的值,即“%2F”。
percentEncode(CanonicalizedQueryString)是对第1步中构造的规范化请求字符串按1.b中描述的URL编码规则编码后得到的字符串
按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值。注意:计算签名时使用的Key就是用户持有的Access Key Secret并加上一个“&”字符(ASCII:38),使用的哈希算法是SHA1。按照Base64编码规则把上面的HMAC值编码成字符串,即得到签名值(Signature)。将得到的签名值作为Signature参数添加到请求参数中,即完成对请求签名的过程。
构造请求字符串的方法
  1. 按照参数名称的字典顺序对请求中所有的请求参数(包括文档中描述的“公共请求参数”和给定了的请求接口的自定义参数,但不能包括“公共请求参数”中提到Signature参数本身)进行排序。
    注:当使用GET方法提交请求时,这些参数就是请求URI中的参数部分(即URI中“?”之后由“&”连接的部分)。
  2. 对每个请求参数的名称和值进行编码。名称和值要使用UTF-8字符集进行URL编码。
    a. 对于字符 A-Z、a-z、0-9以及字符“-”、“_”、“.”、“~”不编码。
    b. 对于其他字符编码成“%XY”的格式,其中XY是字符对应ASCII码的16进制表示。比如英文的双引号(”)对应的编码就是%22。
    c. 对于扩展的UTF-8字符,编码成“%XY%ZA…”的格式。
    d. 需要说明的是英文空格( )要被编码是%20,而不是加号(+)。
    注:一般支持URL编码的库(比如Java中的java.net.URLEncoder)都是按照“application/x-www-form-urlencoded”的MIME类型的规则进行编码的。实现时可以直接使用这类方式进行编码,把编码后的字符串中加号(+)替换成%20、星号(*)替换成%2A、%7E替换回波浪号(~),即可得到上述规则描述的编码字符串。
  3. 对编码后的参数名称和值使用英文等号(=)进行连接。
  4. 再把英文等号连接得到的字符串按参数名称的字典顺序依次使用&符号连接,即得到规范化请求字符串。

以QueryMetricList为例,签名前的请求URL为:
  1. [backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//metrics.aliyuncs.com/?Action=QueryMetricList&period=60&StartTime=2016-03-22T11:30:27Z&Dimensions={instanceId:'i-abcdefgh123456'}&Timestamp=2017-03-23T06:59:55Z&Project=acs_ecs_dashboard&SignatureVersion=1.0&Format=JSON&SignatureNonce=aeb03861-611f-43c6-9c07-b752fad3dc06&Version=2015-10-20&AccessKeyId=TestId&Metric=cpu_idle&SignatureMethod=HMAC-SHA1

那么StringToSign就是:
  1. [backcolor=transparent]GET[backcolor=transparent]&%[backcolor=transparent]2F[backcolor=transparent]&[backcolor=transparent]AccessKeyId[backcolor=transparent]%[backcolor=transparent]3DTestId[backcolor=transparent]&[backcolor=transparent]Action[backcolor=transparent]%[backcolor=transparent]3DQueryMetricList[backcolor=transparent]&[backcolor=transparent]Dimensions[backcolor=transparent]%[backcolor=transparent]3D[backcolor=transparent]%[backcolor=transparent]257BinstanceId[backcolor=transparent]%[backcolor=transparent]253A[backcolor=transparent]%[backcolor=transparent]2527i[backcolor=transparent]-[backcolor=transparent]abcdefgh123456[backcolor=transparent]%[backcolor=transparent]2527[backcolor=transparent]%[backcolor=transparent]257D[backcolor=transparent]&[backcolor=transparent]Format[backcolor=transparent]%[backcolor=transparent]3DJSON[backcolor=transparent]&[backcolor=transparent]Metric[backcolor=transparent]%[backcolor=transparent]3Dcpu[backcolor=transparent]_idle[backcolor=transparent]&[backcolor=transparent]Project[backcolor=transparent]%[backcolor=transparent]3Dacs[backcolor=transparent]_ecs_dashboard[backcolor=transparent]&[backcolor=transparent]SignatureMethod[backcolor=transparent]%[backcolor=transparent]3DHMAC[backcolor=transparent]-[backcolor=transparent]SHA1[backcolor=transparent]&[backcolor=transparent]SignatureNonce[backcolor=transparent]%[backcolor=transparent]3Daeb03861[backcolor=transparent]-[backcolor=transparent]611f[backcolor=transparent]-[backcolor=transparent]43c6[backcolor=transparent]-[backcolor=transparent]9c07[backcolor=transparent]-[backcolor=transparent]b752fad3dc06[backcolor=transparent]&[backcolor=transparent]SignatureVersion[backcolor=transparent]%[backcolor=transparent]3D1.0[backcolor=transparent]&[backcolor=transparent]StartTime[backcolor=transparent]%[backcolor=transparent]3D2016[backcolor=transparent]-[backcolor=transparent]03[backcolor=transparent]-[backcolor=transparent]22T11[backcolor=transparent]%[backcolor=transparent]253A30[backcolor=transparent]%[backcolor=transparent]253A27Z[backcolor=transparent]&[backcolor=transparent]Timestamp[backcolor=transparent]%[backcolor=transparent]3D2016[backcolor=transparent]-[backcolor=transparent]03[backcolor=transparent]-[backcolor=transparent]23T06[backcolor=transparent]%[backcolor=transparent]253A59[backcolor=transparent]%[backcolor=transparent]253A55Z[backcolor=transparent]&[backcolor=transparent]Version[backcolor=transparent]%[backcolor=transparent]3D2015[backcolor=transparent]-[backcolor=transparent]10[backcolor=transparent]-[backcolor=transparent]20[backcolor=transparent]&[backcolor=transparent]period[backcolor=transparent]%[backcolor=transparent]3D60

假如使用的Access Key Id是“TestId”,Access Key Secret是“TestSecret”,用于计算HMAC的Key就是“TestSecret&”,则计算得到的签名值是:
  1. [backcolor=transparent]umY[backcolor=transparent]/[backcolor=transparent]Jy1KWYWvFy9KABIm7ajKURQ[backcolor=transparent]=

签名后的请求URL为(注意增加了Signature参数):
  1. [backcolor=transparent]http[backcolor=transparent]:[backcolor=transparent]//metrics.aliyuncs.com/?Action=QueryMetricList&period=60&StartTime=2016-02-02T10%3A33%3A56Z&Dimensions=%7BinstanceId%3A%27i-abcdefgh123456%27%7D
  2. [backcolor=transparent]&[backcolor=transparent]Timestamp[backcolor=transparent]=[backcolor=transparent]2016[backcolor=transparent]-[backcolor=transparent]23[backcolor=transparent]-[backcolor=transparent]04T06[backcolor=transparent]%[backcolor=transparent]3A59[backcolor=transparent]%[backcolor=transparent]3A55Z[backcolor=transparent]&[backcolor=transparent]Project[backcolor=transparent]=[backcolor=transparent]acs_ecs_dashboard[backcolor=transparent]&[backcolor=transparent]SignatureVersion[backcolor=transparent]=[backcolor=transparent]1.0[backcolor=transparent]&[backcolor=transparent]Format[backcolor=transparent]=[backcolor=transparent]JSON[backcolor=transparent]&[backcolor=transparent]SignatureNonce[backcolor=transparent]=[backcolor=transparent]aeb03861[backcolor=transparent]-[backcolor=transparent]611f[backcolor=transparent]-[backcolor=transparent]43c6[backcolor=transparent]-[backcolor=transparent]9c07[backcolor=transparent]-[backcolor=transparent]b752fad3dc06
  3. [backcolor=transparent]&[backcolor=transparent]Version[backcolor=transparent]=[backcolor=transparent]2015[backcolor=transparent]-[backcolor=transparent]10[backcolor=transparent]-[backcolor=transparent]20[backcolor=transparent]&[backcolor=transparent]AccessKeyId[backcolor=transparent]=[backcolor=transparent]TestId[backcolor=transparent]&[backcolor=transparent]Metric[backcolor=transparent]=[backcolor=transparent]cpu_idle[backcolor=transparent]&[backcolor=transparent]SignatureMethod[backcolor=transparent]=[backcolor=transparent]HMAC[backcolor=transparent]-[backcolor=transparent]SHA1 [backcolor=transparent]&[backcolor=transparent]Signature[backcolor=transparent]=[backcolor=transparent]yelYr99iwDHg9biDPVZOGrlcEss[backcolor=transparent]%[backcolor=transparent]3D

分享到
取消 提交回答
全部回答(0)
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章