为让透视宝采集的数据得到更好的使用,目前我们为透视宝用户提供后端数据共享API,用于获取透视宝采集到的应用、移动、浏览器、主机及各服务的数据,您可以采用更丰富的方式来处理和分析这些数据。
要使用数据共享接口,必须具有管理员或高级用户权限,在透视宝云端的“管理→API配置”页面中获取相关配置信息。
API:由透视宝提供,使用该API和对应的请求参数就可以获取数据。
密钥:透视宝自动生成,用来验证用户身份的合法性和安全性,用于获取签名。点击<换一个>按钮可以生成一个新的密钥。
数据类型:透视宝提供的数据类型,选择并保存后,透视宝会将对应类型的数据存放到RabbitMQ中供用户读取。选择数据类型1分钟后,可从API取得数据,数据流保存20分钟。
通过数据共享接口获取数据共分为两步:首先通过接口获取accessToken,然后再通过accessToken获取数据,下面进行详细说明。
通过接口获取accessToken
第一步:使用账户密钥、账户信息来生成签名。
签名生成步骤如下:
1、获取密钥:登录透视宝云端,在“管理→API配置”页面中获取密钥。
2、构建请求信息:请求信息包含邮箱(userEmail)、密码(password)、当前时间戳(timestamp)。
3、排序请求信息:将请求信息按键进行升序排序。
4、生成签名:将密钥与转化为JSON格式的请求信息拼接起来,并进行md5加密,即可生成签名字符串。
以PHP代码为例,生成签名的方式如下:
$secret_code = 'secret_code'; $data = array( 'password' => 'password', 'userEmail' => 'user_email', 'timestamp' => time(), ); ksort($data); $sign = md5($secret_code . json_encode($data));
以Java代码为例,生成签名的方式如下:
String secret = "secret_code"; //构建请求信息,请求信息按键升序排序 Map<String,Object> map = new TreeMap<String,Object>(); //透视宝平台的帐号、密码 map.put("userEmail", "userEmail"); map.put("password", "password"); //当前时间 map.put("timestamp", System.currentTimeMillis()); //MD5方法请自行编写 验证:MD5('1') = 'c4ca4238a0b923820dcc509a6f75849b'; String sign = MD5(secret + mapper.writeValueAsString(resultMap)).toLowerCase();
以Python代码为例,生成签名的方式如下:
import time import json import hashlib secret_code = 'secret_code' request_params ={} request_params['password'] = 'password' request_params['userEmail'] = 'userEmail' request_params['timestamp'] = int(time.time()) json_format = json.dumps(request_params, sort_keys=True, separators=(',', ':')) hash = hashlib.md5() hash.update(secret_code) hash.update(json_format) sign = hash.hexdigest()
第二步:在请求信息中添加签名信息。
以PHP代码为例,添加方式如下:
$data['sign'] = $sign;
以Java代码为例,生成方式如下:
map.put("sign", sign);
第三步:将请求信息转化为JSON格式。
以PHP代码为例,转化方式如下:
json_encode($data);
以Java代码为例,转化方式如下:
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper(); mapper.writeValueAsString(map);
第四步:发起请求,获取accessToken。
请求URL | ucloud机房:http://portal.toushibao.com/api/v1/getToken seagull机房:http://seagull-data.toushibao.com/api/v1/getToken |
请求方式 | post |
请求参数 |
|
以ucloud机房为例,请求示例如下:
curl -XPOST 'http://portal.toushibao.com/api/v1/getToken' -d '{"password":"123456","timestamp":1464085267,"userEmail":"bear@yunzhihui.com","sign":"13f27d79979a8520d13e9b5594355561"}'
以seagull机房为例,请求示例如下:
curl -XPOST 'http://seagull-data.toushibao.com/api/v1/getToken' -d '{"password":"123456","timestamp":1464085267,"userEmail":"bear@yunzhihui.com","sign":"13f27d79979a8520d13e9b5594355561"}'
请求成功返回值示例:
{"code":1000,"msg":"success","data":{"accessToken":"df874b839ab8980fbb970507679b45b5"}}
请求失败返回值示例:
{"code":900,"msg":"Signature Error","data":[]}
通过accessToken获取数据
获取accessToken后,需要再次生成签名sign,然后再获取数据。签名验证方式与上面的方式相同,只是data不同,说明如下:
$data = array( 'accessToken'=>'df874b839ab8980fbb970507679b45b5', 'dataType'=>'103', 'dataCount'=>10, 'timestamp'=>time() ); $secret = '0edb55ce24419bd19f9ebe43127a3fb7'; 按键升序排序 ksort($data); $data['sign'] = md5($secret.json_encode($data)) = '2674d79979a8520d13e9b5594353321';
则参数为:
json_encode($data) = '{"accessToken":"df874b839ab8980fbb970507679b45b5","dataType":"103","dataCount":10,"timestamp":1464085267, "sign":"2674d79979a8520d13e9b5594353321"}';
后面需要使用这里的参数获取数据。
获取数据
请求URL | 页面api?params=(页面api即“管理→API配置”页面中的API) |
请求方式 | get |
请求参数 |
|
以ucloud机房为例,请求示例如下:
curl 'http://data.toushibao.com/api/getData?params={"accessToken":"df874b839ab8980fbb970507679b45b5","dataType":"103","dataCount":10,"timestamp":1464085267,"sign":"2674d79979a8520d13e 9b5594353321"}'
以seagull机房为例,请求示例如下:
curl 'http://seagull-data.toushibao.com/api/getData?params={"accessToken":"df874b839ab8980fbb970507679b45b5","dataType":"103","dataCount":10,"timestamp":1464085267,"sign":"2674d79979a8520d13e 9b5594353321"}'
请求成功返回值示例:
{"code":1000,"msg":"success","data":[{xxxxx},{yyyyy},{zzzzzzzz}]}
请求失败返回值示例:
{"code":900,"msg":"Signature Error","data":[]}
数据类型说明
透视宝通过共享数据接口能够提供应用、移动、浏览器、主机及各服务的数据,每个数据类型都对应一个特定的值,需要在请求数据时通过dataType参数提供,详细说明如下。
数据类型 | 说明 |
应用 | PHP = 1001; //PHP代码监控 JAVA = 1002; //Java代码监控 PYTHON = 1003; //Python代码监控 .NET = 1004; //.NET代码监控 |
移动 | MOBILE_SDK = 402; //Mobile SDK |
浏览器 | BROWSER = 11; //浏览器 |
主机 | HOST = 100; //主机信息 BURDEN = 101; //CPU负载 CPU_USE_RATE = 102; //CPU使用率 RAM_USE_RATE = 103; //内存使用率 LAN_TRAFFIC = 104; //网卡流量 DISK_USE_RATE = 105; //磁盘空间 DISK_IO = 106; //磁盘IO SYSTEM_PROCESS = 107; //系统进程数 SYSTEM_TCP = 108; //系统Socket链接数 |
服务 | APACHE = 201; //Apache APACHE_BASIC = 2011; //Apache的基础插件 LIGHTTPD = 202; //Lighttpd NGINX = 203; //Nginx NGINX_BASIC = 2031; //Nginx的基础插件 MYSQL = 204; //MySQL MONGODB = 205; //MongoDB REDIS = 206; //Redis MEMCACHE = 207; //Memcache TOMCAT = 208; //Tomcat IIS = 209; //IIS SQLSERVER = 210; //SQLServer ORACLE = 211; //Oracle WEBLOGIC = 212; //Weblogic POSTGRESQL = 213; //PostgreSQL JVM = 214; //JVM RABBIT_MQ = 215; //RabbitMQ DOCKER = 216; //Docker JVM_STACK = 217; //JVM堆栈 APP_ADMIN = 218; //后台任务 |