diff options
| author | tanghao <[email protected]> | 2023-11-03 17:11:23 +0800 |
|---|---|---|
| committer | tanghao <[email protected]> | 2023-11-03 17:11:23 +0800 |
| commit | 9da6ad599258e37eb5d61190f77757936b0ddf58 (patch) | |
| tree | 6ce4a8449923ba23817d1c7573daeb91abb267a2 | |
| parent | 87e1e68dc7bc86251ca82c30355c70c3ae5a572a (diff) | |
feat: CN-1455 jdk版本升级
17 files changed, 9 insertions, 1569 deletions
diff --git a/cn-admin/pom.xml b/cn-admin/pom.xml index 0a2e474..02a2b01 100644 --- a/cn-admin/pom.xml +++ b/cn-admin/pom.xml @@ -468,7 +468,7 @@ <buildArgs> <!--向Dockerfile中传入参数,k-v格式--> <!-- <JDK_IMAGE>${docker.registry}:${docker.registry.port}/common/jdk:1.8.0_73</JDK_IMAGE>--> - <JDK_IMAGE>${docker.registry}:${docker.registry.port}/common/jdk-node-cn:1.8.0_73</JDK_IMAGE> + <JDK_IMAGE>${docker.registry}:${docker.registry.port}/common/amazon-corretto:11.0.21.9.1</JDK_IMAGE> <JAR_FILE>${project.build.finalName}.xjar</JAR_FILE> </buildArgs> <resources> diff --git a/cn-admin/src/main/java/net/geedge/common/magic/MagicResultProvider.java b/cn-admin/src/main/java/net/geedge/common/magic/MagicResultProvider.java index 8217399..d0eb807 100644 --- a/cn-admin/src/main/java/net/geedge/common/magic/MagicResultProvider.java +++ b/cn-admin/src/main/java/net/geedge/common/magic/MagicResultProvider.java @@ -4,9 +4,12 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; +import javax.servlet.http.HttpServletResponse; + import org.springframework.stereotype.Component; import org.ssssssss.magicapi.core.context.RequestEntity; import org.ssssssss.magicapi.core.interceptor.ResultProvider; +import org.ssssssss.magicapi.core.servlet.MagicHttpServletResponse; import com.alibaba.fastjson.JSON; @@ -32,7 +35,7 @@ public class MagicResultProvider implements ResultProvider { result.put("code",code); result.put("message",message); result.put("time",new Date()); - requestEntity.getResponse().setStatus(code); + ((HttpServletResponse)requestEntity.getResponse().getResponse()).setStatus(code); return result; }else { int status = (int) ((Map)data).get("status"); diff --git a/cn-admin/src/main/java/net/geedge/common/utils/GalaxyUtils.java b/cn-admin/src/main/java/net/geedge/common/utils/GalaxyUtils.java deleted file mode 100644 index 22364e3..0000000 --- a/cn-admin/src/main/java/net/geedge/common/utils/GalaxyUtils.java +++ /dev/null @@ -1,159 +0,0 @@ -package net.geedge.common.utils; - -import cn.hutool.log.Log; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import freemarker.template.TemplateException; -import net.geedge.common.exception.CNException; -import net.geedge.modules.galaxy.entity.GalaxyProxy; -import net.geedge.modules.galaxy.service.GalaxyProxyService; -import net.geedge.modules.sys.service.SysConfigService; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.RequestEntity; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URI; -import java.net.URLEncoder; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @author Lihe - * @version 1 - * @description - * @date 2021/10/9 - */ -@Component -public class GalaxyUtils { - - private static Log logger = Log.get(); - - private static SysConfigService sysConfigService; - - private static GalaxyProxyService galaxyProxyService; - - private static RestTemplate restTemplate; - - /** - * cors 响应头 - */ - private final static Map<String, String> CORS_HEADER = new LinkedHashMap<String, String>(); - - static { - CORS_HEADER.put("Access-Control-Allow-Origin", "*"); - CORS_HEADER.put("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); - CORS_HEADER.put("Access-Control-Allow-Headers", "*"); - CORS_HEADER.put("Access-Control-Max-Age", "86400"); - } - - /** - * 构造GalaxyUtils类,注入静态方法 - * @param sysConfigService - * @param galaxyProxyService - * @param restTemplate - */ - private GalaxyUtils(SysConfigService sysConfigService, GalaxyProxyService galaxyProxyService, RestTemplate restTemplate) { - GalaxyUtils.sysConfigService = sysConfigService; - GalaxyUtils.galaxyProxyService = galaxyProxyService; - GalaxyUtils.restTemplate = restTemplate; - } - - /** - * 发送galaxy请求 - * @param path galaxy请求路径,ex:/entity/ip/detail/domains - * @param method : 请求方式 GET,POST - * @param parameter 参数集合 - * @return - * @throws IOException - * @throws TemplateException - */ - public static Object sendGalaxyRequest(String path, String method,Map<String,String> parameter) throws IOException, TemplateException { - /* 请求头 */ - Object result = null; - logger.info("request Galaxy path : {}", path); - String galaxyUrl = sysConfigService.getValue("galaxy_url"); - if (Tool.StrUtil.isBlank(galaxyUrl)) { - Tool.ExceptionUtil.wrapAndThrow(new CNException(RCode.GALAXY_PROXY_CONFIG_URL_ISNULL)); - } - if (!galaxyUrl.endsWith("/")) { - galaxyUrl = Tool.StrUtil.concat(true, galaxyUrl, "/"); - } - QueryWrapper<GalaxyProxy> queryWrapper = new QueryWrapper<GalaxyProxy>().eq("path", path).eq("method", method).eq("state", 1); - /* 查询匹配的 接口 */ - GalaxyProxy proxy = galaxyProxyService.getOne(queryWrapper); - if (proxy == null) { - logger.warn("path not found,url:{},method:{}", path, method); - return result; - } - Map<String,Object> param = Tool.MapUtil.newHashMap(); - param.put("parameter",parameter); - String targetParam = proxy.getTargetParam(); - String targetUrl = proxy.getTargetUrl(); - if (targetUrl.startsWith("/")) { - targetUrl = targetUrl.substring(1); - } - targetUrl = Tool.StrUtil.concat(true, galaxyUrl, targetUrl); - /* 补充默认请求参数 */ - if (Tool.StrUtil.isNotBlank(targetParam)) { - String templateIntoString = Tool.FreeMarkerUtil.processTemplateIntoString(String.valueOf(proxy.getId()) + "-parameter", proxy.getTargetParam(), param); - parameter = Tool.JSONUtil.toBean(templateIntoString, HashMap.class); - } else { - parameter = null; - } - /* 代理 请求头参数 */ - MultiValueMap httpHeaders = new LinkedMultiValueMap();//设置请求头 - - //构造请求参数 - RequestEntity requestEntity = buildRequestEntity(targetUrl, method.toUpperCase(), httpHeaders, parameter); - //发送请求,获取响应结果 - ResponseEntity<LinkedHashMap> responseEntity = restTemplate.exchange(requestEntity, LinkedHashMap.class); - HttpStatus statusCode = responseEntity.getStatusCode(); - logger.info("targetUrl : {},statusCode : {}", targetUrl, statusCode.toString()); - - result = responseEntity.getBody(); - - int code = statusCode.value(); - // 代理返回 错误,直接返回 - if (code > 399) { - return null; - } - return result; - } - - - private static RequestEntity buildRequestEntity(String url, String method, MultiValueMap httpHeaders, Map<String, String> params) { - boolean isGet = Tool.StrUtil.equalsIgnoreCase(method, "GET"); - RequestEntity requestEntity = null; - if (isGet) { - if (Tool.MapUtil.isNotEmpty(params)) { - if (url.endsWith("/")) { - url = url.substring(0, url.length() - 1); - } - StringBuilder sb = new StringBuilder(url); - if (!url.endsWith("?")) { - sb.append("?"); - } - params.forEach((k, v) -> { - try { - String encode = URLEncoder.encode(v, "UTF-8").replaceAll("\\+", "%20"); - sb.append(k).append("=").append(encode).append("&"); - } catch (UnsupportedEncodingException e) { - logger.error(e); - } - }); - sb.deleteCharAt(sb.length() - 1); - url = sb.toString(); - } - } - requestEntity = new RequestEntity((isGet ? null : params), httpHeaders, HttpMethod.valueOf(method), URI.create(url)); - return requestEntity; - } - -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/GalaxyProxyController.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/GalaxyProxyController.java deleted file mode 100644 index 4cdea24..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/GalaxyProxyController.java +++ /dev/null @@ -1,83 +0,0 @@ -package net.geedge.modules.galaxy.controller; - -import java.io.IOException; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import net.geedge.common.annotation.SysLog; -import net.geedge.common.smartvalidate.ValidateUtils; -import net.geedge.common.utils.OperationEnum; -import net.geedge.common.utils.PageUtils; -import net.geedge.common.utils.R; -import net.geedge.common.utils.RCode; -import net.geedge.common.utils.Tool; -import net.geedge.common.utils.TypeEnum; -import net.geedge.modules.galaxy.entity.GalaxyProxy; -import net.geedge.modules.galaxy.service.GalaxyProxyService; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; - -@RestController -@RequestMapping("/galaxy/setting") -public class GalaxyProxyController { - @Autowired - private GalaxyProxyService galaxyProxyService; - - @RequestMapping("/{id}") - public R queryInfo(@PathVariable Integer id) { - ValidateUtils.is(id).notNull(RCode.GALAXY_PROXY_ID_ISNULL); - GalaxyProxy galaxyProxy = galaxyProxyService.queryInfo(id); - return R.ok(galaxyProxy); - } - - @RequestMapping - public R queryList(@RequestParam Map<String, Object> params) { - PageUtils result = galaxyProxyService.queryPage(params); - return R.ok(result); - } - - @PostMapping - @SysLog(operation = OperationEnum.ADD, type = TypeEnum.SETTING) - public R save(@RequestBody GalaxyProxy galaxyProxy) { - Integer id = galaxyProxyService.saveOrUpdateGalaxyProxy(galaxyProxy); - return R.ok().putData("id", id); - } - - @PutMapping - @SysLog(operation = OperationEnum.UPDATE, type = TypeEnum.SETTING) - public R modify(@RequestBody GalaxyProxy galaxyProxy) { - ValidateUtils.is(galaxyProxy.getId()).notNull(RCode.GALAXY_PROXY_ID_ISNULL); - Integer id = galaxyProxyService.saveOrUpdateGalaxyProxy(galaxyProxy); - return R.ok().putData("id", id); - } - - @DeleteMapping - @SysLog(operation = OperationEnum.DELETE, type = TypeEnum.SETTING) - public R remove(@RequestParam String ids) { - ValidateUtils.is(ids).notNull(RCode.GALAXY_PROXY_ID_ISNULL); - galaxyProxyService.removeGalaxyProxy(ids); - return R.ok(); - } - - @PutMapping(path = "clearCache") - public R clearCache() { - Tool.FreeMarkerUtil.clearTemlateCache(); - return R.ok(); - } - - @PostMapping("/import") - @SysLog(operation = OperationEnum.IMPORT, type = TypeEnum.SETTING) - public R importFile(@RequestParam("file") MultipartFile file) throws IOException { - galaxyProxyService.importFile(file); - return R.ok(); - } - - @RequestMapping(value = "/export", method = RequestMethod.GET) - @SysLog(operation = OperationEnum.EXPORT, type = TypeEnum.SETTING) - public void exportFile(HttpServletResponse response) throws Exception { - galaxyProxyService.exportFile(response); - } -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/GalaxyResolveController.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/GalaxyResolveController.java deleted file mode 100644 index 616f6a5..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/GalaxyResolveController.java +++ /dev/null @@ -1,61 +0,0 @@ -package net.geedge.modules.galaxy.controller; - -import net.geedge.common.utils.R; -import net.geedge.common.utils.Tool; -import net.geedge.modules.sys.controller.AbstractController; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.io.*; -import java.util.HashMap; -import java.util.Map; - -/** - * galaxy 递归解析 - * @Auther: lijinyang - * @Date: 2022/03/10/15:57 - */ -@RestController -@RequestMapping("/galaxy") -public class GalaxyResolveController extends AbstractController { - - @RequestMapping("/domainRecursiveResolve") - public R domainRecursiveResolve(String domain){ - String osName = System.getProperties().getProperty("os.name"); - int index = osName.toUpperCase().indexOf("LINUX"); - if(index!=-1) { - Process process = null; - try { - process = Tool.RuntimeUtil.exec("dig +trace "+domain); - String result = Tool.RuntimeUtil.getResult(process); - Map<String,Object> data = new HashMap(); - data.put("resultType", "single"); - data.put("result",result); - return R.ok().put("data",data); - } catch (Exception e) { - logger.error(e.getMessage()); - } finally { - if(process!=null) { - process.destroy(); - } - } - } - String error = "The current system is " + osName + " and cannot be executed"; - logger.debug(error); - return R.error().put("msg",error); - } - /** - * 消费inputstream,并返回 - *//* - public static String printResults(Process process) throws IOException { - BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); - String s ; - StringBuilder sb = new StringBuilder(); - while((s=br.readLine())!=null){ - sb.append(s); - sb.append("\r\n"); - } - br.close(); - return sb.toString(); - }*/ -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/InterfaceController.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/InterfaceController.java deleted file mode 100644 index e5c19f1..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/controller/InterfaceController.java +++ /dev/null @@ -1,311 +0,0 @@ -package net.geedge.modules.galaxy.controller; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URI; -import java.net.URLEncoder; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import javax.script.Bindings; -import javax.script.ScriptEngine; -import javax.script.ScriptException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import net.geedge.modules.sys.entity.SysDictEntity; -import net.geedge.modules.sys.service.SysDictService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.RequestEntity; -import org.springframework.http.ResponseEntity; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; - -import cn.hutool.core.util.StrUtil; -import freemarker.template.TemplateException; -import net.geedge.common.annotation.SysLog; -import net.geedge.common.exception.CNException; -import net.geedge.common.utils.OperationEnum; -import net.geedge.common.utils.RCode; -import net.geedge.common.utils.Tool; -import net.geedge.common.utils.TypeEnum; -import net.geedge.modules.galaxy.entity.GalaxyProxy; -import net.geedge.modules.galaxy.service.GalaxyProxyService; -import net.geedge.modules.sys.controller.AbstractController; -import net.geedge.modules.sys.service.SysConfigService; -/** - * galaxy 代理接口 - * @author ThinkPad - * - */ -@RestController -public class InterfaceController extends AbstractController { - @Autowired - private GalaxyProxyService galaxyProxyService; - @Autowired - private SysConfigService sysConfigService; - @Autowired - private RestTemplate restTemplate; - @Autowired - private SysDictService sysDictService; - - private final static List<String> HEADER_LIST = Tool.ListUtil.toList("HOST","REFERER","ORIGIN"); - /** - * cors 响应头 - */ - private final static Map<String,String> CORS_HEADER = new LinkedHashMap<String, String>(); - - static { - CORS_HEADER.put("Access-Control-Allow-Origin", "*"); - CORS_HEADER.put("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); - CORS_HEADER.put("Access-Control-Allow-Headers", "*"); - CORS_HEADER.put("Access-Control-Max-Age", "86400"); - } - - - @RequestMapping("/interface/**") - @SuppressWarnings("all") - /*@SysLog(operation =OperationEnum.QUERY,type = TypeEnum.INTERFACE)*/ - public void index(HttpServletRequest request, HttpServletResponse response) throws IOException, TemplateException { - /* 请求路径 */ - String servletPath = request.getServletPath().substring("/interface".length()); - /* 请求方式 */ - String method = request.getMethod().toUpperCase(); - /* 请求头 */ - Enumeration<String> headerNames = request.getHeaderNames(); - Map<String, String> headers = Tool.MapUtil.newHashMap(); - for (; headerNames.hasMoreElements();) { - - String key = headerNames.nextElement(); - //解决跨域问题 - if(HEADER_LIST.contains(key.toUpperCase())) { - continue; - } - String value = request.getHeader(key); - headers.put(key, value); - } - logger.info("request path : {}", servletPath); - /* 请求参数 */ - Map<String,String[]> param = request.getParameterMap(); - - Map parameter = Tool.MapUtil.newHashMap(); - for(String key :param.keySet()) { - parameter.put(key, (param.get(key))[0]); - } - - if(logger.isDebugEnabled()) { - logger.debug("request path : {},method : {},parameter : {}", servletPath,method,Tool.JSONUtil.toJsonStr(parameter)); - } - - String galaxyUrl = sysConfigService.getValue("galaxy_url"); - if(Tool.StrUtil.isBlank(galaxyUrl)) { - Tool.ExceptionUtil.wrapAndThrow(new CNException(RCode.GALAXY_PROXY_CONFIG_URL_ISNULL)); - } - if(!galaxyUrl.endsWith("/")) { - galaxyUrl = Tool.StrUtil.concat(true, galaxyUrl,"/"); - } - QueryWrapper<GalaxyProxy> queryWrapper = new QueryWrapper<GalaxyProxy>() - .eq("path", servletPath).eq("state", 1); - /* 查询匹配的 接口 */ - GalaxyProxy proxy = galaxyProxyService.getOne(queryWrapper); - if (proxy == null) { - this.responseError(response, HttpServletResponse.SC_NOT_FOUND, "Not found", null); - logger.warn("path not found,url:{},method:{}", servletPath,method); - return; - } - //例:entityrelationship接口GET/POST请求方法都适用,但第三方请求只能用POST - if (!method.equalsIgnoreCase(proxy.getMethod())) { - method = proxy.getMethod(); - } - if(logger.isDebugEnabled()) { - logger.debug("galaxy proxy : {} ",proxy); - } - /* 执行前执行 */ - String preHandle = proxy.getPreHandle(); - String postHandle = proxy.getPostHandle(); - String targetParam = proxy.getTargetParam(); - String targetHeader = proxy.getTargetHeader(); - //map类型接口加区域映射 - if("map".equals(servletPath.substring(servletPath.length()-3).toLowerCase())){ - QueryWrapper<SysDictEntity> queryCountry = new QueryWrapper<SysDictEntity>() - .eq("type", "areaMapping").eq("code",1).eq("state", 1); - String countryCode = sysDictService.getOne(queryCountry).getValue(); - QueryWrapper<SysDictEntity> queryCity = new QueryWrapper<SysDictEntity>() - .eq("type", "areaMapping").eq("code",2).eq("state", 1); - String cityCode = sysDictService.getOne(queryCity).getValue(); - postHandle = countryCode + "\r\n" + cityCode + "\r\n" + postHandle; - } - //获取单例 js 引擎 - ScriptEngine jsEngine = Tool.ScriptUtil.getJsEngine(); - //设置 js bindings - Bindings bindings = jsEngine.createBindings(); - bindings.put("nowTimestamp", System.currentTimeMillis());//当前时间戳 - bindings.put("code", 200); - bindings.put("msg", ""); - bindings.put("method", method); - bindings.put("path", servletPath); - bindings.put("headers", headers); - bindings.put("parameter", parameter); - bindings.put("proxy", proxy); - try { - if (Tool.StrUtil.isNotBlank(preHandle)) { - jsEngine.eval(preHandle, bindings); - int code = Tool.NumberUtil.parseInt(bindings.get("code").toString()); - //返回不等于 200 ,说明校验失败直接返回 - if(code != 200) { - this.responseError(response, code, bindings.get("msg").toString(), null); - } - } - - String targetUrl = proxy.getTargetUrl(); - if(targetUrl.startsWith("/")) { - targetUrl = targetUrl.substring(1); - } - targetUrl = Tool.StrUtil.concat(true, galaxyUrl,targetUrl); - logger.debug("targetUrl: {}",targetUrl); - /* 补充默认请求参数 */ - if(Tool.StrUtil.isNotBlank(targetParam)) { - String templateIntoString = Tool.FreeMarkerUtil.processTemplateIntoString(String.valueOf(proxy.getId())+"-parameter", proxy.getTargetParam(), bindings); - parameter = Tool.JSONUtil.toBean(templateIntoString, HashMap.class); - }else { - parameter = null; - } - /* 代理 请求头参数 */ - MultiValueMap httpHeaders = new LinkedMultiValueMap();//设置请求头 - if(Tool.StrUtil.isNotBlank(targetHeader)) { - String templateIntoString = Tool.FreeMarkerUtil.processTemplateIntoString(String.valueOf(proxy.getId())+"-headers", proxy.getTargetHeader(), bindings); - headers = Tool.JSONUtil.toBean(templateIntoString, HashMap.class); - headers.forEach((k,v) -> httpHeaders.put(k,v)); - } - if(logger.isDebugEnabled()) { - logger.debug("headers : {} ", Tool.JSONUtil.toJsonStr(headers)); - logger.debug("parameter : {} ", Tool.JSONUtil.toJsonStr(parameter)); - } - //构造请求参数 - RequestEntity requestEntity = this.buildRequestEntity(targetUrl, method, httpHeaders, parameter); - //发送请求,获取响应结果 - ResponseEntity<LinkedHashMap> responseEntity = restTemplate.exchange(requestEntity, LinkedHashMap.class); - HttpStatus statusCode = responseEntity.getStatusCode(); - HttpHeaders responseHeader = responseEntity.getHeaders(); - logger.info("targetUrl : {},statusCode : {}", targetUrl,statusCode.toString()); - LinkedHashMap body = responseEntity.getBody(); - //返回实际请求url,便于开发测试 - body.put("originalUrl", requestEntity.getUrl().toString()); - if(logger.isDebugEnabled()) { - logger.debug("target body: {}", Tool.JSONUtil.toJsonStr(body)); - } - int code = statusCode.value(); - // 代理返回 错误,直接返回 - if(code > 399) { - this.responseError(response, code, statusCode.name(), Tool.JSONUtil.toJsonStr(body)); - return; - } - //请求galaxy接口 - /*处理接口返回的内容*/ - bindings.put("status", code); - bindings.put("result", body); - bindings.put("responseHeader", responseHeader); - if (Tool.StrUtil.isNotBlank(postHandle)) { - jsEngine.eval(postHandle, bindings); - } - response.reset(); - /*组织响应前端的内容*/ - response.setStatus(code); - responseHeader = (HttpHeaders)bindings.get("responseHeader"); - if(Tool.CollUtil.isNotEmpty(responseHeader)) { - //responseHeader.forEach((k,v) -> response.setHeader(k, Tool.StrUtil.join(";", v.toArray()))); - responseHeader.forEach((k,v) -> { - if(StrUtil.equals(k, "Content-Length")) { - response.setHeader("Transfer-encoding", "Chunked"); - }else { - response.setHeader(k, Tool.StrUtil.join(";", v.toArray())); - } - }); - } - //设置 cors 响应头 - this.setCorsHeaders(response); - Tool.IoUtil.writeUtf8(response.getOutputStream(), false, JSON.toJSONString(bindings.get("result"),SerializerFeature.WriteMapNullValue)); - response.flushBuffer(); - } catch (ScriptException e) { - logger.error(e, "script error,preHandle : {},postHandle : {}",preHandle,postHandle); - } - - } - - private void setCorsHeaders(HttpServletResponse response) { - Set<Entry<String,String>> entrySet = CORS_HEADER.entrySet(); - entrySet.forEach((en)->{ - response.setHeader(en.getKey(), en.getValue()); - }); - } - - /** - * 响应错误信息 - * @param response - * @param code - * @param msg - * @param body - * @throws IOException - */ - private void responseError(HttpServletResponse response,int code,String msg,String body) throws IOException { - response.reset(); - response.setStatus(code, msg); - //设置 cors 响应头 - this.setCorsHeaders(response); - response.setHeader("Content-Type", "application/json;charset=UTF-8"); - if(body != null) { - Tool.IoUtil.writeUtf8(response.getOutputStream(), false, body); - } - response.flushBuffer(); - } - - - - @SuppressWarnings("all") - private RequestEntity buildRequestEntity(String url,String method,MultiValueMap httpHeaders,Map<String,String> params) { - boolean isGet = Tool.StrUtil.equalsIgnoreCase(method, "GET"); - RequestEntity requestEntity = null; - if(isGet) { - if(Tool.MapUtil.isNotEmpty(params)) { - if(url.endsWith("/")) { - url = url.substring(0, url.length() -1); - } - StringBuilder sb = new StringBuilder(url); - if(!url.endsWith("?")) { - sb.append("?"); - } - params.forEach((k,v) -> { - try { - String encode = URLEncoder.encode(v, "UTF-8").replaceAll("\\+", "%20"); - sb.append(k).append("=").append(encode).append("&"); - } catch (UnsupportedEncodingException e) { - logger.error(e); - } - // sb.append(k).append("=").append(v).append("&"); - }); - sb.deleteCharAt(sb.length()-1); - url = sb.toString(); - } - } - requestEntity = new RequestEntity((isGet?null:params),httpHeaders, HttpMethod.valueOf(method), URI.create(url)); - return requestEntity; - } - - - -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/dao/GalaxyProxyDao.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/dao/GalaxyProxyDao.java deleted file mode 100644 index d61c392..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/dao/GalaxyProxyDao.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.geedge.modules.galaxy.dao; - -import java.util.List; -import java.util.Map; - -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; - -import net.geedge.modules.galaxy.entity.GalaxyProxy; - -@Mapper -public interface GalaxyProxyDao extends BaseMapper<GalaxyProxy> { - - List<GalaxyProxy> queryPage(IPage<GalaxyProxy> page, @Param("params") Map<String, Object> params); - - GalaxyProxy selectInfo(@Param("id") Integer id); - - void insertGalaxyProxyList(List<GalaxyProxy> galaxyProxyList); - - void deleteTable(); - -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/entity/GalaxyProxy.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/entity/GalaxyProxy.java deleted file mode 100644 index d3b5c62..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/entity/GalaxyProxy.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.geedge.modules.galaxy.entity; - -import java.util.Date; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; - -import lombok.Data; - -@Data -@TableName("galaxy_proxy") -public class GalaxyProxy { - @TableId - private Integer id; - private String name; - private String path; - private String version; - private String method; - private String targetUrl; - private String targetParam; - private String targetHeader; - private String preHandle; - private String postHandle; - private Date ctime; - private Date utime; - private Integer state; - private String remark; -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/service/GalaxyProxyService.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/service/GalaxyProxyService.java deleted file mode 100644 index fbe0824..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/service/GalaxyProxyService.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.geedge.modules.galaxy.service; - -import java.io.IOException; -import java.util.Map; - -import com.baomidou.mybatisplus.extension.service.IService; - -import net.geedge.common.utils.PageUtils; -import net.geedge.modules.galaxy.entity.GalaxyProxy; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; - -public interface GalaxyProxyService extends IService<GalaxyProxy> { - - PageUtils queryPage(Map<String, Object> params); - - GalaxyProxy queryInfo(Integer id); - - Integer saveOrUpdateGalaxyProxy(GalaxyProxy galaxyProxy); - - void removeGalaxyProxy(String ids); - - void importFile(MultipartFile file) throws IOException; - - void exportFile(HttpServletResponse response) throws Exception; -} diff --git a/cn-admin/src/main/java/net/geedge/modules/galaxy/service/impl/GalaxyProxyImpl.java b/cn-admin/src/main/java/net/geedge/modules/galaxy/service/impl/GalaxyProxyImpl.java deleted file mode 100644 index 4d4249f..0000000 --- a/cn-admin/src/main/java/net/geedge/modules/galaxy/service/impl/GalaxyProxyImpl.java +++ /dev/null @@ -1,142 +0,0 @@ -package net.geedge.modules.galaxy.service.impl; - -import java.io.*; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.*; - -import cn.hutool.json.JSONArray; -import com.alibaba.fastjson.JSON; -import net.geedge.common.exception.CNException; -import net.geedge.common.utils.*; -import org.apache.commons.lang.StringEscapeUtils; -import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.log.Log; -import net.geedge.common.smartvalidate.ValidateUtils; -import net.geedge.modules.galaxy.dao.GalaxyProxyDao; -import net.geedge.modules.galaxy.entity.GalaxyProxy; -import net.geedge.modules.galaxy.service.GalaxyProxyService; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; - -@Service("galaxyProxyService") -public class GalaxyProxyImpl extends ServiceImpl<GalaxyProxyDao, GalaxyProxy> implements GalaxyProxyService { - - private Log log = Log.get(); - - @Override - public PageUtils queryPage(Map<String, Object> params) { - IPage<GalaxyProxy> page = this.page(new Query(GalaxyProxy.class).getPage(params)); - List<GalaxyProxy> list = this.baseMapper.queryPage(page, params); - page.setRecords(list); - return new PageUtils(page); - } - - @Override - public GalaxyProxy queryInfo(Integer id) { - return this.baseMapper.selectInfo(id); - } - - @Override - public Integer saveOrUpdateGalaxyProxy(GalaxyProxy galaxyProxy) { - ValidateGalaxyProxy(galaxyProxy); - if (ObjectUtil.isEmpty(galaxyProxy.getId())) { - galaxyProxy.setCtime(new Date()); - } - galaxyProxy.setUtime(new Date()); - this.saveOrUpdate(galaxyProxy); - //清空缓存 - Tool.FreeMarkerUtil.clearTemlateCache(); - return galaxyProxy.getId(); - } - - @Override - public void removeGalaxyProxy(String ids) { - // 删除 - this.removeByIds(Arrays.asList(ids.split(","))); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void importFile(MultipartFile file) throws IOException { - StringBuffer stringBuffer = new StringBuffer(); - Reader reader = null; - try { - InputStream fileInputStream = file.getInputStream(); - reader = new InputStreamReader(fileInputStream, "utf-8"); - int ch = 0; - while ((ch = reader.read()) != -1) { - stringBuffer.append((char) ch); - } - } catch (IOException e) { - throw new CNException(RCode.PANEL_IMPORTFILE_FAILED); - } finally { - reader.close(); - } - JSONArray jsonArray = Tool.JSONUtil.parseArray(stringBuffer.toString()); - List<GalaxyProxy> galaxyProxyList = Tool.JSONUtil.toList(jsonArray, GalaxyProxy.class); - galaxyProxyList.forEach(galaxyProxy -> { - galaxyProxy.setUtime(new Date()); - galaxyProxy.setCtime(new Date()); - galaxyProxy.setState(1); - }); - //清空数据表 - this.baseMapper.deleteTable(); - this.baseMapper.insertGalaxyProxyList(galaxyProxyList); - Tool.FreeMarkerUtil.clearTemlateCache(); - } - - @Override - public void exportFile(HttpServletResponse response) throws IOException { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String fileName = "setting-" + simpleDateFormat.format(new Date()).replaceAll("-", "") + ".json"; - List<GalaxyProxy> list = this.list(); - if (ObjectUtil.isEmpty(list)) { - throw new CNException("galaxy配置信息不存在"); - } - JSONArray jsonArray = Tool.JSONUtil.parseArray(list); - response.setCharacterEncoding("utf-8"); - //设置响应的内容类型 - response.setContentType("application/octet-stream"); - //设置文件的名称和格式 - response.addHeader("Content-Disposition", "attachment;filename=" + fileName); - ServletOutputStream outStr = null; - try { - outStr = response.getOutputStream(); - outStr.write(jsonArray.toString().getBytes(StandardCharsets.UTF_8)); - outStr.flush(); - } catch (IOException e) { - throw new CNException("文件导出失败"); - } finally { - outStr.close(); - } - } - - public void ValidateGalaxyProxy(GalaxyProxy galaxyProxy) { - ValidateUtils.is(galaxyProxy.getName()).notNull(RCode.GALAXY_PROXY_NAME_ISNULL) - .and(galaxyProxy.getMethod()).notNull(RCode.GALAXY_PROXY_METHOD_ISNULL) - .and(galaxyProxy.getTargetUrl()).notNull(RCode.GALAXY_PROXY_TARGET_URL_ISNULL); - - //设置默认值 - if (Tool.StrUtil.isBlank(galaxyProxy.getTargetParam())) { - galaxyProxy.setTargetParam(Tool.StrUtil.EMPTY); - } - if (Tool.StrUtil.isBlank(galaxyProxy.getTargetHeader())) { - galaxyProxy.setTargetHeader(Tool.StrUtil.EMPTY_JSON); - } - if (Tool.StrUtil.isBlank(galaxyProxy.getPreHandle())) { - galaxyProxy.setPreHandle(Tool.StrUtil.EMPTY); - } - if (Tool.StrUtil.isBlank(galaxyProxy.getPostHandle())) { - galaxyProxy.setPostHandle(Tool.StrUtil.EMPTY); - } - } -} diff --git a/cn-admin/src/main/java/net/geedge/modules/report/job/ReportHandlerTask.java b/cn-admin/src/main/java/net/geedge/modules/report/job/ReportHandlerTask.java index 5253b27..5e3ce72 100644 --- a/cn-admin/src/main/java/net/geedge/modules/report/job/ReportHandlerTask.java +++ b/cn-admin/src/main/java/net/geedge/modules/report/job/ReportHandlerTask.java @@ -177,7 +177,6 @@ public class ReportHandlerTask extends QuartzJobBean { param.put("custom.report.sql", querySql); CompletableFuture<Map<String, Object>> future = CompletableFuture.supplyAsync(() -> { - //JSONObject result = HttpClientUtils.httpPost(createJobPath, JSON.toJSONString(param)); ResponseEntity<Object> response = restTemplate.exchange(createJobPath, HttpMethod.POST, new HttpEntity<Object>(param), Object.class, new HashMap<String,Object>()); Map result = (Map) response.getBody(); result.put("taskId", task.getId()); @@ -234,7 +233,6 @@ public class ReportHandlerTask extends QuartzJobBean { //http://ip:port/admin/query/jobs/[jobId]/status String modifyJobPath = StrUtil.str(rpcHost+"admin/query/jobs/"+task.getCredential()+"/status"); CompletableFuture<Map<String, Object>> future = CompletableFuture.supplyAsync(() -> { - //JSONObject result = HttpClientUtils.httpGet(modifyJobPath); ResponseEntity<Map> response = restTemplate.getForEntity(modifyJobPath,Map.class); Map result = (Map) response.getBody(); result.put("taskId", task.getId()); @@ -301,7 +299,6 @@ public class ReportHandlerTask extends QuartzJobBean { CompletableFuture<Map<String, Object>> future = CompletableFuture.supplyAsync(() -> { // http://ip:port/admin/query/jobs/[jobId]/report String resultJobPath = StrUtil.str(rpcHost+"admin/query/jobs/"+task.getCredential()+"/report"); -// JSONObject result = HttpClientUtils.httpGet(resultJobPath); ResponseEntity<Map> response = restTemplate.getForEntity(resultJobPath,Map.class); Map result = (Map) response.getBody(); result.put("taskId", task.getId()); @@ -397,30 +394,11 @@ public class ReportHandlerTask extends QuartzJobBean { * 判断是否上传到s3服务器 */ public void s3Upload() { - /*Integer pdfWidth = 1000; - Integer pdfHeight = 1700; - pdfWidth = StrUtil.isEmpty(sysConfigService.getValue("pdf_width"))?pdfWidth:Integer.valueOf(sysConfigService.getValue("pdf_width")); - pdfHeight = StrUtil.isEmpty(sysConfigService.getValue("pdf_height"))?pdfWidth:Integer.valueOf(sysConfigService.getValue("pdf_height"));*/ String s3Enable = sysConfigService.getValue("s3_enable"); List<ReportJob> finishJobs = reportJobService.list(new QueryWrapper<ReportJob>().lambda().eq(ReportJob::getState, 1).eq(ReportJob::getUpload, 0)); for(ReportJob reportJob : finishJobs) { try { if(Integer.valueOf(s3Enable)==1) { - /*BufferedOutputStream outputStream = FileUtil.getOutputStream(Constant.TEMP_PATH + File.separator + reportJob.getName()+reportJob.getCtime().getTime()+".pdf"); - String html = reportJobService.queryView(reportJob.getId()); - if(StrUtil.isEmpty(html)) { - log.error("s3Upload get html content error"); - continue; - } - ConverterProperties converterProperties = new ConverterProperties(); - FontProvider fontProvider = new DefaultFontProvider(); - FontProgram fontProgram = FontProgramFactory - .createFont(Constant.CONFIG_PATH+File.separator+"simsun.ttc,1"); - fontProvider.addFont(fontProgram); - converterProperties.setFontProvider(fontProvider); - PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputStream)); - pdfDoc.setDefaultPageSize(new PageSize(pdfWidth,pdfHeight)); - HtmlConverter.convertToPdf(html,pdfDoc,converterProperties);*/ String html = reportJobService.queryView(reportJob.getId()); if(StrUtil.isEmpty(html)) { log.error("s3Upload get html content error"); diff --git a/cn-admin/src/main/java/net/geedge/modules/report/service/impl/ReportJobServiceImpl.java b/cn-admin/src/main/java/net/geedge/modules/report/service/impl/ReportJobServiceImpl.java index 45a99f9..68e6d4d 100644 --- a/cn-admin/src/main/java/net/geedge/modules/report/service/impl/ReportJobServiceImpl.java +++ b/cn-admin/src/main/java/net/geedge/modules/report/service/impl/ReportJobServiceImpl.java @@ -149,7 +149,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i } public String renderHtml(Integer jobId,List<ReportTask> reportTasks,List<ReportResult> reportResults) { - String driverEnable = sysConfigService.getValue("driver_enable"); String uiStaticUrl = sysConfigService.getValue("ui_static_url"); String reportJsCommon = sysConfigService.getValue("report_js_common"); String reportFreemarkerCommon = sysConfigService.getValue("report_freemarker_common"); @@ -159,7 +158,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i uiStaticUrl = "localhost"; } String html = ""; - ChromeDriver driver =null; StringWriter writer =null; try { // 获取html模板信息 @@ -197,27 +195,9 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i template.process(data, writer); writer.flush(); html = writer.toString(); - // 判断是否开启引擎 - /*if(StrUtil.isNotBlank(driverEnable) && StrUtil.equals(driverEnable, "1")) { - if(CommonUtils.isLinux()) { - System.setProperty("webdriver.chrome.driver", Constant.CONFIG_PATH + File.separator + "chromedriver"); - }else { - System.setProperty("webdriver.chrome.driver", Constant.CONFIG_PATH + File.separator + "chromedriver.exe"); - } - ChromeOptions options = new ChromeOptions(); - // 后台运行,不弹出浏览器 - options.addArguments("--headless"); - options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems - options.addArguments("--no-sandbox"); // Bypass OS security model - options.addArguments("--window-size=1920x1080"); - driver = new ChromeDriver(options); - driver.navigate().to("data:text/html;charset=utf-8," + html); - html = (String) driver.executeScript("return document.documentElement.innerHTML;"); - }*/ String htmlName = reportJob.getName()+reportJob.getCtime().getTime()+".html"; String fileName = reportJob.getName()+reportJob.getCtime().getTime()+".pdf"; File file = FileUtil.file(Constant.TEMP_PATH + File.separator +htmlName); - File pdfFile = FileUtil.file(Constant.TEMP_PATH + File.separator +fileName); // 删除废弃文件 if(file.exists()) { file.delete(); @@ -229,14 +209,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i html=""; log.error("render report html error : {}",e.getMessage()); }finally { - /*if(ObjectUtil.isNotEmpty(driver)) { - try { - driver.close(); - } catch (Exception e) { - log.error(e.getMessage()); - } - driver.quit(); - }*/ IoUtil.close(writer); } return html; @@ -245,10 +217,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i @Override public void downloadPdf(Integer jobId, HttpServletResponse response) throws Exception{ ReportJob job = this.getBaseMapper().selectById(jobId); - Integer pdfWidth = 1000; - Integer pdfHeight = 1700; - pdfWidth = StrUtil.isEmpty(sysConfigService.getValue("pdf_width"))?pdfWidth:Integer.valueOf(sysConfigService.getValue("pdf_width")); - pdfHeight = StrUtil.isEmpty(sysConfigService.getValue("pdf_height"))?pdfWidth:Integer.valueOf(sysConfigService.getValue("pdf_height")); String s3Enable = sysConfigService.getValue("s3_enable"); String s3Path = sysConfigService.getValue("s3_path"); String s3BucketName = sysConfigService.getValue("s3_bucket_name"); @@ -282,16 +250,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i request.releaseConnection(); createDefault.close(); }else if(job.getState()==1){ - /*String htmlContent = this.queryView(jobId); - ConverterProperties converterProperties=new ConverterProperties(); - FontProvider fontProvider=new DefaultFontProvider(); - FontProgram fontProgram = FontProgramFactory.createFont(Constant.CONFIG_PATH+File.separator+"simsun.ttc,1"); - fontProvider.addFont(fontProgram); - converterProperties.setFontProvider(fontProvider); - // HtmlConverter.convertToPdf(htmlContent,response.getOutputStream(),converterProperties); - PdfDocument pdfDoc = new PdfDocument(new PdfWriter(response.getOutputStream())); - pdfDoc.setDefaultPageSize(new PageSize(pdfWidth,pdfHeight)); - HtmlConverter.convertToPdf(htmlContent,pdfDoc,converterProperties);*/ this.queryView(jobId); String fileName = job.getName()+job.getCtime().getTime()+".pdf"; File file = FileUtil.file(Constant.TEMP_PATH + File.separator+fileName); @@ -355,14 +313,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i request.releaseConnection(); createDefault.close(); }else if(job.getState()==1){ - /*String htmlContent = this.queryView(job.getId()); - ConverterProperties converterProperties=new ConverterProperties(); - FontProvider fontProvider=new DefaultFontProvider(); - FontProgram fontProgram = FontProgramFactory.createFont(Constant.CONFIG_PATH+File.separator+"simsun.ttc,1"); - fontProvider.addFont(fontProgram); - converterProperties.setFontProvider(fontProvider); - HtmlConverter.convertToPdf(htmlContent,outputStream,converterProperties); - files.add(FileUtil.file(Constant.TEMP_PATH+File.separator+fileName));*/ this.queryView(job.getId()); File f = FileUtil.file(Constant.TEMP_PATH + File.separator+fileName); boolean exist = FileUtil.exist(f); @@ -375,11 +325,9 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i throw new CNException(RCode.REPORT_NOT_FINSHED); } } - if(ObjectUtil.isEmpty(files)) { throw new CNException(RCode.REPORT_NOT_FINSHED); } - response.setHeader("Content-Disposition", "attachment;filename=report.zip"); response.setContentType("application/zip"); response.setCharacterEncoding(StandardCharsets.UTF_8.name()); @@ -439,7 +387,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i // 创建桶,如果存储桶已存在会创建失败 s3.createBucket(createBucketRequest); } - // 创建ObjectMetadata对象,可以设置S3请求头信息 ObjectMetadata metadata = new ObjectMetadata(); // 设置content-type,对应于文件的类型,最好也设置 @@ -455,7 +402,6 @@ public class ReportJobServiceImpl extends ServiceImpl<ReportJobDao, ReportJob> i s3.putObject(bucketName, fileName, inputStream, metadata); // 关闭流 IoUtil.close(inputStream); - // 关闭AmazonS3Client s3.shutdown(); } diff --git a/cn-admin/src/main/resources/config/cn.properties b/cn-admin/src/main/resources/config/cn.properties index 8c30230..e74e884 100644 --- a/cn-admin/src/main/resources/config/cn.properties +++ b/cn-admin/src/main/resources/config/cn.properties @@ -2,11 +2,11 @@ server.port=8090 cn.inited=2 database.name=cn-test -database.host=192.168.40.42 +database.host=192.168.44.53 database.port=3306 database.user=root -database.pin=111111 -redis.host=192.168.40.41 +database.pin=69a494821500d42563e1b61cbd117fea +redis.host=192.168.44.54 redis.port=6379 redis.database=11 redis.pin= diff --git a/cn-admin/src/main/resources/db/R__AZ_galaxy_proxy.sql b/cn-admin/src/main/resources/db/R__AZ_galaxy_proxy.sql deleted file mode 100644 index 290c7ad..0000000 --- a/cn-admin/src/main/resources/db/R__AZ_galaxy_proxy.sql +++ /dev/null @@ -1,597 +0,0 @@ -/* -* galaxy proxy 表及记录 -* Date: 09/10/2021 09:53:44 -* 2021年10月9日11:57:43 -* 1、更改 实体详情 trafficMap posthandle -*/ - - -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ---------------------------- --- Table structure for galaxy_proxy --- ---------------------------- -DROP TABLE IF EXISTS `galaxy_proxy`; -CREATE TABLE `galaxy_proxy` ( - `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', - `path` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '前端请求路径', - `version` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '版本', - `method` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'GET' COMMENT '请求方式', - `target_url` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '目标url-galaxy接口', - `target_param` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '目标请求参数模板', - `target_header` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '目标请求头参数模板', - `pre_handle` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '调用前执行', - `post_handle` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '调用后执行', - `ctime` datetime(0) NOT NULL COMMENT '创建时间', - `utime` datetime(0) NOT NULL COMMENT '更新时间', - `state` int(11) NOT NULL DEFAULT 1 COMMENT '状态 0:停用 1:启用', - `remark` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '备注', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 225 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of galaxy_proxy --- ---------------------------- -INSERT INTO `galaxy_proxy` VALUES (1, 'map', '/traffic/map', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_byte_num) AS sent_bytes, SUM(common_s2c_byte_num) AS received_bytes,<#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.province?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if> SUM(common_sessions) as sessions, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets FROM metric_map WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0>AND server_country = \'${parameter.country}\' AND server_province = \'${parameter.province}\' AND server_region != \'\' <#else> AND server_country = \'${parameter.country}\' AND server_province != \'\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0>,server_province <#if parameter.province?default(\'\')?trim? length gt 0>,server_region</#if></#if> \",\r\n \"option\": \"real-time\", \r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-08 13:43:32', '2021-11-16 12:04:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (2, 'sessions', '/traffic/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM session_record_cn WHERE common_recv_time>=${parameter.startTime} AND common_recv_time<${parameter.endTime} GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if(list.length > 0){\r\n\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序 \r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-08 13:43:32', '2021-06-08 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (3, 'packets', '/traffic/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_s2c_pkt_num)/${parameter.step}) AS packets_received_rate, ROUND(SUM(common_c2s_pkt_num)/${parameter.step}) AS packets_sent_rate, ROUND(SUM(common_c2s_pkt_num + common_s2c_pkt_num)/${parameter.step}) AS packets_rate FROM session_record_cn WHERE common_recv_time >=${parameter.startTime} AND common_recv_time < ${parameter.endTime} GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if(list.length > 0){\r\n\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序 \r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 15:52:13', '2021-06-11 15:52:15', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (4, 'throughput', '/traffic/throughput', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/${parameter.step}) AS bytes_received_rate, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/${parameter.step}) AS bytes_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if(list.length > 0){\r\n\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序 \r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:04:34', '2021-06-11 16:04:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (5, 'activeClientIP', '/traffic/activeClientIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_client_ip AS client_ip, SUM(common_sessions) as sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM metric_top_entity WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_client_ip\' AND order_by = \'${parameter.order}\' AND time_granularity = 60 GROUP BY client_ip ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:08:19', '2021-09-10 02:22:47', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (6, 'activeServerIP', '/traffic/activeServerIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM metric_top_entity WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_server_ip\' AND order_by = \'${parameter.order}\' AND time_granularity = 60 GROUP BY server_ip ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:15:56', '2021-09-10 02:24:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (7, 'topDomains', '/traffic/topDomains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM metric_top_entity WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'domain\' AND order_by = \'${parameter.order}\' AND time_granularity = 60 AND notEmpty(domain) GROUP BY domain ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:18:45', '2021-09-10 02:26:04', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (8, 'toApp', '/traffic/topApp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_name, SUM(common_sessions) as sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM metric_top_entity WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_app_label\' AND order_by = \'${parameter.order}\' AND time_granularity = 60 AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:22:33', '2021-09-10 02:27:59', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (9, 'topDomainCategories', '/traffic/topDomainCategories', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_category_name as domain_category_name, uniq(domain) AS uniq_domains, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND notEmpty(domain_category_name) GROUP BY domain_category_name ORDER BY uniq_domains DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:37:03', '2021-06-11 16:37:05', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (10, 'activeDomainCategories', '/traffic/activeDomainCategories', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain,anyLast(domain_category_name) as category_name, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND notEmpty(domain_category_name) <#if parameter.domainCategoryName?default(\'\')?trim? length gt 0> AND domain_category_name in (<#list parameter.domainCategoryName?split(\",\") as name><#if !name_has_next>\'${name}\'<#else>\'${name}\',</#if></#list>) </#if> GROUP BY domain ORDER BY <#if parameter.order?default(\'\')?trim?length gt 0> ${parameter.order} <#else> sessions </#if> DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:41:37', '2022-02-09 08:37:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (11, 'topDomainReputation', '/traffic/topDomainReputation', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_reputation_level as domain_reputation_level, uniq(domain) AS uniq_domains, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND notEmpty(domain_reputation_level) GROUP BY domain_reputation_level ORDER BY uniq_domains DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:48:21', '2021-06-11 16:48:23', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (12, 'activeDomainReputation', '/traffic/activeDomainReputation', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain,anyLast(domain_reputation_level) AS reputation_level,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets,SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND notEmpty(domain_reputation_level) <#if parameter.domainReputationLevel?default(\'\')?trim? length gt 0> AND domain_reputation_level in (<#list parameter.domainReputationLevel?split(\",\") as level><#if !level_has_next>\'${level}\'<#else>\'${level}\',</#if></#list>) </#if> GROUP BY domain ORDER BY <#if parameter.order?default(\'\')?trim? length gt 0 > ${parameter.order} <#else> sessions </#if> DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-11 16:50:08', '2022-02-09 08:47:06', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (13, 'rtt', '/npm/rtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS value, ROUND(QUANTILE(common_establish_latency_ms,0.5)) AS p50, ROUND(QUANTILE(common_establish_latency_ms,0.9)) AS p90, ROUND(QUANTILE(common_establish_latency_ms,0.99)) AS p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\')\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 5 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:02:32', '2021-09-08 01:31:38', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (14, 'httpResponseTime', '/npm/httpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS value, ROUND(QUANTILE(http_response_latency_ms,0.5)) AS p50, ROUND(QUANTILE(http_response_latency_ms,0.9)) AS p90, ROUND(QUANTILE(http_response_latency_ms,0.99)) AS p99 FROM session_record_cn WHERE common_recv_time>=${parameter.startTime} AND common_recv_time<${parameter.endTime} AND common_schema_type = \'HTTP\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 5 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:04:55', '2021-06-23 18:04:57', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (15, 'sslHandshakeTime', '/npm/sslHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS value, ROUND(QUANTILE(ssl_con_latency_ms,0.5)) AS p50, ROUND(QUANTILE(ssl_con_latency_ms,0.9)) AS p90, ROUND(QUANTILE(ssl_con_latency_ms,0.99)) AS p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 5 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:06:47', '2021-06-23 18:06:49', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (16, 'avgPacketLossRate', '/npm/avgPacketLossRate', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(sequence_gap_loss_percent), 4) AS value, ROUND(QUANTILE(sequence_gap_loss_percent, 0.5), 4) AS p50, ROUND(QUANTILE(sequence_gap_loss_percent, 0.9), 4) AS p90, ROUND(QUANTILE(sequence_gap_loss_percent, 0.99), 4) AS p99 FROM( SELECT ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY granularity )\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 5 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:07:19', '2021-06-23 18:07:21', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (17, 'avgRetransmissionRate', '/npm/avgRetransmissionRate', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(pkt_retrans_percent), 4) AS value, ROUND(QUANTILE(pkt_retrans_percent, 0.5), 4) AS p50, ROUND(QUANTILE(pkt_retrans_percent, 0.9), 4) AS p90, ROUND(QUANTILE(pkt_retrans_percent, 0.99), 4) AS p99 FROM( SELECT ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY granularity )\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 5 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:08:36', '2021-06-23 18:08:38', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (18, 'rttMap', '/npm/rttMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(QUANTILE(common_establish_latency_ms,0.5)) AS establish_latency_p50, ROUND(QUANTILE(common_establish_latency_ms,0.9)) AS establish_latency_p90, ROUND(QUANTILE(common_establish_latency_ms,0.99)) AS establish_latency_p99,<#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> server_province AS server_province, </#if> server_country AS server_country FROM metric_map WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> AND server_region != \'\' AND server_province = \'${parameter.region}\' AND server_country = \'${parameter.country}\' <#else> AND server_region != \'\' AND server_country = \'${parameter.country}\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0> ,server_province <#if parameter.region?default(\'\')?trim? length gt 0> ,server_region </#if> </#if> ORDER BY establish_latency DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:10:16', '2021-11-16 12:04:29', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (19, 'httpResponseTimeMap', '/npm/httpResponseTimeMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency, ROUND(QUANTILE(http_response_latency_ms,0.5)) AS http_response_latency_p50, ROUND(QUANTILE(http_response_latency_ms,0.9)) AS http_response_latency_p90, ROUND(QUANTILE(http_response_latency_ms,0.99)) AS http_response_latency_p99, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if> server_country AS server_country FROM metric_map WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> AND server_region != \'\' AND server_province = \'${parameter.region}\' AND server_country = \'${parameter.country}\' <#else> AND server_province != \'\' AND server_country = \'${parameter.country}\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0> ,server_province <#if parameter.region?default(\'\')?trim? length gt 0> ,server_region </#if> </#if> ORDER BY http_response_latency DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:11:34', '2021-11-16 12:04:25', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (20, 'sslHandshakeTimeMap', '/npm/sslHandshakeTimeMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency, ROUND(QUANTILE(ssl_con_latency_ms,0.5)) AS ssl_con_latency_p50, ROUND(QUANTILE(ssl_con_latency_ms,0.9)) AS ssl_con_latency_p90, ROUND(QUANTILE(ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99,<#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if> server_country AS server_country FROM metric_map WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> AND server_region != \'\' AND server_province = \'${parameter.region}\' AND server_country = \'${parameter.country}\' <#else> AND server_province != \'\' AND server_country = \'${parameter.country}\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0> ,server_province <#if parameter.region?default(\'\')?trim? length gt 0> ,server_region </#if> </#if> ORDER BY ssl_con_latency DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:12:08', '2021-11-16 12:04:18', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (21, 'packetLossMap', '/npm/packetLossMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(sequence_gap_loss_percent), 4) AS sequence_gap_loss_avg, ROUND(QUANTILE(sequence_gap_loss_percent, 0.5), 4) AS sequence_gap_loss_p50, ROUND(QUANTILE(sequence_gap_loss_percent, 0.9), 4) AS sequence_gap_loss_p90, ROUND(QUANTILE(sequence_gap_loss_percent, 0.99), 4) AS sequence_gap_loss_p99, <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> server_province AS server_province, </#if> server_country AS server_country FROM( SELECT ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity, <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> server_province AS server_province, </#if>server_country AS server_country FROM metric_map WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> AND server_region != \'\' AND server_province = \'${parameter.region}\' AND server_country = \'${parameter.country}\' <#else> AND server_region != \'\' AND server_country = \'${parameter.country}\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY granularity,server_country<#if parameter.country?default(\'\')?trim? length gt 0>, server_province <#if parameter.region?default(\'\')?trim? length gt 0> , server_region </#if> </#if> ) GROUP BY server_country<#if parameter.country?default(\'\')?trim? length gt 0>, server_province <#if parameter.region?default(\'\')?trim? length gt 0> ,server_region </#if> </#if> ORDER BY sequence_gap_loss_avg DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:14:10', '2021-11-16 12:04:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (22, 'packetRetransMap', '/npm/packetRetransMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(pkt_retrans_percent), 4) AS pkt_retrans_avg, ROUND(QUANTILE(pkt_retrans_percent, 0.5), 4) AS pkt_retrans_p50, ROUND(QUANTILE(pkt_retrans_percent, 0.9), 4) AS pkt_retrans_p90, ROUND(QUANTILE(pkt_retrans_percent, 0.99), 4) AS pkt_retrans_p99,<#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> server_province AS server_province, </#if> server_country AS server_country FROM( SELECT ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.region?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if>server_country AS server_country FROM metric_map WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.region?default(\'\')?trim? length gt 0> AND server_region != \'\' AND server_province = \'${parameter.region}\' AND server_country = \'${parameter.country}\' <#else> AND server_region != \'\' AND server_country = \'${parameter.country}\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY granularity,server_country<#if parameter.country?default(\'\')?trim? length gt 0>, server_province <#if parameter.region?default(\'\')?trim? length gt 0> , server_region </#if> </#if> ) GROUP BY server_country<#if parameter.country?default(\'\')?trim? length gt 0>, server_province <#if parameter.region?default(\'\')?trim? length gt 0> , server_region </#if> </#if> ORDER BY pkt_retrans_avg DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-23 18:14:48', '2021-11-16 12:04:08', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (23, 'ipFilter', '/entity/ip/filter', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'country\'>locate_country AS country,<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'region\'>locate_region AS region,<#else>asn AS asn,</#if> count(*) AS count FROM ip WHERE 1=1 <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'country\'>and locate_country != \'\'<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'region\'>and locate_region!=\'\'<#else>and asn!=\'\'</#if> <#if parameter.country?default(\'\')?trim? length gt 0 > and locate_country = \'${parameter.country}\'</#if> <#if parameter.region?default(\'\')?trim? length gt 0 > and locate_region = \'${parameter.region}\' </#if><#if parameter.asn?default(\'\')?trim? length gt 0> AND asn in (<#list parameter.asn?split(\",\") as asn><#if !asn_has_next>\'${asn}\'<#else>\'${asn}\',</#if></#list>) </#if><#if parameter.ip?default(\'\')?trim? length gt 0 > and ip_addr = \'${parameter.ip}\'</#if> GROUP BY <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'country\'>country<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'region\'>region<#else>asn</#if> ORDER BY count DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-29 10:55:32', '2021-06-29 10:55:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (24, 'ipList', '/entity/ip/list', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ip_addr AS ip, locate_country AS country, locate_region AS region, asn AS asn FROM ip WHERE 1=1 <#if parameter.country?default(\'\')?trim? length gt 0 > and locate_country = \'${parameter.country}\'</#if> <#if parameter.region?default(\'\')?trim? length gt 0 > and locate_region = \'${parameter.region}\'</#if><#if parameter.asn?default(\'\')?trim? length gt 0 > and asn = ${parameter.asn}</#if><#if parameter.ip?default(\'\')?trim? length gt 0 > and ip_addr = \'${parameter.ip}\'</#if> ORDER BY update_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-29 15:31:41', '2021-06-29 15:31:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (25, 'domainFilter', '/entity/domain/filter', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'categoryGroup\'>category_group AS category_group,<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'categoryName\'>category_name AS category_name,<#else>reputation_level AS reputation_level,</#if> count(*) AS count FROM domain WHERE 1=1 <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'categoryGroup\'>and category_group!=\'\'<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'categoryName\'>and category_name != \'\'<#else>and reputation_level != \'\'</#if> <#if parameter.categoryGroup?default(\'\')?trim? length gt 0 > and category_group = \'${parameter.categoryGroup}\' </#if> <#if parameter.categoryName?default(\'\')?trim? length gt 0 > and category_name = \'${parameter.categoryName}\'</#if><#if parameter.reputationLevel?default(\'\')?trim? length gt 0> AND reputation_level in (<#list parameter.reputationLevel?split(\",\") as reputationLevel><#if !reputationLevel_has_next>\'${reputationLevel}\'<#else>\'${reputationLevel}\',</#if></#list>) </#if><#if parameter.domain?default(\'\')?trim? length gt 0 > and domain_name = \'${parameter.domain}\'</#if> GROUP BY <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'categoryGroup\'>category_group<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'categoryName\'>category_name<#else>reputation_level</#if> ORDER BY count DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-29 15:39:15', '2021-06-29 15:39:17', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (26, 'domainList', '/entity/domain/list', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_name AS domain_name, category_group AS category_group, category_name AS category_name, reputation_level AS reputation_level, reputation_score AS reputation_score FROM domain WHERE 1=1 <#if parameter.categoryGroup?default(\'\')?trim? length gt 0 > and category_group = \'${parameter.categoryGroup}\'</#if> <#if parameter.categoryName?default(\'\')?trim? length gt 0 > and category_name = \'${parameter.categoryName}\'</#if><#if parameter.reputationLevel?default(\'\')?trim? length gt 0 > and reputation_level = \'${parameter.reputationLevel}\'</#if><#if parameter.domain?default(\'\')?trim? length gt 0 > and domain_name = \'${parameter.domain}\'</#if> ORDER BY update_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-29 15:40:15', '2021-06-29 15:40:18', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (27, 'appFilter', '/entity/app/filter', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'appCategory\'>app_category AS app_category,<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'appSubcategory\'>app_subcategory AS app_subcategory,<#else>app_risk AS app_risk,</#if> count(*) AS count FROM app WHERE 1=1 <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'appCategory\'>and app_category != \'\'<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'appSubcategory\'>and app_subcategory != \'\'<#else>and app_risk != \'\'</#if> <#if parameter.appCategory?default(\'\')?trim? length gt 0 > and app_category = \'${parameter.appCategory}\'</#if> <#if parameter.appSubcategory?default(\'\')?trim? length gt 0 > and app_subcategory = \'${parameter.appSubcategory}\'</#if><#if parameter.appRisk?default(\'\')?trim? length gt 0> AND app_risk in (<#list parameter.appRisk?split(\",\") as appRisk><#if !appRisk_has_next>\'${appRisk}\'<#else>\'${appRisk}\',</#if></#list>) </#if><#if parameter.appName?default(\'\')?trim? length gt 0 > and app_name = \'${parameter.appName}\'</#if> GROUP BY <#if parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'appCategory\'>app_category<#elseif parameter.type?default(\'\')?trim? length gt 0&¶meter.type==\'appSubcategory\'>app_subcategory<#else>app_risk</#if> ORDER BY count DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-29 16:17:09', '2021-06-29 16:17:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (28, 'appList', '/entity/app/list', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS app_id, app_name AS app_name, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk FROM app WHERE 1=1 <#if parameter.appCategory?default(\'\')?trim? length gt 0 > and app_category = \'${parameter.appCategory}\'</#if> <#if parameter.appSubcategory?default(\'\')?trim? length gt 0 > and app_subcategory = \'${parameter.appSubcategory}\'</#if><#if parameter.appRisk?default(\'\')?trim? length gt 0 > and app_risk = \'${parameter.appRisk}\'</#if><#if parameter.appName?default(\'\')?trim? length gt 0 > and app_name = \'${parameter.appName}\'</#if> ORDER BY update_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-06-29 16:17:37', '2021-06-29 16:17:40', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (29, 'appRrt', '/npm/appRrt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,common_app_label AS app_name,ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN ( SELECT common_app_label FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_app_label\' AND order_by = \'establish_latency\' AND time_granularity = 60 AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"app_name\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-27 10:41:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (30, 'appHttpResponseTime', '/npm/appHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,common_app_label AS app_name,ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN ( SELECT common_app_label FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_app_label\' AND order_by = \'http_response_latency\' AND time_granularity = 60 AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"app_name\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-27 10:43:30', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (31, 'appSSLHandshakeTime', '/npm/appSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,common_app_label AS app_name,ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN ( SELECT common_app_label FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_app_label\' AND order_by = \'ssl_con_latency\' AND time_granularity = 60 AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"app_name\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-27 10:44:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (32, 'appPacketLoss', '/npm/appPacketLoss', 'v1', 'GET', '/', '{\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,common_app_label AS app_name,ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN (SELECT common_app_label FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_app_label\' AND order_by = \'packet_loss\' AND time_granularity = 60 AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(packet_loss) DESC LIMIT 10 ) GROUP BY stat_time,common_app_label\",\n \"option\": \"real-time\",\n \"format\": \"json\"\n}\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"app_name\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 11:05:51', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (33, 'appPacketRetrans', '/npm/appPacketRetrans', 'v1', 'GET', '/', '{\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS app_name, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN ( SELECT common_app_label FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_app_label\' AND order_by = \'packet_retrans\' AND time_granularity = 60 AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(packet_retrans) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\n \"option\": \"real-time\",\n \"format\": \"json\"\n}\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"app_name\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 11:06:14', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (34, 'domainRrt', '/npm/domainRrt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain,ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'domain\' AND order_by = \'establish_latency\' AND time_granularity = 60 AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-10 01:34:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (35, 'domainHttpResponseTime', '/npm/domainHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,domain AS domain,ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'domain\' AND order_by = \'http_response_latency\' AND time_granularity = 60 AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-10 01:41:44', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (36, 'domainSSLHandshakeTime', '/npm/domainSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'domain\' AND order_by = \'ssl_con_latency\' AND time_granularity = 60 AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-10 01:33:39', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (37, 'domainPacketLoss', '/npm/domainPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'domain\' AND order_by = \'packet_loss\' AND time_granularity = 60 AND notEmpty(domain) GROUP BY domain ORDER BY AVG(packet_loss) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-10 01:36:21', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (38, 'domainPacketRetrans', '/npm/domainPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'domain\' AND order_by = \'packet_retrans\' AND time_granularity = 60 AND notEmpty(domain) GROUP BY domain ORDER BY AVG(packet_retrans) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-10 01:37:47', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (39, 'serverIPRrt', '/npm/serverIPRrt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS server_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_server_ip\' AND order_by = \'establish_latency\' AND time_granularity = 60 GROUP BY common_server_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"server_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-10 02:09:45', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (40, 'serverIPHttpResponseTime', '/npm/serverIPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS server_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_server_ip\' AND order_by = \'http_response_latency\' AND time_granularity = 60 GROUP BY common_server_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"server_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 05:59:31', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (41, 'serverIPSSLHandshakeTime', '/npm/serverIPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS server_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_server_ip\' AND order_by = \'ssl_con_latency\' AND time_granularity = 60 GROUP BY common_server_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"server_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 06:01:35', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (42, 'serverIPPacketLoss', '/npm/serverIPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS server_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_server_ip\' AND order_by = \'packet_loss\' AND time_granularity = 60 GROUP BY common_server_ip ORDER BY AVG(packet_loss) DESC LIMIT 10 ) GROUP BY stat_time, server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"server_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 06:04:04', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (43, 'serverIPPacketRetrans', '/npm/serverIPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS server_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_server_ip\' AND order_by = \'packet_retrans\' AND time_granularity = 60 GROUP BY common_server_ip ORDER BY AVG(packet_retrans) DESC LIMIT 10 ) GROUP BY stat_time, server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"server_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 06:06:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (44, 'clientIPRrt', '/npm/clientIPRrt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS client_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_client_ip\' AND order_by = \'establish_latency\' AND time_granularity = 60 GROUP BY common_client_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"client_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 02:53:03', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (45, 'clientIPHttpResponseTime', '/npm/clientIPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,common_client_ip AS client_ip,ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_client_ip\' AND order_by = \'http_response_latency\' AND time_granularity = 60 GROUP BY common_client_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"client_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 02:28:40', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (46, 'clientIPSSLHandshakeTime', '/npm/clientIPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS client_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_client_ip\' AND order_by = \'ssl_con_latency\' AND time_granularity = 60 GROUP BY common_client_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"client_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 02:36:06', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (47, 'clientIPPacketLoss', '/npm/clientIPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS client_ip, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_client_ip\' AND order_by = \'packet_loss\' AND time_granularity = 60 GROUP BY common_client_ip ORDER BY AVG(packet_loss) DESC LIMIT 10 ) GROUP BY stat_time, client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"client_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 03:27:57', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (48, 'clientIPPacketRetrans', '/npm/clientIPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS client_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM metric_top_entity WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND group_by = \'common_client_ip\' AND order_by = \'packet_retrans\' AND time_granularity = 60 GROUP BY common_client_ip ORDER BY AVG(packet_retrans) DESC LIMIT 10 ) GROUP BY stat_time, client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"client_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new java.util.ArrayList();\r\n values.add(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-09 03:31:50', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (50, 'appDetailId', '/entity/app/detail/id', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS app_id, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk FROM app WHERE app_id = \'${parameter.appId?js_string}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n o.result=o.result[0][\"app_id\"]\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (51, 'appDetailCategory', '/entity/app/detail/category', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS app_id, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk FROM app WHERE app_id = \'${parameter.appId?js_string}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n o.result=o.result[0][\"app_category\"]\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (52, 'appDetailSubcategory', '/entity/app/detail/subcategory', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS app_id, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk FROM app WHERE app_id = \'${parameter.appId?js_string}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n o.result=o.result[0][\"app_subcategory\"]\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (53, 'appDetailRisk', '/entity/app/detail/risk', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS app_id, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk FROM app WHERE app_id = \'${parameter.appId?js_string}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n o.result=o.result[0][\"app_risk\"]\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (54, 'appDetailTrafficMap', '/entity/app/detail/trafficMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_sessions) as sessions FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' <#if parameter.country?default(\'\')?trim? length gt 0> AND server_province != \'\' AND server_country = \'${parameter.country}\' <#else> AND server_country != \'\' </#if> GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> server_country, server_province <#else> server_country </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 12:04:00', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (55, 'appDetailSessions', '/entity/app/detail/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-24 09:37:14', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (56, 'appDetailPackets', '/entity/app/detail/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_s2c_pkt_num)/${parameter.step}) AS bytes_received_rate, ROUND(SUM(common_c2s_pkt_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_c2s_pkt_num + common_s2c_pkt_num)/${parameter.step}) AS bytes_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n if(key === \"packets_received_rate\" ){\r\n lineObj.legend = \"received rate\";\r\n }else if(key === \"packets_sent_rate\" ){\r\n lineObj.legend = \"sent rate\";\r\n }else if(key === \"packets_rate\" ){\r\n lineObj.legend = \"rate\";\r\n }else{\r\n lineObj.legend = key;\r\n }\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-24 09:38:51', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (57, 'appDetailThroughput', '/entity/app/detail/throughput', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/${parameter.step}) AS bytes_received_rate, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/${parameter.step}) AS bytes_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n if(key === \"bytes_received_rate\" ){\r\n lineObj.legend = \"received rate\";\r\n }else if(key === \"bytes_sent_rate\" ){\r\n lineObj.legend = \"sent rate\";\r\n }else if(key === \"bytes_rate\" ){\r\n lineObj.legend = \"rate\";\r\n }else{\r\n lineObj.legend = key;\r\n }\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-24 09:39:58', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (58, 'appDetailActiveClientIP', '/entity/app/detail/activeClientIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_client_ip AS client_ip, SUM(common_sessions) as sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY client_ip ORDER BY ${parameter.order} DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (59, 'appDetailActiveServerIP', '/entity/app/detail/activeServerIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY server_ip ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-24 09:41:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (60, 'appDetailTopDomains', '/entity/app/detail/topDomains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND common_app_label = \'${parameter.app}\' GROUP BY domain ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-24 09:42:39', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (61, 'appDetailAppRtt', '/entity/app/detail/appRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY stat_time limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (62, 'appDetailAppHttpResponseTime', '/entity/app/detail/appHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY stat_time limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (63, 'appDetailAppSSLHandshakeTime', '/entity/app/detail/appSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY stat_time limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (64, 'appDetailAppPacketLoss', '/entity/app/detail/appPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY stat_time limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (65, 'appDetailAppPacketRetrans', '/entity/app/detail/appPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY stat_time limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (66, 'appDetailDomainRtt', '/entity/app/detail/domainRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (67, 'appDetailDomainHttpResponseTime', '/entity/app/detail/domainHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n\r\n\r\n\r\n\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-30 04:18:42', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (68, 'appDetailDomainSSLHandshakeTime', '/entity/app/detail/domainSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n\r\n\r\n\r\n\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-30 04:21:45', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (69, 'appDetailDomainPacketLoss', '/entity/app/detail/domainPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-10-08 07:02:02', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (70, 'appDetailDomainPacketRetrans', '/entity/app/detail/domainPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-10-08 07:03:58', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (71, 'domainCategoryServerIpList', '/traffic/domainCategoryServerIpList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip,anyLast(domain_category_name) as category_name,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets,SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_server_ip) AND notEmpty(domain_category_name) AND domain = \'${parameter.domain}\' GROUP BY server_ip ORDER BY <#if parameter.order?default(\'\')?trim?length gt 0> ${parameter.order} <#else> sessions </#if> DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-02 15:15:57', '2022-02-09 08:45:54', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (72, 'domainReputationServerIpList', '/traffic/domainReputationServerIpList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip,anyLast(domain_reputation_level) AS reputation_level,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets,SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_server_ip) AND notEmpty(domain_reputation_level) AND domain = \'${parameter.domain}\' GROUP BY server_ip ORDER BY <#if parameter.order?default(\'\')?trim?length gt 0> ${parameter.order} <#else> sessions </#if> DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-02 15:18:29', '2022-02-09 08:47:59', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (73, 'appDetailServerIPRtt', '/entity/app/detail/serverIPRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time , common_server_ip AS common_server_ip , ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip IN ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:38:36', '2021-07-22 11:38:38', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (74, 'appDetailServerIPHttpResponseTime', '/entity/app/detail/serverIPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time , common_server_ip AS common_server_ip , ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip IN ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-07-22 11:53:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (75, 'appDetailServerIPSSLHandshakeTime', '/entity/app/detail/serverIPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time , common_server_ip AS common_server_ip , ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip IN ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-07-22 11:53:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (76, 'appDetailServerIPPacketLoss', '/entity/app/detail/serverIPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-10-08 07:08:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (77, 'appDetailServerIPPacketRetrans', '/entity/app/detail/serverIPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-10-08 07:09:21', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (78, 'appDetailClientIPRtt', '/entity/app/detail/clientIPRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time , common_client_ip AS common_client_ip , ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-07-22 11:53:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (79, 'appDetailClientIPHttpResponseTime', '/entity/app/detail/clientIPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time , common_client_ip AS common_client_ip , ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-07-22 11:53:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (80, 'appDetailClientIPSSLHandshakeTime', '/entity/app/detail/clientIPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time , common_client_ip AS common_client_ip , ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-07-22 11:53:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (81, 'appDetailClientIPPacketLoss', '/entity/app/detail/clientIPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-10-08 07:12:55', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (82, 'appDetailClientIPPacketRetrans', '/entity/app/detail/clientIPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-22 11:53:22', '2021-10-08 07:13:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (83, 'domainDetailCategory', '/entity/domain/detail/category', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT category_name AS fqdn_category_name FROM domain WHERE domain_name = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (84, 'domainDetailCategoryGroup', '/entity/domain/detail/categoryGroup', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT category_group AS fqdn_category_group FROM domain WHERE domain_name = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (85, 'domainDetailReputationLevel', '/entity/domain/detail/reputationLevel', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT reputation_level AS fqdn_reputation_level FROM domain WHERE domain_name = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (86, 'domainDetailRisk', '/entity/domain/detail/risk', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(common_client_ip)) AS count FROM tsg_base_metrics WHERE domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (87, 'domainDetailVisits', '/entity/domain/detail/visits', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,count(distinct(common_client_ip)) AS count FROM tsg_base_metrics WHERE domain = \'${parameter.domain}\' and common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (88, 'domainDetailTrafficMap', '/entity/domain/detail/trafficMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_sessions) as sessions FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' <#if parameter.country?default(\'\')?trim? length gt 0> AND server_province != \'\' AND server_country = \'${parameter.country}\' <#else> AND server_country != \'\' </#if> GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> server_country, server_province <#else> server_country </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 12:03:55', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (89, 'domainDetailSessions', '/entity/domain/detail/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n var lineObj = {};\r\n lineObj.legend = \"session_rate\";\r\n \r\n lineObj.values = values;\r\n \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-28 11:23:49', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (90, 'domainDetailPackets', '/entity/domain/detail/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_s2c_pkt_num)/${parameter.step}) AS packets_received_rate, ROUND(SUM(common_c2s_pkt_num)/${parameter.step}) AS packets_sent_rate, ROUND(SUM(common_c2s_pkt_num + common_s2c_pkt_num)/${parameter.step}) AS packets_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-28 11:27:25', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (91, 'domainDetailThroughput', '/entity/domain/detail/throughput', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/${parameter.step}) AS bytes_received_rate, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/${parameter.step}) AS bytes_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n // lineObj.legend = key;\r\n if(key === \"bytes_received_rate\" ){\r\n lineObj.legend = \"received rate\";\r\n }else if(key === \"bytes_sent_rate\" ){\r\n lineObj.legend = \"sent rate\";\r\n }else if(key === \"bytes_rate\" ){\r\n lineObj.legend = \"rate\";\r\n }else{\r\n lineObj.legend = key;\r\n }\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-18 09:04:48', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (92, 'domainDetailActiveClientIP', '/entity/domain/detail/activeClientIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_client_ip AS client_ip, SUM(common_sessions) as sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY client_ip ORDER BY ${parameter.order} DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (93, 'domainDetailActiveServerIP', '/entity/domain/detail/activeServerIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY server_ip ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (94, 'domainDetailTopAPP', '/entity/domain/detail/topAPP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_id,SUM(common_sessions) AS sessions,SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets,SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND domain = \'${parameter.domain}\' GROUP BY common_app_label ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (95, 'domainDetailDomainRtt', '/entity/domain/detail/domainRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (96, 'domainDetailDomainHttpResponseTime', '/entity/domain/detail/domainHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (97, 'domainDetailDomainSSLHandshakeTime', '/entity/domain/detail/domainSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (98, 'domainDetailDomainPacketLoss', '/entity/domain/detail/domainPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (99, 'domainDetailDomainPacketRetrans', '/entity/domain/detail/domainPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (100, 'domainDetailServerIPRtt', '/entity/domain/detail/serverIPRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (101, 'domainDetailServerIPHttpResponseTime', '/entity/domain/detail/serverIPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (102, 'domainDetailServerIPSSLHandshakeTime', '/entity/domain/detail/serverIPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (103, 'domainDetailServerIPPacketLoss', '/entity/domain/detail/serverIPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-29 07:24:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (104, 'domainDetailServerIPPacketRetrans', '/entity/domain/detail/serverIPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-29 07:24:47', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (105, 'domainDetailClientIPRtt', '/entity/domain/detail/clientIPRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (106, 'domainDetailClientIPHttpResponseTime', '/entity/domain/detail/clientIPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (107, 'domainDetailClientIPSSLHandshakeTime', '/entity/domain/detail/clientIPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (108, 'domainDetailClientIPPacketLoss', '/entity/domain/detail/clientIPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-29 07:45:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (109, 'domainDetailClientIPPacketRetrans', '/entity/domain/detail/clientIPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-29 07:45:40', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (110, 'ipDetailAppCount', '/entity/ip/detail/appCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,count(distinct(common_app_label)) AS app_count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length===0){\r\n var data1={\r\n \"stat_time\":parameter.start,\r\n \"app_count\":0\r\n };\r\n var data2={\r\n \"stat_time\":parameter.end,\r\n \"app_count\":0\r\n };\r\n list.add(data1);\r\n list.add(data2);\r\n }\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n \r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.total =sumValue ;\r\n var lineObj = {};\r\n lineObj.values = values;\r\n var index = key.lastIndexOf(\"_\");\r\n var key1 = key.slice(0,index).replace(\"_\",\" \");\r\n lineObj.legend = key1;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-20 13:42:12', '2021-09-28 09:56:35', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (111, 'ipDetailDomainCount', '/entity/ip/detail/domainCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,count(distinct(domain)) AS domain_count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length===0){\r\n var data1={\r\n \"stat_time\":parameter.start,\r\n \"domain_count\":0\r\n };\r\n var data2={\r\n \"stat_time\":parameter.end,\r\n \"domain_count\":0\r\n };\r\n list.add(data1);\r\n list.add(data2);\r\n }\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n \r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.total =sumValue ;\r\n var lineObj = {};\r\n lineObj.values = values;\r\n var index = key.lastIndexOf(\"_\");\r\n var key1 = key.slice(0,index).replace(\"_\",\" \");\r\n lineObj.legend = key1;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-20 13:42:12', '2021-09-28 09:56:06', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (112, 'ipDetailClientIPCount', '/entity/ip/detail/clientIPCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,count(distinct(common_client_ip)) AS cleint_ip_count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length===0){\r\n var data1={\r\n \"stat_time\":parameter.start,\r\n \"client_ip_count\":0\r\n };\r\n var data2={\r\n \"stat_time\":parameter.end,\r\n \"client_ip_count\":0\r\n };\r\n list.add(data1);\r\n list.add(data2);\r\n }\r\n\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n \r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n \r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.total = sumValue;\r\n var lineObj = {};\r\n lineObj.values = values;\r\n var index = key.lastIndexOf(\"_\");\r\n var key1 = key.slice(0,index).replace(\"_\",\" \");\r\n lineObj.legend = key1;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-20 13:42:12', '2021-09-28 08:58:30', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (113, 'ipDetailAppCountLine', '/entity/ip/detail/appCountLine', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,count(distinct(common_app_label)) AS app_count FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (114, 'ipDetailDomainCountLine', '/entity/ip/detail/domainCountLine', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,count(distinct(domain)) AS domain_count FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push(pojo[key]);\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (115, 'ipDetailClientIPCountLine', '/entity/ip/detail/clientIPCountLine', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,count(distinct(common_client_ip)) AS client_ip_count FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (116, 'ipDetailRegion', '/entity/ip/detail/region', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT locate_region AS region FROM ip WHERE <#if parameter.serverIP?default(\'\')?trim? length gt 0> ip_addr = \'${parameter.serverIP}\' <#else> ip_addr = \'${parameter.clientIP}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (117, 'ipDetailAsn', '/entity/ip/detail/asn', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT asn AS asn FROM ip WHERE <#if parameter.serverIP?default(\'\')?trim? length gt 0> ip_addr = \'${parameter.serverIP}\' <#else> ip_addr = \'${parameter.clientIP}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (118, 'ipDetailCountry', '/entity/ip/detail/country', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT locate_country AS country FROM ip WHERE <#if parameter.serverIP?default(\'\')?trim? length gt 0> ip_addr = \'${parameter.serverIP}\' <#else> ip_addr = \'${parameter.clientIP}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-20 13:42:12', '2021-07-20 13:42:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (119, 'ipDetailTrafficMap', '/entity/ip/detail/trafficMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_sessions) as sessions FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' <#if parameter.country?default(\'\')?trim? length gt 0> AND server_province != \'\' AND server_country = \'${parameter.country}\' <#else> AND server_country != \'\' </#if> GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> server_country, server_province <#else> server_country </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 12:03:48', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (120, 'ipDetailSessions', '/entity/ip/detail/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY stat_time \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction replaceStr(str){ \r\n str = str.toLowerCase();\r\n var reg = /\\b(\\w)|\\s(\\w)/g; \r\n return str.replace(reg,function(m){ \r\n return m.toUpperCase()\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-28 10:29:49', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (121, 'ipDetailPackets', '/entity/ip/detail/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(common_client_ip = \'${parameter.ip}\', common_c2s_pkt_num, common_s2c_pkt_num))/${parameter.step}) AS packets_sent_rate, ROUND(SUM(IF(common_client_ip = \'${parameter.ip}\', common_s2c_pkt_num, common_c2s_pkt_num))/${parameter.step}) AS packets_received_rate , ROUND(SUM(common_c2s_pkt_num + common_s2c_pkt_num)/${parameter.step}) AS packets_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_client_ip = \'${parameter.ip}\' OR common_server_ip = \'${parameter.ip}\') GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n var index = key.indexOf(\"_\")\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-28 10:31:53', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (122, 'ipDetailThroughput', '/entity/ip/detail/throughput', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(common_client_ip = \'${parameter.ip}\', common_c2s_byte_num, common_s2c_byte_num))/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(IF(common_client_ip = \'${parameter.ip}\', common_s2c_byte_num, common_c2s_byte_num))/${parameter.step}) AS bytes_received_rate , ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/${parameter.step}) AS bytes_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_client_ip = \'${parameter.ip}\' OR common_server_ip = \'${parameter.ip}\') GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n var index = key.indexOf(\"_\")\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-30 02:56:56', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (123, 'ipDetailActiveClientIP', '/entity/ip/detail/activeClientIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT IF(common_client_ip = \'${parameter.ip}\', common_server_ip, common_client_ip) AS ip, SUM(common_sessions) as sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip = \'${parameter.ip}\') GROUP BY ip ORDER BY ${parameter.order} DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-29 07:55:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (124, 'ipDetailTopDomains', '/entity/ip/detail/topDomains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND (common_client_ip = \'${parameter.ip}\' or common_server_ip = \'${parameter.ip}\') GROUP BY domain ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-24 09:04:45', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (125, 'ipDetailTopAPP', '/entity/ip/detail/topAPP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app , SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND (common_client_ip = \'${parameter.ip}\' or common_server_ip = \'${parameter.ip}\') GROUP BY app ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-09-28 06:12:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (126, 'ipDetailAppRtt', '/entity/ip/detail/appRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS app_id, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (127, 'ipDetailAppHttpResponseTime', '/entity/ip/detail/appHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS app_id, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (128, 'ipDetailAppSSLHandshakeTime', '/entity/ip/detail/appSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS app_id, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label IN ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (129, 'ipDetailAppPacketLoss', '/entity/ip/detail/appPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,common_app_label AS common_app_label,ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_app_label\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-10-08 06:11:29', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (130, 'ipDetailAppPacketRetrans', '/entity/ip/detail/appPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_app_label AS common_app_label,ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_app_label\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg); \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-10-08 06:12:27', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (131, 'ipDetailDomainRtt', '/entity/ip/detail/domainRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (132, 'ipDetailDomainHttpResponseTime', '/entity/ip/detail/domainHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (133, 'ipDetailDomainSSLHandshakeTime', '/entity/ip/detail/domainSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (134, 'ipDetailDomainPacketLoss', '/entity/ip/detail/domainPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,domain AS domain,ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-10-08 06:03:54', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (135, 'ipDetailDomainPacketRetrans', '/entity/ip/detail/domainPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain,ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-10-08 06:05:53', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (136, 'ipDetailClientIPRtt', '/entity/ip/detail/IPRtt', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> AS <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if>, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> in ( SELECT <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> = \'${parameter.clientIP}\' </#if> AND notEmpty(<#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if>) GROUP BY <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (137, 'ipDetailClientIPHttpResponseTime', '/entity/ip/detail/IPHttpResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> AS <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> in ( SELECT <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> = \'${parameter.clientIP}\' </#if> AND notEmpty(<#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>) GROUP BY <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (138, 'ipDetailClientIPSSLHandshakeTime', '/entity/ip/detail/IPSSLHandshakeTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> AS <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> in ( SELECT <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> = \'${parameter.clientIP}\' </#if> AND notEmpty(<#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>) GROUP BY <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (139, 'ipDetailClientIPPacketLoss', '/entity/ip/detail/IPPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> AS <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> in ( SELECT <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> = \'${parameter.clientIP}\' </#if> AND notEmpty(<#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>) GROUP BY <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (140, 'ipDetailClientIPPacketRetrans', '/entity/ip/detail/IPPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> AS <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> in ( SELECT <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> = \'${parameter.clientIP}\' </#if> AND notEmpty(<#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if>) GROUP BY <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, <#if parameter.serverIP?default(\'\')?trim? length gt 0> <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_client_ip <#else> common_server_ip </#if> <#else> common_server_ip </#if> LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (141, 'entityFilter', '/entity/filter', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.column?default(\'\')?trim? length gt 0> ${parameter.column} AS name </#if>, count(*) AS count FROM <#if parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'ip\'> ip <#elseif parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'domain\'>domain <#else> app </#if> WHERE 1=1 <#if parameter.q?default(\'\')?trim? length gt 0>and ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> GROUP BY name ORDER BY count DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}\r\nif(parameter.where){\r\n var data = JSON.parse(parameter.where);\r\n var str =\'\';\r\n for( key in data){\r\n str += \"and \"+key+\"=\"+\"\'\"+data[key]+\"\'\"\r\n }\r\n str = str.replace(/Unknown/ig,\"\")\r\n parameter.where =str;\r\n}\r\nif(parameter.q){\r\n var q = parameter.q\r\n var arr=[]\r\n q = q.replace(/Unknown/ig,\"\")\r\n if(q.match(/ip_addr/ig)){\r\n arr = q.split(/ip_addr/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"ip_addr\")\r\n }\r\n if(q.match(/domain_name/ig)){\r\n arr = q.split(/domain_name/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"domain_name\")\r\n }\r\n if(q.match(/app_name/ig)){\r\n arr = q.split(/app_name/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"app_name\")\r\n }\r\n parameter.q = q\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n if(!pojo[key]){\r\n pojo[key] = \"Unknown\"\r\n }\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-27 13:51:33', '2021-07-27 13:51:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (142, 'appDetailCount', '/entity/app/detail/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, count(distinct(common_client_ip)) AS count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length===0){\r\n var data1={\r\n \"stat_time\":parameter.start,\r\n \"count\":0\r\n };\r\n var data2={\r\n \"stat_time\":parameter.end,\r\n \"count\":0\r\n };\r\n list.add(data1);\r\n list.add(data2);\r\n }\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n aggregation.total = sumValue;\r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = \"visits\";\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-28 10:02:00', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (143, 'appDetailCountLine', '/entity/app/detail/countLine', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, count(distinct(common_client_ip)) AS count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appId?js_string}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (144, 'domainDetailCount', '/entity/domain/detail/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(common_client_ip)) AS visits FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length===0){\r\n var data1={\r\n \"stat_time\":parameter.start,\r\n \"visits\":0\r\n };\r\n var data2={\r\n \"stat_time\":parameter.end,\r\n \"visits\":0\r\n };\r\n list.add(data1);\r\n list.add(data2);\r\n }\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n aggregation.total = sumValue;\r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-09-28 10:02:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (145, 'domainDetailCountLine', '/entity/domain/detail/countLine', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, count(distinct(common_client_ip)) AS count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (146, 'entityList', '/entity/list', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'ip\'> ip_addr AS ip, locate_country AS country, locate_region AS region, asn AS asn <#elseif parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'domain\'> domain_name AS domain_name, category_group AS category_group, category_name AS category_name, reputation_level AS reputation_level, reputation_score AS reputation_score <#else> app_id AS app_id, app_name AS app_name, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk </#if> FROM <#if parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'ip\'> ip <#elseif parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'domain\'> domain <#else> app </#if> WHERE 1=1 <#if parameter.q?default(\'\')?trim? length gt 0>and ${parameter.q} </#if> ORDER BY update_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0>limit ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (parameter.pageSize) {\r\n if(!parameter.pageNo){\r\n parameter.pageNo=0\r\n }else{\r\n parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize\r\n }\r\n}\r\nif(parameter.q){\r\n var q = parameter.q\r\n var arr=[]\r\n q = q.replace(/Unknown/ig,\"\")\r\n if(q.match(/ip_addr/ig)){\r\n arr = q.split(/ip_addr/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"ip_addr\")\r\n }\r\n if(q.match(/domain_name/ig)){\r\n arr = q.split(/domain_name/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"domain_name\")\r\n }\r\n if(q.match(/app_name/ig)){\r\n arr = q.split(/app_name/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"app_name\")\r\n }\r\n parameter.q = q\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-27 16:38:54', '2021-07-27 16:38:59', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (147, 'entityTotal', '/entity/total', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM <#if parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'ip\'> ip <#elseif parameter.from?default(\'\')?trim? length gt 0&¶meter.from==\'domain\'> domain <#else> app </#if> WHERE 1=1 <#if parameter.q?default(\'\')?trim? length gt 0>and ${parameter.q} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if(parameter.q){\r\n var q = parameter.q\r\n var arr=[]\r\n q = q.replace(/Unknown/ig,\"\")\r\n if(q.match(/ip_addr/ig)){\r\n arr = q.split(/ip_addr/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"ip_addr\")\r\n }\r\n if(q.match(/domain_name/ig)){\r\n arr = q.split(/domain_name/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"domain_name\")\r\n }\r\n if(q.match(/app_name/ig)){\r\n arr = q.split(/app_name/i)\r\n var index1 = arr[1].indexOf(\"\'\")\r\n var index = arr[1].slice(index1+1).indexOf(\"\'\")\r\n arr[1] = arr[1].slice(0,(index1+index+1))+\"%\"+arr[1].slice((index1+index+1))\r\n arr[1] = arr[1].replace(\"=\",\" like\")\r\n q = arr.join(\"app_name\")\r\n }\r\n parameter.q = q\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-27 16:39:23', '2021-07-27 16:39:26', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (148, 'entityIpDetailServerIPCountLine', '/entity/ip/detail/serverIPCountLine', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,<#if parameter.serverIP?default(\'\')?trim? length gt 0> count(distinct(common_server_ip)) AS server_ip_count <#else> count(distinct(common_client_ip)) as client_ip_count</#if> FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND <#if parameter.serverIP?default(\'\')?trim? length gt 0> common_server_ip = \'${parameter.serverIP}\' <#else> common_client_ip = \'${parameter.clientIP}\' </#if> GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push(pojo[key]);\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-08-13 18:27:25', '2021-08-13 18:27:28', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (149, 'entityIpDetailServerIPCount', '/entity/ip/detail/serverIPCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time,count(distinct(common_server_ip)) AS server_ip_count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length===0){\r\n var data1={\r\n \"stat_time\":parameter.start,\r\n \"server_ip_count\":0\r\n };\r\n var data2={\r\n \"stat_time\":parameter.end,\r\n \"server_ip_count\":0\r\n };\r\n list.add(data1);\r\n list.add(data2);\r\n }\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.total = sumValue ;\r\n var lineObj = {};\r\n lineObj.values = values;\r\n var index = key.lastIndexOf(\"_\");\r\n var key1 = key.slice(0,index).replace(\"_\",\" \");\r\n lineObj.legend = key1;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-08-13 18:28:49', '2021-09-28 09:53:15', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (150, 'entityRelationship', '/entity/relationship', 'v1', 'POST', '/cn/v1/entityExplorer', '{\"query\": {\"dataEngine\": \"AnalysisEngine\",\"queryType\": \"entityDetail\",\"dataSource\": \"entity_detail_<#if parameter.type==\'ip\'>ip<#elseif parameter.type==\'app\'>app<#elseif parameter.type==\'dns\'>dns<#else>domain</#if>_view\",\"parameters\": {\"limit\": <#if parameter.limit?default(\'\')?trim? length gt 0>${parameter.limit}<#else>10</#if>,\"sort\": [{\"type\": \"desc\",\"fieldKey\": \"lastTime\"}],\"match\": {\"condition\": [{\"type\": \"exactly\",\"fieldKey\": \"<#if parameter.type==\'ip\'>ip<#elseif parameter.type==\'app\'>app_name<#else>domain</#if>\",\"fieldValues\": [\"${parameter.q?js_string}\"]}]}}}}', '{}', '', 'function handlerResult(obj,data){\r\n if(data!=null&&data!=undefined){\r\n if(data.leaf!=null&&data.leaf!=undefined&&data.leaf.length>0){\r\n for(var i in data.leaf){\r\n handlerResult(obj,data.leaf[i]);\r\n }\r\n }else{\r\n var node = {};\r\n node.name = data.name;\r\n node.type = data.type;\r\n node.lastTime = data.last_time;\r\n\r\n var link = {};\r\n link.from = data.from;\r\n link.to = data.to;\r\n\r\n obj.result.links.push(link);\r\n obj.result.nodes.push(node);\r\n }\r\n }\r\n}\r\n\r\nif(result.success){\r\n if(parameter.format==1){\r\n var o={};\r\n o.resultType=\"relation\";\r\n o.result={};\r\n o.result.nodes=[];\r\n o.result.links=[];\r\n if(result.data!=undefined&&result.data!=null&&result.data.length>0){\r\n handlerResult(o,result.data[0]);\r\n }\r\n result.data=o;\r\n result.code=200;\r\n result.msg = \"\";\r\n result.message=null;\r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n result = JSON.stringify(jsonObj);\r\n }else{\r\n var o={};\r\n if(result.data!=undefined&&result.data!=null&&result.data.length>0){\r\n o.resultType=\"relationTree\";\r\n o.result={};\r\n o.result.type=result.data[0].type;\r\n o.result.name=result.data[0].name;\r\n o.result.leaf=result.data[0].leaf;\r\n }\r\n result.data=o;\r\n result.code=200;\r\n result.msg = \"\";\r\n result.message=null;\r\n }\r\n}', '2021-08-16 09:59:42', '2021-09-27 06:17:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (154, 'ipDetailBasicInfo', '/entity/ip/detail/basicInfo', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT asn AS asn,locate_country AS country,locate_region AS region,locate_longitude AS longitude,locate_latitude AS latitude,\'IDC, China Telecommunications Corporation\' AS asnOrg,\'220.181.32.0/20\' AS asnSubnet,\'China telecom\' AS isp,\'DNS PTR\' AS dnsPTR FROM ip WHERE ip_addr = \'${parameter.ip}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result=result.data[0];\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 03:28:45', '2021-10-09 01:49:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (155, 'ipDetailPorts', '/entity/ip/detail/ports', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_port AS port,anyLast(common_schema_type) AS protocol,anyLast(http_response_line) AS banner,toDateTime(anyLast(common_recv_time)) AS utime FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\') GROUP BY common_server_port\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-09-18 03:32:19', '2022-04-06 09:17:47', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (156, 'ipDetailDomains', '/entity/ip/detail/domains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_client_ip =\'${parameter.ip}\' OR common_server_ip = \'${parameter.ip}\') AND notEmpty(domain) GROUP BY domain ORDER BY SUM(common_sessions) DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'if(result.success){\r\n \r\n var o={};\r\n \r\n var list = result.data;\r\n var arr = new java.util.ArrayList(); \r\n if(list.length > 0){\r\n for(var i=0; i< list.length; i++){\r\n var pojo = list[i];\r\n arr.add(pojo[\"domain\"]) \r\n }\r\n }else{ \r\n arr.add(\"baidu.com\");\r\n arr.add(\"qq.com\");\r\n arr.add(\"taobao.com\"); \r\n }\r\n \r\n o.resultType=\"array\"\r\n o.result=arr;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 03:33:58', '2021-09-18 03:35:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (157, 'ipDdetailServiceOverview', '/entity/ip/detail/serviceOverview', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(AVG(http_response_latency_ms)) AS http_response_latency_ms , ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_ms , ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'if(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result=result.data[0];\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 06:47:39', '2021-10-08 03:30:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (158, 'ipDetailOverallEstablishlatency', '/entity/ip/detail/overallEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-18 06:49:27', '2021-10-08 03:32:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (159, 'ipDetailOverallHttpResponseLatency', '/entity/ip/detail/overallHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-18 06:50:11', '2021-10-08 03:32:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (160, 'ipDetailOverallSslConLatency', '/entity/ip/detail/overallSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-18 06:51:05', '2021-10-08 03:33:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (161, 'ipDetailOverallPacketLoss', '/entity/ip/detail/overallPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-18 06:51:58', '2021-10-08 03:35:00', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (162, 'ipDetailOverallPacketRetrans', '/entity/ip/detail/overallPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-18 06:52:44', '2021-10-08 03:35:21', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (164, 'domainDetailSessions_bak', '/entity/domain/detail/sessions_bak', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-18 08:59:28', '2021-09-18 09:41:02', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (165, 'domainDetailCount_bak', '/entity/domain/detail/count_bak', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT anyLast(fqdn_category_group) AS fqdn_category_group, anyLast(fqdn_category_name) AS fqdn_category_name, anyLast(fqdn_reputation_level) AS fqdn_reputation_level, count(distinct(common_client_ip)) AS count FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n o.result=o.result[0][\"count\"]\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 09:05:26', '2021-09-18 09:41:26', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (166, 'domainDetailBaseInfo', '/entity/domain/detail/basicInfo', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_name AS domain_name,category_group AS fqdn_category_group,category_name AS fqdn_category_name,reputation_level AS fqdn_reputation_level FROM domain WHERE domain_name = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result=result.data[0];\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 09:13:37', '2021-09-18 09:13:37', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (167, 'domainDetailWhois', '/entity/domain/detail/whois', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_name AS domain_name,category_group AS fqdn_category_group,category_name AS fqdn_category_name,reputation_level AS fqdn_reputation_level FROM domain WHERE domain_name = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n var mockData = {\r\n resultType: \"object\",\r\n result: {\r\n \"sponsor\": \"MarkMonitor, Inc.\",\r\n \"org\": \"Computer and Internet Info\",\r\n \"email\": \"Trustworthy\",\r\n \"orgCountry\": \"www.baidu.com\",\r\n \"creationDate\": \"2020年10月11日\",\r\n \"expirationDate\": \" 2026年10月11日\"\r\n }\r\n };\r\n o=mockData;\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 09:15:20', '2021-09-18 09:15:20', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (168, 'domainDetailDnsRecord', '/entity/domain/detail/dnsRecord', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_name AS domain_name,category_group AS fqdn_category_group,category_name AS fqdn_category_name,reputation_level AS fqdn_reputation_level FROM domain WHERE domain_name = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n var data1 = {\r\n \"type\":\"A\",\r\n \"value\":\"102.123.22.11\"\r\n };\r\n var data2 = {\r\n \"type\":\"CNAME\",\r\n \"value\":\"www.baidu.com\"\r\n };\r\n var arr = new java.util.ArrayList(); \r\n arr.add(data1);\r\n arr.add(data2);\r\n o.resultType=\"table\"\r\n o.result =arr;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 09:16:27', '2021-09-18 09:16:27', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (169, 'domainDetailserviceOverview', '/entity/domain/detail/serviceOverview', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(AVG(http_response_latency_ms)) AS http_response_latency_ms, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result=result.data[0];\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 09:17:37', '2021-09-18 09:17:37', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (170, 'ipDetailDomainEstablishlatency', '/entity/ip/detail/domainEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,domain AS domain,ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-22 08:05:23', '2021-09-30 05:47:49', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (171, 'ipDetailDomainHttpResponseLatency', '/entity/ip/detail/domainHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain,ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-22 08:08:51', '2021-10-08 05:58:40', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (172, 'ipDetailDomainSslConLatency', '/entity/ip/detail/domainSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain,ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-22 08:13:07', '2021-10-08 05:59:28', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (173, 'ipDetailAppEstablishlatency', '/entity/ip/detail/appEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,common_app_label AS common_app_label,ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_app_label\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-22 08:47:43', '2021-10-08 06:00:35', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (174, 'ipDetailAppHttpResponseLatency', '/entity/ip/detail/appHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_app_label AS common_app_label,ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_app_label\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-22 08:50:30', '2021-10-08 06:01:19', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (175, 'ipDetailAppSslConLatency', '/entity/ip/detail/appSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_app_label AS common_app_label,ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10) GROUP BY stat_time,common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_app_label\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}\r\n', '2021-09-22 08:52:44', '2021-10-08 06:02:03', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (176, 'domainDetailOverallEstablishlatency', '/entity/domain/detail/overallEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 03:43:58', '2021-09-23 03:43:58', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (177, 'domainDetailOverallHttpResponseLatency', '/entity/domain/detail/overallHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 03:47:06', '2021-09-23 03:47:06', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (178, 'domainDetailOverallSslConLatency', '/entity/domain/detail/overallSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 03:50:27', '2021-09-23 03:50:27', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (179, 'domainDetailOverallPacketLoss', '/entity/domain/detail/overallPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 03:51:58', '2021-09-23 03:51:58', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (180, 'domainDetailOverallOverallPacketRetrans', '/entity/domain/detail/overallPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 03:54:16', '2021-09-23 03:54:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (181, 'domainDetailServerIpEstablishlatency', '/entity/domain/detail/serverIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY ROUND(AVG(common_establish_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:51:59', '2021-09-29 07:22:37', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (182, 'domainDetailServerIpHttpResponseLatency', '/entity/domain/detail/serverIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY ROUND(AVG(http_response_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:53:04', '2021-09-29 07:23:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (183, 'domainDetailServerIpSslConLatency', '/entity/domain/detail/serverIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY ROUND(AVG(ssl_con_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:54:08', '2021-09-29 07:23:11', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (184, 'domainDetailClientIpEstablishlatency', '/entity/domain/detail/clientIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY ROUND(AVG(common_establish_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:56:01', '2021-09-29 07:46:32', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (185, 'domainDetailClientIpHttpResponseLatency', '/entity/domain/detail/clientIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY ROUND(AVG(http_response_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:57:03', '2021-09-29 07:47:18', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (186, 'domainDetailClientIpSslConLatency', '/entity/domain/detail/clientIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY ROUND(AVG(ssl_con_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:58:04', '2021-09-29 07:47:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (187, 'Copy from domainDetailServerIPPacketLoss_bak', '/entity/domain/detail/serverIPPacketLoss_bak', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip LIMIT 10 \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 09:59:04', '2021-09-23 09:59:04', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (188, 'domainDetailServerIPPacketRetrans_bak', '/entity/domain/detail/serverIPPacketRetrans_bak', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 10:00:09', '2021-09-23 10:00:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (189, 'domainDetailClientIPPacketLoss_bak', '/entity/domain/detail/clientIPPacketLoss_bak', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip LIMIT 10 \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"sequence_gap_loss_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 10:01:46', '2021-09-23 10:01:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (190, 'domainDetailClientIPPacketRetrans_bak', '/entity/domain/detail/clientIPPacketRetrans_bak', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"pkt_retrans_percent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-23 10:02:00', '2021-09-23 10:02:00', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (191, 'appDetailOverallEstablishlatency', '/entity/app/detail/overallEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:49:11', '2021-10-08 06:55:45', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (192, 'appDetailOverallHttpResponseLatency', '/entity/app/detail/overallHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:50:35', '2021-10-08 06:56:14', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (193, 'appDetailOverallSslConLatency', '/entity/app/detail/overallSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:51:25', '2021-10-08 06:56:32', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (194, 'appDetailOverallPacketLoss', '/entity/app/detail/overallPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:52:15', '2021-10-08 06:57:00', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (195, 'appDetailOverallPacketRetrans', '/entity/app/detail/overallPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"stat_time\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:52:18', '2021-10-08 06:57:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (196, 'appDetailDomainEstablishlatency', '/entity/app/detail/domainEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:55:23', '2021-10-08 06:58:14', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (197, 'appDetailDomainHttpResponseLatency', '/entity/app/detail/domainHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:55:26', '2021-10-08 06:59:03', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (198, 'appDetailDomainSslConLatency', '/entity/app/detail/domainSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 08:55:32', '2021-10-08 06:59:40', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (199, 'appDetailServerIpEstablishlatency', '/entity/app/detail/serverIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 09:16:26', '2021-10-08 07:06:19', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (200, 'appDetailServerIpHttpResponseLatency', '/entity/app/detail/serverIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 09:17:08', '2021-10-08 07:06:53', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (201, 'appDetailServerIpSslConLatency', '/entity/app/detail/serverIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_server_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 09:18:07', '2021-10-08 07:07:19', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (202, 'appDetailClientIpEstablishlatency', '/entity/app/detail/clientIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"establish_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 09:19:04', '2021-10-08 07:10:42', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (203, 'appDetailClientIpHttpResponseLatency', '/entity/app/detail/clientIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"http_response_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 09:20:03', '2021-10-08 07:11:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (204, 'appDetailClientIpSslConLatency', '/entity/app/detail/clientIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n \r\n if(list.length > 0){\r\n var fields={};\r\n var field = \"common_client_ip\";\r\n var valueName=\"ssl_con_latency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName];\r\n aggregation.last = list[list.length - 1][valueName];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"stat_time\"]);\r\n tempArray.push((pojo[valueName]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[valueName]-a[valueName];\r\n });\r\n aggregation.max = list[0][valueName];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-09-24 09:20:53', '2021-10-08 07:11:26', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (205, 'appDetailBaseInfo', '/entity/app/detail/basicInfo', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS id,app_name AS name, app_category AS category, app_subcategory AS subcategory, app_risk AS risk FROM app WHERE app_name = \'${parameter.app}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result=result.data[0];\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n\r\n }\r\n o.result[\"allName\"] = \"qq.com\"\r\n o.result[\"tech\"] = \"collaboration\"\r\n o.result[\"description\"] = \"qq is a most popular app\"\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-24 09:32:02', '2021-09-24 09:32:02', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (206, 'appDetailDomains', '/entity/app/detail/domains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_id AS id,app_name AS name, app_category AS category, app_subcategory AS subcategory, app_risk AS risk FROM app WHERE app_name = \'${parameter.app}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"array\"\r\n var data1 = \"baidu.com\";\r\n var data2 = \"qq.com\";\r\n var data3 = \"taobao.com\";\r\n var arr = new java.util.ArrayList(); \r\n arr.add(data1);\r\n arr.add(data2);\r\n arr.add(data3);\r\n o.result =arr;\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-24 09:33:17', '2021-09-24 09:33:17', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (207, 'appDetailServiceOverview', '/entity/app/detail/serviceOverview', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(AVG(http_response_latency_ms)) AS http_response_latency_ms, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM tsg_base_metrics WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.app}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result=result.data[0];\r\n if(o.result.length > 0){\r\n for(var key in o.result){\r\n o.result[key]=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-24 09:44:50', '2021-09-24 09:44:50', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (209, 'ipDetailCategorys', '/entity/ip/detail/categorys', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT category_group AS category,count(*) AS count FROM domain WHERE domain_name in( <#list parameter.domains as domain>\'${domain}\'<#sep>, </#list> ) GROUP BY category ORDER BY count DESC \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nif(parameter.ip){\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/ip/detail/domains\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n var list = new java.util.ArrayList();\r\n if(data.length > 0){\r\n for(var i=0; i< list.length; i++){\r\n var pojo = data[i];\r\n list.add(pojo[\"domain\"]) \r\n }\r\n \r\n }else{ \r\n list.add(\"baidu.com\");\r\n list.add(\"qq.com\");\r\n list.add(\"taobao.com\"); \r\n }\r\n parameter.domains = list;\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\"\r\n o.result=result.data;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (210, 'ipDetailReputations', '/entity/ip/detail/reputations', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT reputation_level AS reputation,count(*) AS count FROM domain WHERE domain_name in( <#list parameter.domains as domain>\'${domain}\'<#sep>, </#list> ) GROUP BY reputation ORDER BY count DESC \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nif(parameter.ip){\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/ip/detail/domains\',\'GET\',parameter);\r\n \r\n if(result.success){\r\n var data = result.data;\r\n var list = new java.util.ArrayList();\r\n if(data.length > 0){\r\n for(var i=0; i< list.length; i++){\r\n var pojo = data[i];\r\n list.add(pojo[\"domain\"]) \r\n }\r\n \r\n }else{ \r\n list.add(\"baidu.com\");\r\n list.add(\"qq.com\");\r\n list.add(\"taobao.com\"); \r\n }\r\n parameter.domains = list;\r\n }\r\n \r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\"\r\n o.result=result.data;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (211, 'ipDetailLinkVisual', '/entity/ip/detail/linkVisual', 'v1', 'GET', '/', '{\r\n \"query\": \"(SELECT common_ingress_link_id AS linkID,\'in\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND common_server_ip = \'${parameter.ip}\' GROUP BY linkID) UNION ALL (SELECT common_egress_link_id AS linkID,\'out\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND common_server_ip = \'${parameter.ip}\' GROUP BY linkID)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\"\r\n o.result=result.data;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-11-09 15:53:53', '2021-11-10 10:53:38', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (212, 'domainLinkVisual', '/entity/domain/detail/linkVisual', 'v1', 'GET', '/', '{\r\n \"query\": \"(SELECT common_ingress_link_id AS linkID,\'in\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND domain = \'${parameter.domain}\' GROUP BY linkID) UNION ALL (SELECT common_egress_link_id AS linkID,\'out\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND domain = \'${parameter.domain}\' GROUP BY linkID)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\"\r\n o.result=result.data;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-11-09 15:54:55', '2021-11-09 15:54:57', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (213, 'appDetailLinkVisual', '/entity/app/detail/linkVisual', 'v1', 'GET', '/', '{\r\n \"query\": \"(SELECT common_ingress_link_id AS linkID,\'in\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND common_app_label = \'${parameter.app}\' GROUP BY linkID) UNION ALL (SELECT common_egress_link_id AS linkID,\'out\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM tsg_base_metrics WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND common_app_label = \'${parameter.app}\' GROUP BY linkID)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\"\r\n o.result=result.data;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-11-09 15:58:57', '2021-11-10 13:06:28', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (214, 'cryptcyPoolcount', '/cryptcy/poolcount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(cryptomining_pool)) AS cryptomining_pool_count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-08 13:43:32', '2021-12-08 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (215, 'cryptcyMachinecount', '/cryptcy/machinecount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(cryptomining_miner_org) AS cryptomining_miner_count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-08 13:44:32', '2021-12-08 13:44:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (216, 'cryptcyTraffic', '/cryptcy/traffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-08 13:46:32', '2021-12-08 13:46:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (217, 'cryptcyTotalTraffic', '/cryptcy/totalTraffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-08 13:47:32', '2021-12-08 13:47:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (218, 'cryptcyEventStat', '/cryptcy/eventStat', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(start_time), \'PT${parameter.step}S\',\'zero\') AS stat_time, COUNT(*) AS count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"statTime\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key];\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-12-08 13:49:32', '2021-12-08 13:49:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (219, 'cryptcyEventMap', '/cryptcy/eventMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT destination_country AS destination_country <#if parameter.country?default(\'\')?trim? length gt 0> destination_province AS destination_province, <#if parameter.province?default(\'\')?trim? length gt 0> destination_city AS destination_city, </#if> </#if>, COUNT(*) AS count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0>AND destination_country = \'${parameter.country}\' AND destination_province = \'${parameter.province}\' AND destination_city != \'\' <#else> AND destination_country = \'${parameter.country}\' AND destination_province != \'\' </#if> <#else> AND destination_country != \'\' </#if> GROUP BY destination_country <#if parameter.country?default(\'\')?trim? length gt 0>,destination_province <#if parameter.province?default(\'\')?trim? length gt 0>,destination_city</#if></#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-08 13:50:32', '2021-12-08 13:50:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (220, 'cryptcyActiveCy', '/cryptcy/activeCy', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT cryptomining_coin_type AS cryptomining_coin_type, COUNT(*) AS count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' GROUP BY cryptomining_coin_type ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-08 13:50:32', '2021-12-08 13:50:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (221, 'cryptcyActivePool', '/cryptcy/activePool', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT cryptomining_pool AS cryptomining_pool, COUNT(*) AS count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' GROUP BY cryptomining_pool ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-08 13:51:32', '2021-12-08 13:51:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (222, 'cryptcyEventList', '/cryptcy/eventList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, source_name AS source_name, destination_name AS destination_name FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' GROUP BY start_time, source_name, destination_name ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-08 14:00:32', '2021-12-08 14:00:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (223, 'cryptcyInstitutions', '/cryptcy/institutions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT cryptomining_miner_org AS org, COUNT(*) AS count FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' GROUP BY org ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-08 14:01:32', '2021-12-08 14:01:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (224, 'cryptcyActiveIP', '/cryptcy/activeIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.order?default(\'\')?trim? length gt 0&¶meter.order==\"machine\"> source_name AS ip, <#else> destination_name AS ip,</#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM cn_security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type=\'cryptomining\' GROUP BY ip ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-08 14:03:32', '2021-12-08 14:05:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (225, 'entityIndexTotal', '/entity/index/total', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"app\"> COUNT(app_name) AS all_count <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"domain\"> COUNT(domain_name) AS all_count <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"ip\"> COUNT(ip_addr) AS all_count </#if> FROM entity_info WHERE entity_type=\'${parameter.entityType}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-15 09:00:12', '2021-12-15 09:00:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (226, 'entityIndexNew', '/entity/index/new', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"app\"> COUNT(app_name) AS new_count <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"domain\"> COUNT(domain_name) AS new_count <#elseif parameter.entityType == \"ip\"> COUNT(ip_addr) AS new_count </#if> FROM entity_info WHERE entity_type=\'${parameter.entityType}\' AND found_time >= ${parameter.startTime} AND found_time < ${parameter.endTime}\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-15 09:01:12', '2021-12-15 09:01:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (227, 'entityIndexActive', '/entity/index/active', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"app\"> COUNT(app_name) AS active_count <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"domain\"> COUNT(domain_name) AS active_count <#elseif parameter.entityType == \"ip\"> COUNT(ip_addr) AS active_count </#if> FROM entity_info WHERE entity_type=\'${parameter.entityType}\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-15 09:02:12', '2021-12-15 09:02:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (228, 'entityFilterCount', '/entity/filter/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(*) AS count, <#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"app\"> COUNT(DISTINCT(app_category)) AS category_distinct_count, COUNT(DISTINCT(app_subcategory)) AS subcategory_distinct_count, COUNT(DISTINCT(app_risk)) AS risk_distinct_count FROM entity_info WHERE entity_type=\'${parameter.entityType}\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> limit 1 <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"domain\"> COUNT(DISTINCT(domain_category_group)) AS category_group_distinct_count, COUNT(DISTINCT(domain_category)) AS category_distinct_count, COUNT(DISTINCT(domain_reputation_level)) AS reputation_level_distinct_count FROM entity_info WHERE entity_type=\'${parameter.entityType}\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> limit 1 <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"ip\"> COUNT(DISTINCT(ip_location_country)) AS country_distinct_count, COUNT(DISTINCT(ip_location_province)) AS province_distinct_count, COUNT(DISTINCT(ip_location_city)) AS city_distinct_count, COUNT(DISTINCT(ip_asn)) AS asn_distinct_count FROM entity_info WHERE entity_type=\'${parameter.entityType}\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> limit 1 <#else> ${parameter.dnsServerRoleCount} AS dns_server_role_count, ${parameter.dnsServerOrgCount} AS dns_server_org_count, ${parameter.dnsServerOsCount} AS dns_server_os_count, ${parameter.dnsServerSoftwareCount} AS dns_server_software_count, ${parameter.orgTotalCount} AS org_total_count, ${parameter.osTotalCount} AS os_total_count, ${parameter.softwareTotalCount} AS software_total_count FROM entity_info WHERE entity_type = \'ip\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} AND dns_server_role IS NOT NULL AND dns_server_role != \'\' <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> limit 1 </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if(parameter.where){\r\n var data = JSON.parse(parameter.where);\r\n var str =\'\';\r\n for( key in data){\r\n str += \"and \"+key+\"=\"+\"\'\"+data[key]+\"\'\"\r\n }\r\n str = str.replace(/Unknown/ig,\"\")\r\n parameter.where =str;\r\n}\r\nfunction isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\nif(!isEmpty(parameter.entityType) && parameter.entityType==\"dns\"){\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var param = [\"FWDNS\",\"ADNS\",\"OPRDNS\",\"TLDNS\",\"RTDNS\"]; var roleCount = 0; for(var key in param){ parameter.column = param[key]; var role = galaxyUtils.sendGalaxyRequest(\'/entity/filter/count/dns/role\',\'GET\',parameter); if(role.success){\r\n var data = role.data; if(data.length > 0 && !isEmpty(data[0][\"count\"]) && data[0][\"count\"]>0){roleCount++; } \r\n}}\r\nparameter.dnsServerRoleCount=roleCount; parameter.column =\"dns_server_os\"; var os = galaxyUtils.sendGalaxyRequest(\'/entity/filter/count/dns/others\',\'GET\',parameter); if(os.success){\r\n var data = os.data; if(data.length > 0 && !isEmpty(data[0][\"os_count\"])){parameter.dnsServerOsCount = data[0][\"os_count\"]}else{parameter.dnsServerOsCount = 0; } if(data.length > 0 && !isEmpty(data[0][\"os_total_count\"])){parameter.osTotalCount = data[0][\"os_total_count\"]}else{parameter.osTotalCount = 0; } \r\n}\r\nparameter.column =\"dns_server_software\"; var software = galaxyUtils.sendGalaxyRequest(\'/entity/filter/count/dns/others\',\'GET\',parameter); if(software.success){\r\n var data = software.data; if(data.length > 0 && !isEmpty(data[0][\"software_count\"])){parameter.dnsServerSoftwareCount = data[0][\"software_count\"]}else{parameter.dnsServerSoftwareCount = 0; } if(data.length > 0 && !isEmpty(data[0][\"software_total_count\"])){parameter.softwareTotalCount = data[0][\"software_total_count\"]}else{parameter.softwareTotalCount = 0; } \r\n}\r\nparameter.column =\"dns_server_org\"; var org = galaxyUtils.sendGalaxyRequest(\'/entity/filter/count/dns/others\',\'GET\',parameter); if(org.success){\r\n var data = org.data; if(data.length > 0 && !isEmpty(data[0][\"org_count\"])){parameter.dnsServerOrgCount = data[0][\"org_count\"]}else{parameter.dnsServerOrgCount = 0; } if(data.length > 0 && !isEmpty(data[0][\"org_total_count\"])){parameter.orgTotalCount = data[0][\"org_total_count\"]}else{parameter.orgTotalCount = 0; } \r\n}\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-15 09:03:12', '2021-12-15 09:03:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (229, 'entityFilterTop', '/entity/filter/top', 'v1', 'GET', '/', '{\r\n \"query\": \"<#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"dns\"> <#if parameter.column?default(\'\')?trim? length gt 0&¶meter.column==\"dns_server_role\"> SELECT 0 AS count, dns_server_org AS name FROM entity_info WHERE update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime}<#else> SELECT COUNT(*) AS count, ${parameter.column} AS name FROM entity_info WHERE entity_type = \'ip\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} AND ${parameter.column} IS NOT NULL AND ${parameter.column} != \'\' <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> GROUP BY name ORDER BY count DESC LIMIT <#if parameter.top?default(\'\')?trim? length gt 0> ${parameter.top} <#else> 10 </#if> </#if> <#else> SELECT COUNT(*) AS count, ${parameter.column} AS name FROM entity_info WHERE entity_type=\'${parameter.entityType}\' AND update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} <#if parameter.column?default(\'\')?trim? length gt 0&¶meter.column==\"app_risk\"> AND app_risk between 1 and 5 </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> GROUP BY name ORDER BY count DESC LIMIT <#if parameter.top?default(\'\')?trim? length gt 0> ${parameter.top} <#else> 10 </#if></#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if(parameter.where){\r\n var data = JSON.parse(parameter.where);\r\n var str =\'\';\r\n for( key in data){\r\n str += \"and \"+key+\"=\"+\"\'\"+data[key]+\"\'\"\r\n }\r\n str = str.replace(/Unknown/ig,\"\")\r\n parameter.where =str;\r\n}\r\nfunction isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n if(parameter.column==\"dns_server_role\"){\r\n var list = new java.util.ArrayList(); var param = [\"FWDNS\",\"ADNS\",\"OPRDNS\",\"TLDNS\",\"RTDNS\"];\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\nfor(var key in param){\r\n parameter.column=param[key]; var role = galaxyUtils.sendGalaxyRequest(\'/entity/filter/count/dns/role\',\'GET\',parameter);\r\n if(role.success){\r\n var data = role.data;\r\n if(data.length > 0 &&!isEmpty(data[0][\"count\"])){\r\n var obj = {};\r\n obj.name=param[key];\r\n obj.count=data[0][\"count\"];\r\n list.add(obj);\r\n }\r\n \r\n}\r\n}\r\n list.sort(function sortByCount(a,b){ \r\n return b.count-a.count;\r\n }); o.result=list;}else{\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n } result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-15 09:04:12', '2021-12-15 09:04:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (230, 'entityListBasic', '/entity/list/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"app\">entity_type AS entity_type, app_name AS app_name, app_id AS app_id, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk, app_description AS app_description <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"domain\">entity_type AS entity_type, domain_name AS domain_name, domain_category AS domain_category, domain_category_group AS domain_category_group, domain_reputation_score AS domain_reputation_score, domain_reputation_level AS domain_reputation_level <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"ip\">entity_type AS entity_type, ip_addr AS ip_addr, ip_location_country AS ip_location_country, ip_location_province AS ip_location_province, ip_location_city AS ip_location_city, ip_asn AS ip_asn <#else>entity_type AS entity_type, ip_addr AS ip_addr, ip_location_country AS ip_location_country, ip_location_province AS ip_location_province, ip_location_city AS ip_location_city, ip_asn AS ip_asn, app_name AS app_name, app_id AS app_id, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk, app_description AS app_description, domain_name AS domain_name, domain_category AS domain_category, domain_category_group AS domain_category_group, domain_reputation_score AS domain_reputation_score, domain_reputation_level AS domain_reputation_level, domain_icp_company_name AS domain_icp_company_name, domain_icp_site_license AS domain_icp_site_license, \'XX is the most popular free instant messaging....\' AS domain_description </#if> FROM entity_info WHERE update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} <#if parameter.entityType?default(\'\')?trim? length gt 0> AND entity_type=\'${parameter.entityType}\' </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if> ORDER BY update_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;\r\nif(parameter.where){\r\n var data = JSON.parse(parameter.where);\r\n var str =\'\';\r\n for( key in data){\r\n str += \"and \"+key+\"=\"+\"\'\"+data[key]+\"\'\"\r\n }\r\n str = str.replace(/Unknown/ig,\"\")\r\n parameter.where =str;\r\n}\r\nfunction isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-15 09:05:12', '2021-12-15 09:05:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (231, 'entityListTraffic', '/entity/list/traffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num)/ (${parameter.step})) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/ (${parameter.step})) AS bytes_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} <#if parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"ip\"> AND (common_client_ip=\'${parameter.name}\' OR common_server_ip=\'${parameter.name}\') <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"domain\"> AND domain=\'${parameter.name}\' <#elseif parameter.entityType?default(\'\')?trim? length gt 0&¶meter.entityType==\"app\"> AND common_app_label=\'${parameter.name}\' </#if> GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = [];\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new Array();\r\n var aggregation = {};\r\n aggregation.first = list[0][key] + \"\";\r\n aggregation.last = list[list.length - 1][key] + \"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new Array();;\r\n tempArray.push(pojo[\"statTime\"]);\r\n tempArray.push((pojo[key]).toString());\r\n values.push(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = Math.round(sumValue / list.length) + \"\";\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n aggregation.max = list[0][key] + \"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.push(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n var jsonObj = {};\r\n for(var name in result){ \r\n jsonObj[name] = result[name];\r\n }\r\n \r\n result = JSON.stringify(jsonObj);\r\n}', '2021-12-15 09:06:12', '2021-12-15 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (232, 'entityListAlertNum', '/entity/list/alertNum', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(*) AS count FROM cn_alert WHERE entity_type = \'${parameter.entityType}\' AND entity_name = \'${parameter.name}\' AND start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-15 09:07:12', '2021-12-15 09:07:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (233, 'entityListDetectionNum', '/entity/list/detectionNum', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(*) AS count FROM cn_security_event WHERE destination_type = \'${parameter.entityType}\' AND destination_name = \'${parameter.name}\' AND start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-15 09:08:12', '2021-12-15 09:08:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (234, 'trafficTopAppCategories', '/traffic/topAppCategories', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_category AS app_category, uniq(common_app_label) AS uniq_apps, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND notEmpty(app_category) GROUP BY app_category ORDER BY uniq_apps desc LIMIT ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-16 13:46:32', '2021-12-16 13:46:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (235, 'trafficTopAppCategoriesList', '/traffic/appCategoriesList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_name, anyLast(app_category) AS app_category_name, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND notEmpty(app_category) <#if parameter.appCategory?default(\'\')?trim? length gt 0> AND app_category in (<#list parameter.appCategory?split(\",\") as name><#if !name_has_next>\'${name}\'<#else>\'${name}\',</#if></#list>) </#if> GROUP BY common_app_label ORDER BY <#if parameter.order?default(\'\')?trim? length gt 0> ${parameter.order} desc <#else> sessions desc </#if> LIMIT ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-16 13:47:32', '2022-02-09 10:05:52', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (236, 'trafficTopAppCategoryServerIpList', '/traffic/appCategoryServerIpList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, anyLast(app_category) AS app_category_name, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_server_ip) AND notEmpty(app_category) AND common_app_label = \'${parameter.appName}\' GROUP BY common_server_ip ORDER BY <#if parameter.order?default(\'\')?trim? length gt 0> ${parameter.order} desc <#else> sessions desc </#if> LIMIT ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-16 13:48:32', '2022-02-09 10:06:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (237, 'trafficTopAppRisk', '/traffic/topAppRisk', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_risk AS app_risk, uniq(common_app_label) AS uniq_apps, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND app_risk between 1 and 5 GROUP BY app_risk ORDER BY uniq_apps desc LIMIT ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-16 13:49:32', '2022-02-10 01:36:56', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (238, 'trafficAppRiskList', '/traffic/appRiskList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_name, anyLast(app_risk) AS app_risk_level, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND app_risk between 1 AND 5 <#if parameter.appRisk?default(\'\')?trim? length gt 0> AND app_risk in (<#list parameter.appRisk?split(\",\") as level><#if !level_has_next>${level}<#else>${level},</#if></#list>) </#if> GROUP BY common_app_label ORDER BY <#if parameter.order?default(\'\')?trim? length gt 0> ${parameter.order} desc <#else> sessions desc </#if> LIMIT ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-16 13:50:32', '2022-02-09 10:33:00', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (239, 'trafficAppRiskServerIpList', '/traffic/appRiskServerIpList', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, anyLast(app_risk) AS app_risk_level, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_server_ip) AND app_risk between 1 AND 5 AND common_app_label = \'${parameter.appName}\' GROUP BY common_server_ip ORDER BY <#if parameter.order?default(\'\')?trim? length gt 0> ${parameter.order} desc <#else> sessions desc </#if> LIMIT ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-16 13:50:32', '2022-02-09 10:33:21', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (240, 'cryptcyTrafficPercentage', '/cryptcy/trafficPercentage', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(isNull(${parameter.traffic!0}/nullif(SUM(common_c2s_byte_num + common_s2c_byte_num),0)),4) AS traffic_percentage FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30; parameter.endTime = \'toDateTime(\'+parameter.endTime+\')\'; parameter.startTime = \'toDateTime(\'+parameter.startTime+\')\'; if(parameter.ip){ var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var result = galaxyUtils.sendGalaxyRequest(\'/cryptcy/traffic\',\'GET\',parameter); if(result.success){ var cryTraffic = result.data; parameter.traffic = cryTraffic[0][\"bytes\"]; } }', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-19 13:50:32', '2021-12-19 13:50:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (241, 'entityDetailDomainBasic', '/entity/detail/domain/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_category_group AS domain_category_group, domain_category AS domain_category, domain_reputation_level AS domain_reputation_level FROM entity_info WHERE domain_name=\'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:50:32', '2021-12-29 12:50:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (242, 'entityDetailDomainWhois', '/entity/detail/domain/whois', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_whois_registrar AS registrar, domain_whois_org AS org, domain_whois_email AS email, domain_whois_country AS country, domain_whois_create_time AS create_time, domain_whois_expiration_time AS expiration_time FROM entity_info WHERE domain_name=\'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:51:32', '2021-12-29 12:51:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (243, 'entityDetailIpBasic', '/entity/detail/ip/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ip_addr as ip_addr, ip_asn AS asn, \'-\' AS as_organization, \'-\' AS as_subnet, \'-\' AS isp, \'-\' AS dns_ptr, ip_location_country AS country, ip_location_province AS province, ip_location_city AS city FROM entity_info WHERE ip_addr=\'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:52:32', '2021-12-29 12:52:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (244, 'entityDetailAppBasic', '/entity/detail/app/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_name AS name, app_id AS app_id, app_category AS category, app_subcategory AS subcategory, app_risk AS risk, app_longname AS app_longname, app_technology AS app_technology, app_description AS app_description FROM entity_info WHERE app_name=\'${parameter.appName}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:53:32', '2021-12-29 12:53:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (245, 'entityDetailIpClientIpCount', '/entity/detail/ip/clientIpCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(common_client_ip)) AS cleint_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:54:32', '2021-12-29 12:54:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (246, 'entityDetailIpServerIpCount', '/entity/detail/ip/serverIpCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(common_server_ip)) AS server_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:55:32', '2021-12-29 12:55:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (247, 'entityDetailIpAppCount', '/entity/detail/ip/appCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(common_app_label)) AS app_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:56:32', '2021-12-29 12:56:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (248, 'entityDetailIpDomainCount', '/entity/detail/ip/domainCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(domain)) AS domain_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:57:32', '2021-12-29 12:57:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (249, 'entityDetailIpSessions', '/entity/detail/ip/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:57:32', '2021-12-29 12:57:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (250, 'entityDetailIpPackets', '/entity/detail/ip/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(common_client_ip=\'${parameter.ip}\', common_c2s_pkt_num, common_s2c_pkt_num))/${parameter.step}) AS packets_sent_rate, ROUND(SUM(IF(common_client_ip=\'${parameter.ip}\', common_s2c_pkt_num, common_c2s_pkt_num))/${parameter.step}) AS packets_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 12:58:32', '2021-12-29 12:58:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (251, 'entityDetailIpBytes', '/entity/detail/ip/bytes', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(common_client_ip=\'${parameter.ip}\', common_c2s_byte_num, common_s2c_byte_num))/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(IF(common_client_ip=\'${parameter.ip}\', common_s2c_byte_num, common_c2s_byte_num))/${parameter.step}) AS bytes_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:00:32', '2021-12-29 13:00:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (252, 'entityDetailIpActiveClientIP', '/entity/detail/ip/activeClientIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT IF(common_server_ip = \'${parameter.ip}\',common_client_ip,common_server_ip) AS ip, SUM(common_sessions) as sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY ip ORDER BY ${parameter.order} DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-29 13:01:32', '2021-12-29 13:01:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (253, 'entityDetailIpTopDomains', '/entity/detail/ip/topDomains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY domain ORDER BY ${parameter.order} DESC limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-29 13:02:32', '2021-12-29 13:02:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (254, 'entityDetailIpTopAPP', '/entity/detail/ip/topAPP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_Name, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY app_Name ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (255, 'entityDetailIpServiceOverview', '/entity/detail/ip/serviceOverview', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.httpResponseLatencyMs} AS http_response_latency_ms, ${parameter.sslConLatencyMs} AS ssl_con_latency_ms, ${parameter.establishLatencyMs} AS establish_latency_ms, ${parameter.sequenceGapLossPercent} AS sequence_gap_loss_percent, ${parameter.pktRetransPercent} AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var http = galaxyUtils.sendGalaxyRequest(\'/entity/detail/ip/serviceOverview/2\',\'GET\',parameter); if(http.success){\r\n var data = http.data; if(!isEmpty(data[0][\"http_response_latency_ms\"])){parameter.httpResponseLatencyMs = data[0][\"http_response_latency_ms\"].toString(); }else{parameter.httpResponseLatencyMs = \'null\';} \r\n} \r\n\r\nvar ssl = galaxyUtils.sendGalaxyRequest(\'/entity/detail/ip/serviceOverview/3\',\'GET\',parameter);\r\n if(ssl.success){\r\n var data = ssl.data;\r\n if(!isEmpty(data[0][\"ssl_con_latency_ms\"])){\r\nparameter.sslConLatencyMs = data[0][\"ssl_con_latency_ms\"].toString();\r\n}else{parameter.sslConLatencyMs = \'null\';}\r\n }\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/detail/ip/serviceOverview/145\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n if(!isEmpty(data[0][\"establish_latency_ms\"])){parameter.establishLatencyMs = data[0][\"establish_latency_ms\"].toString()}else{parameter.establishLatencyMs = \'null\';};\r\n if(!isEmpty(data[0][\"sequence_gap_loss_percent\"])){parameter.sequenceGapLossPercent = data[0][\"sequence_gap_loss_percent\"].toString()}else{parameter.sequenceGapLossPercent = \'null\';};\r\n if(!isEmpty(data[0][\"pkt_retrans_percent\"])){parameter.pktRetransPercent = data[0][\"pkt_retrans_percent\"].toString()}else{parameter.pktRetransPercent = \'null\'};\r\n }\r\n \r\n\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (256, 'entityDetailIpOverallEstablishlatency', '/entity/detail/ip/overallEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (257, 'entityDetailIpOverallHttpResponseLatency', '/entity/detail/ip/overallHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (258, 'entityDetailIpOverallSslConLatency', '/entity/detail/ip/overallSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (259, 'entityDetailIpOverallPacketLoss', '/entity/detail/ip/overallPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (260, 'entityDetailIpOverallPacketRetrans', '/entity/detail/ip/overallPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (261, 'entityDetailIpDomainEstablishlatency', '/entity/detail/ip/domainEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time,domain AS domain,ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (262, 'entityDetailIpDomainHttpResponseLatency', '/entity/detail/ip/domainHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain,ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (263, 'entityDetailIpDomainSslConLatency', '/entity/detail/ip/domainSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain,ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (264, 'entityDetailIpDomainPacketLoss', '/entity/detail/ip/domainPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, domain AS domain, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (265, 'entityDetailIpDomainPacketRetrans', '/entity/detail/ip/domainPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain,ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time,domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (266, 'entityDetailIpAppEstablishlatency', '/entity/detail/ip/appEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS common_app_label, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonAppLabel\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (267, 'entityDetailIpAppHttpResponseLatency', '/entity/detail/ip/appHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS common_app_label, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonAppLabel\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (268, 'entityDetailIpAppSslConLatency', '/entity/detail/ip/appSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS common_app_label, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonAppLabel\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (269, 'entityDetailIpAppPacketLoss', '/entity/detail/ip/appPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS common_app_label, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonAppLabel\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (270, 'entityDetailIpAppPacketRetrans', '/entity/detail/ip/appPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS common_app_label, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label in ( SELECT common_app_label FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonAppLabel\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (271, 'entityDetailIpLinkVisual', '/entity/detail/ip/linkVisual', 'v1', 'GET', '/', '{\r\n \"query\": \"(SELECT common_ingress_link_id AS linkID,\'in\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip = \'${parameter.ip}\') GROUP BY linkID ORDER BY bytes DESC) UNION ALL (SELECT common_egress_link_id AS linkID,\'out\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip = \'${parameter.ip}\') GROUP BY linkID ORDER BY bytes DESC)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (272, 'entityDetailIpTrafficMap', '/entity/detail/ip/trafficMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.province?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_byte_num) AS sent_bytes, SUM(common_s2c_byte_num) AS received_bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) as sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0>AND server_country = \'${parameter.country}\' AND server_province = \'${parameter.province}\' AND server_region != \'\' <#else> AND server_country = \'${parameter.country}\' AND server_province != \'\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0>,server_province <#if parameter.province?default(\'\')?trim? length gt 0>,server_region</#if></#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 12:03:48', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (273, 'entityDetailDomainCount', '/entity/detail/domain/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(common_client_ip)) AS client_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (274, 'entityDetailDomainSessions', '/entity/detail/domain/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (275, 'entityDetailDomainPackets', '/entity/detail/domain/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_s2c_pkt_num)/${parameter.step}) AS packets_received_rate, ROUND(SUM(common_c2s_pkt_num)/${parameter.step}) AS packets_sent_rate, ROUND(SUM(common_c2s_pkt_num + common_s2c_pkt_num)/${parameter.step}) AS packets_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (276, 'entityDetailDomainBytes', '/entity/detail/domain/bytes', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/${parameter.step}) AS bytes_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-29 13:03:32', '2021-12-29 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (277, 'entityDetailDomainTrafficMap', '/entity/detail/domain/trafficMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.province?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_byte_num) AS sent_bytes, SUM(common_s2c_byte_num) AS received_bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets, SUM(common_sessions) as sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0>AND server_country = \'${parameter.country}\' AND server_province = \'${parameter.province}\' AND server_region != \'\' <#else> AND server_country = \'${parameter.country}\' AND server_province != \'\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0>,server_province <#if parameter.province?default(\'\')?trim? length gt 0>,server_region</#if></#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-11-16 12:03:55', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (278, 'entityDetailDomainActiveServerIP', '/entity/detail/domain/activeServerIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY server_ip ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (279, 'entityDetailDomainTopApp', '/entity/detail/domain/topApp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_name,SUM(common_sessions) AS sessions,SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets,SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(common_app_label) AND domain = \'${parameter.domain}\' GROUP BY common_app_label ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-07-01 09:48:59', '2021-07-01 09:49:01', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (280, 'entityDetailDomainServiceOverview', '/entity/detail/domain/serviceOverview', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.httpResponseLatencyMs} AS http_response_latency_ms, ${parameter.sslConLatencyMs} AS ssl_con_latency_ms, ${parameter.establishLatencyMs} AS establish_latency_ms, ${parameter.sequenceGapLossPercent} AS sequence_gap_loss_percent, ${parameter.pktRetransPercent} AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var http = galaxyUtils.sendGalaxyRequest(\'/entity/detail/domain/serviceOverview/2\',\'GET\',parameter); if(http.success){\r\n var data = http.data; if(!isEmpty(data[0][\"http_response_latency_ms\"])){parameter.httpResponseLatencyMs = data[0][\"http_response_latency_ms\"].toString(); }else{parameter.httpResponseLatencyMs = \'null\';} \r\n} \r\n\r\nvar ssl = galaxyUtils.sendGalaxyRequest(\'/entity/detail/domain/serviceOverview/3\',\'GET\',parameter);\r\n if(ssl.success){\r\n var data = ssl.data;\r\n if(!isEmpty(data[0][\"ssl_con_latency_ms\"])){\r\nparameter.sslConLatencyMs = data[0][\"ssl_con_latency_ms\"].toString();\r\n}else{parameter.sslConLatencyMs = \'null\';}\r\n }\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/detail/domain/serviceOverview/145\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n if(!isEmpty(data[0][\"establish_latency_ms\"])){parameter.establishLatencyMs = data[0][\"establish_latency_ms\"].toString()}else{parameter.establishLatencyMs = \'null\';};\r\n if(!isEmpty(data[0][\"sequence_gap_loss_percent\"])){parameter.sequenceGapLossPercent = data[0][\"sequence_gap_loss_percent\"].toString()}else{parameter.sequenceGapLossPercent = \'null\';};\r\n if(!isEmpty(data[0][\"pkt_retrans_percent\"])){parameter.pktRetransPercent = data[0][\"pkt_retrans_percent\"].toString()}else{parameter.pktRetransPercent = \'null\'};\r\n }\r\n \r\n\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-18 09:17:37', '2022-02-21 07:11:31', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (281, 'entityDetailDomainOverallEstablishlatency', '/entity/detail/domain/overallEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-09-23 03:43:58', '2021-09-23 03:43:58', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (282, 'entityDetailDomainOverallHttpResponseLatency', '/entity/detail/domain/overallHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (283, 'entityDetailDomainOverallSslConLatency', '/entity/detail/domain/overallSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (284, 'entityDetailDomainOverallPacketLoss', '/entity/detail/domain/overallPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (285, 'entityDetailDomainOverallPacketRetrans', '/entity/detail/domain/overallPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (286, 'entityDetailDomainServerIpEstablishlatency', '/entity/detail/domain/serverIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY ROUND(AVG(common_establish_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (287, 'entityDetailDomainServerIpHttpResponseLatency', '/entity/detail/domain/serverIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY ROUND(AVG(http_response_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (288, 'entityDetailDomainServerIpSslConLatency', '/entity/detail/domain/serverIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY ROUND(AVG(ssl_con_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (289, 'entityDetailDomainServerIpPacketLoss', '/entity/detail/domain/serverIpPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2022-04-18 11:40:26', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (290, 'entityDetailDomainServerIpPacketRetrans', '/entity/detail/domain/serverIpPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2022-04-18 11:40:47', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (291, 'entityDetailDomainClientIpEstablishlatency', '/entity/detail/domain/clientIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY ROUND(AVG(common_establish_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (292, 'entityDetailDomainClientIpHttpResponseLatency', '/entity/detail/domain/clientIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY ROUND(AVG(http_response_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (293, 'entityDetailDomainClientIpSslConLatency', '/entity/detail/domain/clientIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip IN ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY ROUND(AVG(ssl_con_latency_ms)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (294, 'entityDetailDomainClientIpPacketLoss', '/entity/detail/domain/clientIpPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2022-04-18 11:41:06', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (295, 'entityDetailDomainClientIpPacketRetrans', '/entity/detail/domain/clientIpPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2022-04-18 11:41:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (296, 'entityDetailDomainLinkVisual', '/entity/detail/domain/linkVisual', 'v1', 'GET', '/', '{\r\n \"query\": \"(SELECT common_ingress_link_id AS linkID,\'in\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND domain = \'${parameter.domain}\' GROUP BY linkID ORDER BY bytes DESC) UNION ALL (SELECT common_egress_link_id AS linkID,\'out\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND domain = \'${parameter.domain}\' GROUP BY linkID ORDER BY bytes DESC)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (297, 'entityDetailOverviewIpDnsInfo', '/entity/detail/overview/ip/dnsInfo', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_server_role AS dns_server_role, dns_server_org AS dns_server_org, dns_server_software AS dns_server_software, dns_server_os AS dns_server_os, doh_support AS doh_support, dot_support AS dot_support, dnssec_support AS dnssec_support FROM entity_info WHERE dns_server_role != \'\' AND dns_server_role IS NOT NULL <#if parameter.ip?default(\'\')?trim? length gt 0> AND ip_addr = \'${parameter.ip}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-31 13:43:32', '2022-03-31 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (298, 'entityDetailAppCount', '/entity/detail/app/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(distinct(common_client_ip)) AS client_ip_count FROM session_record_cn WHERE common_recv_time > ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.start = parameter.startTime;\r\nparameter.end = parameter.endTime;\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (299, 'entityDetailAppSessions', '/entity/detail/app/sessions', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_sessions)/${parameter.step}) AS session_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (300, 'entityDetailAppPackets', '/entity/detail/app/packets', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_s2c_pkt_num)/${parameter.step}) AS bytes_received_rate, ROUND(SUM(common_c2s_pkt_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_c2s_pkt_num + common_s2c_pkt_num)/${parameter.step}) AS bytes_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (301, 'entityDetailAppBytes', '/entity/detail/app/bytes', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/${parameter.step}) AS bytes_received_rate, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/${parameter.step}) AS bytes_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (302, 'entityDetailAppTrafficMap', '/entity/detail/app/trafficMap', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_country AS server_country, <#if parameter.country?default(\'\')?trim? length gt 0> server_province AS server_province, <#if parameter.province?default(\'\')?trim? length gt 0> server_region AS server_region, </#if> </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_byte_num) AS sent_bytes, SUM(common_s2c_byte_num) AS received_bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets , SUM(common_sessions) as sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0>AND server_country = \'${parameter.country}\' AND server_province = \'${parameter.province}\' AND server_region != \'\' <#else> AND server_country = \'${parameter.country}\' AND server_province != \'\' </#if> <#else> AND server_country != \'\' </#if> GROUP BY server_country <#if parameter.country?default(\'\')?trim? length gt 0>,server_province <#if parameter.province?default(\'\')?trim? length gt 0>,server_region</#if></#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n \r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n \r\n tempObj.serverId = countryCodeMap[tempObj.serverCountry];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.serverProvince){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.serverProvince];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (303, 'entityDetailAppActiveServerIP', '/entity/detail/app/activeServerIP', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' GROUP BY server_ip ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (304, 'entityDetailAppTopDomains', '/entity/detail/app/topDomains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_sessions) AS sessions, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as packets, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain) AND common_app_label = \'${parameter.appName}\' GROUP BY domain ORDER BY ${parameter.order} desc limit ${parameter.limit}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (305, 'entityDetailAppServiceOverview', '/entity/detail/app/serviceOverview', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.httpResponseLatencyMs} AS http_response_latency_ms, ${parameter.sslConLatencyMs} AS ssl_con_latency_ms, ${parameter.establishLatencyMs} AS establish_latency_ms, ${parameter.sequenceGapLossPercent} AS sequence_gap_loss_percent, ${parameter.pktRetransPercent} AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var http = galaxyUtils.sendGalaxyRequest(\'/entity/detail/app/serviceOverview/2\',\'GET\',parameter); if(http.success){\r\n var data = http.data; if(!isEmpty(data[0][\"http_response_latency_ms\"])){parameter.httpResponseLatencyMs = data[0][\"http_response_latency_ms\"].toString(); }else{parameter.httpResponseLatencyMs = \'null\';} \r\n} \r\n\r\nvar ssl = galaxyUtils.sendGalaxyRequest(\'/entity/detail/app/serviceOverview/3\',\'GET\',parameter);\r\n if(ssl.success){\r\n var data = ssl.data;\r\n if(!isEmpty(data[0][\"ssl_con_latency_ms\"])){\r\nparameter.sslConLatencyMs = data[0][\"ssl_con_latency_ms\"].toString();\r\n}else{parameter.sslConLatencyMs = \'null\';}\r\n }\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/detail/app/serviceOverview/145\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n if(!isEmpty(data[0][\"establish_latency_ms\"])){parameter.establishLatencyMs = data[0][\"establish_latency_ms\"].toString()}else{parameter.establishLatencyMs = \'null\';};\r\n if(!isEmpty(data[0][\"sequence_gap_loss_percent\"])){parameter.sequenceGapLossPercent = data[0][\"sequence_gap_loss_percent\"].toString()}else{parameter.sequenceGapLossPercent = \'null\';};\r\n if(!isEmpty(data[0][\"pkt_retrans_percent\"])){parameter.pktRetransPercent = data[0][\"pkt_retrans_percent\"].toString()}else{parameter.pktRetransPercent = \'null\'};\r\n }\r\n \r\n\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (306, 'entityDetailAppOverallEstablishlatency', '/entity/detail/app/overallEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (307, 'entityDetailAppOverallHttpResponseLatency', '/entity/detail/app/overallHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (308, 'entityDetailAppOverallSslConLatency', '/entity/detail/app/overallSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (309, 'entityDetailAppOverallPacketLoss', '/entity/detail/app/overallPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (310, 'entityDetailAppOverallPacketRetrans', '/entity/detail/app/overallPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (311, 'entityDetailAppServerIpEstablishlatency', '/entity/detail/app/serverIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (312, 'entityDetailAppServerIpHttpResponseLatency', '/entity/detail/app/serverIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (313, 'entityDetailAppServerIpSslConLatency', '/entity/detail/app/serverIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (314, 'entityDetailAppServerIpPacketLoss', '/entity/detail/app/serverIpPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (315, 'entityDetailAppServerIpPacketRetrans', '/entity/detail/app/serverIpPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_server_ip AS common_server_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip in ( SELECT common_server_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, common_server_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonServerIp\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (316, 'entityDetailAppClientIpEstablishlatency', '/entity/detail/app/clientIpEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (317, 'entityDetailAppClientIpHttpResponseLatency', '/entity/detail/app/clientIpHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (318, 'entityDetailAppClientIpSslConLatency', '/entity/detail/app/clientIpSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (319, 'entityDetailAppClientIpPacketLoss', '/entity/detail/app/clientIpPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (320, 'entityDetailAppClientIpPacketRetrans', '/entity/detail/app/clientIpPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, common_client_ip AS common_client_ip, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip in ( SELECT common_client_ip FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(common_client_ip) GROUP BY common_client_ip ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time,common_client_ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"commonClientIp\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (321, 'entityDetailAppDomainEstablishlatency', '/entity/detail/app/domainEstablishlatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG(common_establish_latency_ms)) AS establish_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(common_establish_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"establishLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (322, 'entityDetailAppDomainHttpResponseLatency', '/entity/detail/app/domainHttpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(http_response_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"httpResponseLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (323, 'entityDetailAppDomainSslConLatency', '/entity/detail/app/domainSslConLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG(ssl_con_latency_ms) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sslConLatency\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (324, 'entityDetailAppDomainPacketLoss', '/entity/detail/app/domainPacketLoss', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS sequence_gap_loss_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"sequenceGapLossPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (325, 'entityDetailAppDomainPacketRetrans', '/entity/detail/app/domainPacketRetrans', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') as stat_time, domain AS domain, ROUND(AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain in ( SELECT domain FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY AVG((common_c2s_pkt_retrans + common_s2c_pkt_retrans)/(common_c2s_pkt_num + common_s2c_pkt_num)) DESC LIMIT 10 ) GROUP BY stat_time, domain\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}\r\n', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nfunction sortByAvg(a,b){ \r\n return b.aggregation.avg - a.aggregation.avg;\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields={};\r\n var field = \"domain\";\r\n var valueName=\"pktRetransPercent\";\r\n for(var i=0;i<list.length;i++){\r\n var value = fields[list[i][field]];\r\n var values;\r\n if(value){\r\n values = fields[list[i][field]];\r\n values.push(list[i]);\r\n }else{\r\n values = new Array();\r\n values.push(list[i]);\r\n fields[list[i][field]]=values;\r\n }\r\n }\r\n\r\n for(var key in fields){\r\n var list = fields[key];\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][valueName]+\"\";\r\n aggregation.last = list[list.length - 1][valueName]+\"\";\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[valueName]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[valueName]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n o.result.sort(sortByAvg);\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (326, 'entityDetailApplinkVisual', '/entity/detail/app/linkVisual', 'v1', 'GET', '/', '{\r\n \"query\": \"(SELECT common_ingress_link_id AS linkID,\'in\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND common_app_label = \'${parameter.appName}\' GROUP BY linkID ORDER BY bytes DESC) UNION ALL (SELECT common_egress_link_id AS linkID,\'out\' as direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,ROUND(AVG(common_establish_latency_ms)) AS latency,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS lossPercent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS retransPercent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id != 0 AND common_egress_link_id !=0 AND common_app_label = \'${parameter.appName}\' GROUP BY linkID ORDER BY bytes DESC)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-30 13:03:32', '2021-12-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (327, 'entityDetailOverviewAppTraffic', '/entity/detail/overview/app/traffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/ ${parameter.step}) AS bytes_rate, ROUND(SUM(common_c2s_byte_num)/${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/${parameter.step}) AS bytes_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i in fields) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key] + \"\";\r\n aggregation.last = list[list.length - 1][key] + \"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = Math.round(sumValue / list.length) + \"\";\r\n \r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-31 13:03:32', '2022-03-25 10:02:02', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (328, 'entityDetailOverviewAppRelatedServerIp', '/entity/detail/overview/app/relatedServerIp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS ip, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label=\'${parameter.appName}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-15 13:03:32', '2022-02-15 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (329, 'entityDetailOverviewAppPerformanceEvent', '/entity/detail/overview/app/performanceEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, event_severity AS event_severity, event_type AS event_type FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND app_name = \'${parameter.appName}\' GROUP BY start_time, event_severity, event_type ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2022-03-16 07:12:24', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (330, 'entityDetailOverviewAppSecurityEvent', '/entity/detail/overview/app/securityEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, security_type AS security_type FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND app_name = \'${parameter.appName}\' GROUP BY start_time, offender_ip, victim_ip, event_severity, security_type ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2022-03-16 07:13:56', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (331, 'entityDetailOverviewDomainBasic', '/entity/detail/overview/domain/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_category AS domain_category, domain_category_group AS domain_category_group, domain_reputation_score AS domain_reputation_score, domain_whois_address AS domain_whois_address, domain_whois_org AS domain_whois_org, domain_icp_company_name AS domain_icp_company_name, domain_icp_site_license AS domain_icp_site_license, \'XX is the most popular free instant messaging....\' AS domain_description FROM entity_info WHERE update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} AND domain_name=\'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-31 13:03:32', '2021-12-31 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (332, 'entityDetailOverviewDomainTraffic', '/entity/detail/overview/domain/traffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/ ${parameter.step}) AS bytes_rate, ROUND(SUM(common_c2s_byte_num)/ ${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/ ${parameter.step}) AS bytes_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain=\'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i in fields) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key] + \"\";\r\n aggregation.last = list[list.length - 1][key] + \"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = Math.round(sumValue / list.length) + \"\";\r\n \r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-31 13:03:32', '2022-03-25 10:03:15', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (333, 'entityDetailOverviewDomainRelatedApp', '/entity/detail/overview/domain/relatedApp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_name, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain=\'${parameter.domain}\' AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-15 13:03:32', '2022-02-15 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (334, 'entityDetailOverviewDomainNetworkQuantity', '/entity/detail/overview/domain/networkQuantity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.httpResponseLatency} AS http_response_latency_value, ${parameter.httpP50} AS http_response_latency_p50, ${parameter.httpP90} AS http_response_latency_p90, ${parameter.httpP99} AS http_response_latency_p99, ${parameter.sslConLatency} AS ssl_con_latency_value, ${parameter.sslP50} AS ssl_con_latency_p50, ${parameter.sslP90} AS ssl_con_latency_p90, ${parameter.sslP99} AS ssl_con_latency_p99, ${parameter.establishLatency} AS establish_latency_value, ${parameter.establishP50} AS establish_latency_p50, ${parameter.establishP90} AS establish_latency_p90, ${parameter.establishP99} AS establish_latency_p99, ${parameter.sequenceGapLossPercent} AS sequence_gap_loss_percent_value, ${parameter.sequenceP50} AS sequence_gap_loss_percent_p50, ${parameter.sequenceP90} AS sequence_gap_loss_percent_p90, ${parameter.sequenceP99} AS sequence_gap_loss_percent_p99, ${parameter.pktRetransPercent} AS pkt_retrans_percent_value, ${parameter.pktP50} AS pkt_retrans_percent_p50, ${parameter.pktP90} AS pkt_retrans_percent_p90, ${parameter.pktP99} AS pkt_retrans_percent_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\nparameter.httpResponseLatency = \'null\';\r\nparameter.httpP50 = \'null\';\r\nparameter.httpP90 = \'null\';\r\nparameter.httpP99 = \'null\';\r\n parameter.sslConLatency = \'null\';\r\nparameter.sslP50 = \'null\';\r\nparameter.sslP90 = \'null\';\r\nparameter.sslP99 = \'null\';\r\n parameter.establishLatency = \'null\';\r\nparameter.establishP50 = \'null\';\r\nparameter.establishP90 = \'null\';\r\nparameter.establishP99 = \'null\';\r\n parameter.sequenceGapLossPercent = \'null\';\r\nparameter.sequenceP50 = \'null\';\r\nparameter.sequenceP90 = \'null\';\r\nparameter.sequenceP99 = \'null\';\r\n parameter.pktRetransPercent = \'null\';\r\nparameter.pktP50 = \'null\';\r\nparameter.pktP90 = \'null\';\r\nparameter.pktP99 = \'null\';\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var http = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/domain/networkQuantity/2\',\'GET\',parameter); if(http.success){\r\n var data = http.data; if(!isEmpty(data[0][\"http_response_latency_value\"])){parameter.httpResponseLatency = data[0][\"http_response_latency_value\"].toString(); }else{parameter.httpResponseLatency = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p50\"])){parameter.httpP50 = data[0][\"http_response_latency_p50\"].toString(); }else{parameter.httpP50 = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p90\"])){parameter.httpP90 = data[0][\"http_response_latency_p90\"].toString(); }else{parameter.httpP90 = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p99\"])){parameter.httpP99 = data[0][\"http_response_latency_p99\"].toString(); }else{parameter.httpP99 = \'null\';} \r\n} \r\n\r\nvar ssl = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/domain/networkQuantity/3\',\'GET\',parameter);\r\n if(ssl.success){\r\n var data = ssl.data;\r\n if(!isEmpty(data[0][\"ssl_con_latency_value\"])){\r\nparameter.sslConLatency = data[0][\"ssl_con_latency_value\"].toString();\r\n}else{parameter.sslConLatency = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p50\"])){\r\nparameter.sslP50 = data[0][\"ssl_con_latency_p50\"].toString();\r\n}else{parameter.sslP50 = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p90\"])){\r\nparameter.sslP90 = data[0][\"ssl_con_latency_p90\"].toString();\r\n}else{parameter.sslP90 = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p99\"])){\r\nparameter.sslP99 = data[0][\"ssl_con_latency_p99\"].toString();\r\n}else{parameter.sslP99 = \'null\';}\r\n }\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/domain/networkQuantity/145\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n if(!isEmpty(data[0][\"establish_latency_value\"])){parameter.establishLatency = data[0][\"establish_latency_value\"].toString()}else{parameter.establishLatency = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p50\"])){parameter.establishP50 = data[0][\"establish_latency_p50\"].toString()}else{parameter.establishP50 = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p90\"])){parameter.establishP90 = data[0][\"establish_latency_p90\"].toString()}else{parameter.establishP90 = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p99\"])){parameter.establishP99 = data[0][\"establish_latency_p99\"].toString()}else{parameter.establishP99 = \'null\';};\r\n if(!isEmpty(data[0][\"sequence_gap_loss_percent_value\"])){parameter.sequenceGapLossPercent = data[0][\"sequence_gap_loss_percent_value\"].toString()}else{parameter.sequenceGapLossPercent = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p50\"])){parameter.sequenceP50 = data[0][\"sequence_gap_loss_percent_p50\"].toString()}else{parameter.sequenceP50 = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p90\"])){parameter.sequenceP90 = data[0][\"sequence_gap_loss_percent_p90\"].toString()}else{parameter.sequenceP90 = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p99\"])){parameter.sequenceP99 = data[0][\"sequence_gap_loss_percent_p99\"].toString()}else{parameter.sequenceP99 = \'null\';};\r\n if(!isEmpty(data[0][\"pkt_retrans_percent_value\"])){parameter.pktRetransPercent = data[0][\"pkt_retrans_percent_value\"].toString()}else{parameter.pktRetransPercent = \'null\'};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p50\"])){parameter.pktP50 = data[0][\"pkt_retrans_percent_p50\"].toString()}else{parameter.pktP50 = \'null\'};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p90\"])){parameter.pktP90 = data[0][\"pkt_retrans_percent_p90\"].toString()}else{parameter.pktP90 = \'null\'};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p99\"])){parameter.pktP99 = data[0][\"pkt_retrans_percent_p99\"].toString()}else{parameter.pktP99 = \'null\'};\r\n }\r\n \r\n\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-31 13:03:32', '2021-12-31 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (335, 'entityDetailOverviewDomainLinkIn', '/entity/detail/overview/domain/linkIn', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_ingress_link_id AS common_ingress_link_id, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id !=0 AND common_egress_link_id !=0 AND domain = \'${parameter.domain}\' GROUP BY common_ingress_link_id ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2021-12-31 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (336, 'entityDetailOverviewDomainLinkOut', '/entity/detail/overview/domain/linkOut', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_egress_link_id AS common_egress_link_id, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id !=0 AND common_egress_link_id !=0 AND domain = \'${parameter.domain}\' GROUP BY common_egress_link_id ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2021-12-31 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (337, 'entityDetailOverviewDomainPerformanceEvent', '/entity/detail/overview/domain/performanceEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, event_severity AS event_severity, event_type AS event_type FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY start_time, event_severity, event_type ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2022-03-16 07:12:17', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (338, 'entityDetailOverviewDomainSecurityEvent', '/entity/detail/overview/domain/securityEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, security_type AS security_type FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY start_time, offender_ip, victim_ip, event_severity, security_type ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2022-03-16 07:14:07', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (339, 'entityDetailOverviewIpTraffic', '/entity/detail/overview/ip/traffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(common_c2s_byte_num + common_s2c_byte_num)/ ${parameter.step}) AS bytes_rate, ROUND(SUM(common_c2s_byte_num)/ ${parameter.step}) AS bytes_sent_rate, ROUND(SUM(common_s2c_byte_num)/ ${parameter.step}) AS bytes_received_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i in fields) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key] + \"\";\r\n aggregation.last = list[list.length - 1][key] + \"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = Math.round(sumValue / list.length) + \"\";\r\n \r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2021-12-31 13:03:32', '2022-03-25 10:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (340, 'entityDetailOverviewIpRelatedDomain', '/entity/detail/overview/ip/relatedDomain', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') AND notEmpty(domain) GROUP BY domain ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2021-12-31 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (341, 'entityDetailOverviewIpPerformanceEvent', '/entity/detail/overview/ip/performanceEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, event_severity AS event_severity, event_type AS event_type FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND server_ip = \'${parameter.ip}\' GROUP BY start_time, event_severity, event_type ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2022-03-16 07:11:59', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (342, 'entityDetailOverviewIpSecurityEvent', '/entity/detail/overview/ip/securityEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT start_time AS start_time, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, security_type AS security_type FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND (client_ip = \'${parameter.ip}\' OR server_ip = \'${parameter.ip}\') GROUP BY start_time, offender_ip, victim_ip, event_severity, security_type ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2021-12-31 13:03:32', '2022-03-16 07:14:19', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (343, 'entityListTotal', '/entity/list/total', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM entity_info WHERE 1=1 <#if parameter.startTime?default(\'\')?trim? length gt 0> AND update_time >= ${parameter.startTime} </#if> <#if parameter.endTime?default(\'\')?trim? length gt 0> AND update_time < ${parameter.endTime} </#if> <#if parameter.entityType?default(\'\')?trim? length gt 0> AND entity_type=\'${parameter.entityType}\' </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> <#if parameter.where?default(\'\')?trim? length gt 0> ${parameter.where} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if(parameter.where){\r\n var data = JSON.parse(parameter.where);\r\n var str =\'\';\r\n for( key in data){\r\n str += \"and \"+key+\"=\"+\"\'\"+data[key]+\"\'\"\r\n }\r\n str = str.replace(/Unknown/ig,\"\")\r\n parameter.where =str;\r\n}\r\nfunction isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-05 09:06:12', '2022-01-05 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (344, 'entityDetailAppCountTrend', '/entity/detail/app/countTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(common_client_ip)) AS client_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-19 09:06:12', '2022-01-19 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (345, 'entityDetailDomainCountTrend', '/entity/detail/domain/countTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(common_client_ip)) AS client_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain = \'${parameter.domain}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-19 09:06:12', '2022-01-19 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (346, 'entityDetailIpClientIpCountTrend', '/entity/detail/ip/clientIpCountTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(common_client_ip)) AS client_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-19 09:06:12', '2022-01-19 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (347, 'entityDetailIpServerIpCountTrend', '/entity/detail/ip/serverIpCountTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(common_server_ip)) AS server_ip_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-19 09:06:12', '2022-01-19 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (348, 'entityDetailIpAppCountTrend', '/entity/detail/ip/appCountTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(common_app_label)) AS app_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-19 09:06:12', '2022-01-19 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (349, 'entityDetailIpDomainCountTrend', '/entity/detail/ip/domainCountTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, count(distinct(domain)) AS domain_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_client_ip = \'${parameter.ip}\' GROUP BY stat_time\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-01-19 09:06:12', '2022-01-19 09:06:16', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (350, 'entityDetailOverviewAppLinkIn', '/entity/detail/overview/app/linkIn', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_ingress_link_id AS common_ingress_link_id, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id !=0 AND common_egress_link_id !=0 AND common_app_label = \'${parameter.appName}\' GROUP BY common_ingress_link_id ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (351, 'entityDetailOverviewIpLinkIn', '/entity/detail/overview/ip/linkIn', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_ingress_link_id AS common_ingress_link_id, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id !=0 AND common_egress_link_id !=0 AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY common_ingress_link_id ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (352, 'entityDetailOverviewAppLinkOut', '/entity/detail/overview/app/linkOut', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_egress_link_id AS common_egress_link_id, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id !=0 AND common_egress_link_id !=0 AND common_app_label = \'${parameter.appName}\' GROUP BY common_egress_link_id ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (353, 'entityDetailOverviewIpLinkOut', '/entity/detail/overview/ip/linkOut', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_egress_link_id AS common_egress_link_id, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes, ROUND(AVG(common_establish_latency_ms)) AS establish_latency, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_ingress_link_id !=0 AND common_egress_link_id !=0 AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') GROUP BY common_egress_link_id ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (354, 'entityDetailOverviewDomainNetworkQuantity2', '/entity/detail/overview/domain/networkQuantity/2', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_value, ROUND(QUANTILE(http_response_latency_ms,0.5)) AS http_response_latency_p50, ROUND(QUANTILE(http_response_latency_ms,0.9)) AS http_response_latency_p90, ROUND(QUANTILE(http_response_latency_ms,0.99)) AS http_response_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (355, 'entityDetailOverviewDomainNetworkQuantity3', '/entity/detail/overview/domain/networkQuantity/3', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_value, ROUND(QUANTILE(ssl_con_latency_ms,0.5)) AS ssl_con_latency_p50, ROUND(QUANTILE(ssl_con_latency_ms,0.9)) AS ssl_con_latency_p90, ROUND(QUANTILE(ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (356, 'entityDetailOverviewDomainNetworkQuantity145', '/entity/detail/overview/domain/networkQuantity/145', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(establish_latency_avg_percent)) AS establish_latency_value, ROUND(QUANTILE(establish_latency_avg_percent,0.5)) AS establish_latency_p50, ROUND(QUANTILE(establish_latency_avg_percent,0.9)) AS establish_latency_p90, ROUND(QUANTILE(establish_latency_avg_percent,0.99)) AS establish_latency_p99, ROUND(AVG(pkt_retrans_percent), 4) AS pkt_retrans_percent_value, ROUND(QUANTILE(pkt_retrans_percent, 0.5), 4) AS pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent, 0.9), 4) AS pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent, 0.99), 4) AS pkt_retrans_percent_p99, ROUND(AVG(sequence_gap_loss_percent), 4) AS sequence_gap_loss_percent_value, ROUND(QUANTILE(sequence_gap_loss_percent, 0.5), 4) AS sequence_gap_loss_percent_p50, ROUND(QUANTILE(sequence_gap_loss_percent, 0.9), 4) AS sequence_gap_loss_percent_p90, ROUND(QUANTILE(sequence_gap_loss_percent, 0.99), 4) AS sequence_gap_loss_percent_p99 FROM ( SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_avg_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND domain = \'${parameter.domain}\' GROUP BY granularity )\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (357, 'entityDetailOverviewAppNetworkQuantity', '/entity/detail/overview/app/networkQuantity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.httpResponseLatency} AS http_response_latency_value, ${parameter.httpP50} AS http_response_latency_p50, ${parameter.httpP90} AS http_response_latency_p90, ${parameter.httpP99} AS http_response_latency_p99, ${parameter.sslConLatency} AS ssl_con_latency_value, ${parameter.sslP50} AS ssl_con_latency_p50, ${parameter.sslP90} AS ssl_con_latency_p90, ${parameter.sslP99} AS ssl_con_latency_p99, ${parameter.establishLatency} AS establish_latency_value, ${parameter.establishP50} AS establish_latency_p50, ${parameter.establishP90} AS establish_latency_p90, ${parameter.establishP99} AS establish_latency_p99, ${parameter.sequenceGapLossPercent} AS sequence_gap_loss_percent_value, ${parameter.sequenceP50} AS sequence_gap_loss_percent_p50, ${parameter.sequenceP90} AS sequence_gap_loss_percent_p90, ${parameter.sequenceP99} AS sequence_gap_loss_percent_p99, ${parameter.pktRetransPercent} AS pkt_retrans_percent_value, ${parameter.pktP50} AS pkt_retrans_percent_p50, ${parameter.pktP90} AS pkt_retrans_percent_p90, ${parameter.pktP99} AS pkt_retrans_percent_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\nparameter.httpResponseLatency = \'null\';\r\nparameter.httpP50 = \'null\';\r\nparameter.httpP90 = \'null\';\r\nparameter.httpP99 = \'null\';\r\n parameter.sslConLatency = \'null\';\r\nparameter.sslP50 = \'null\';\r\nparameter.sslP90 = \'null\';\r\nparameter.sslP99 = \'null\';\r\n parameter.establishLatency = \'null\';\r\nparameter.establishP50 = \'null\';\r\nparameter.establishP90 = \'null\';\r\nparameter.establishP99 = \'null\';\r\n parameter.sequenceGapLossPercent = \'null\';\r\nparameter.sequenceP50 = \'null\';\r\nparameter.sequenceP90 = \'null\';\r\nparameter.sequenceP99 = \'null\';\r\n parameter.pktRetransPercent = \'null\';\r\nparameter.pktP50 = \'null\';\r\nparameter.pktP90 = \'null\';\r\nparameter.pktP99 = \'null\';\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var http = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/app/networkQuantity/2\',\'GET\',parameter); if(http.success){\r\n var data = http.data; if(!isEmpty(data[0][\"http_response_latency_value\"])){parameter.httpResponseLatency = data[0][\"http_response_latency_value\"].toString(); }else{parameter.httpResponseLatency = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p50\"])){parameter.httpP50 = data[0][\"http_response_latency_p50\"].toString(); }else{parameter.httpP50 = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p90\"])){parameter.httpP90 = data[0][\"http_response_latency_p90\"].toString(); }else{parameter.httpP90 = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p99\"])){parameter.httpP99 = data[0][\"http_response_latency_p99\"].toString(); }else{parameter.httpP99 = \'null\';} \r\n} \r\n\r\nvar ssl = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/app/networkQuantity/3\',\'GET\',parameter);\r\n if(ssl.success){\r\n var data = ssl.data;\r\n if(!isEmpty(data[0][\"ssl_con_latency_value\"])){\r\nparameter.sslConLatency = data[0][\"ssl_con_latency_value\"].toString();\r\n}else{parameter.sslConLatency = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p50\"])){\r\nparameter.sslP50 = data[0][\"ssl_con_latency_p50\"].toString();\r\n}else{parameter.sslP50 = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p90\"])){\r\nparameter.sslP90 = data[0][\"ssl_con_latency_p90\"].toString();\r\n}else{parameter.sslP90 = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p99\"])){\r\nparameter.sslP99 = data[0][\"ssl_con_latency_p99\"].toString();\r\n}else{parameter.sslP99 = \'null\';}\r\n }\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/app/networkQuantity/145\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n if(!isEmpty(data[0][\"establish_latency_value\"])){parameter.establishLatency = data[0][\"establish_latency_value\"].toString()}else{parameter.establishLatency = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p50\"])){parameter.establishP50 = data[0][\"establish_latency_p50\"].toString()}else{parameter.establishP50 = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p90\"])){parameter.establishP90 = data[0][\"establish_latency_p90\"].toString()}else{parameter.establishP90 = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p99\"])){parameter.establishP99 = data[0][\"establish_latency_p99\"].toString()}else{parameter.establishP99 = \'null\';};\r\n if(!isEmpty(data[0][\"sequence_gap_loss_percent_value\"])){parameter.sequenceGapLossPercent = data[0][\"sequence_gap_loss_percent_value\"].toString()}else{parameter.sequenceGapLossPercent = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p50\"])){parameter.sequenceP50 = data[0][\"sequence_gap_loss_percent_p50\"].toString()}else{parameter.sequenceP50 = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p90\"])){parameter.sequenceP90 = data[0][\"sequence_gap_loss_percent_p90\"].toString()}else{parameter.sequenceP90 = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p99\"])){parameter.sequenceP99 = data[0][\"sequence_gap_loss_percent_p99\"].toString()}else{parameter.sequenceP99 = \'null\';};\r\n if(!isEmpty(data[0][\"pkt_retrans_percent_value\"])){parameter.pktRetransPercent = data[0][\"pkt_retrans_percent_value\"].toString()}else{parameter.pktRetransPercent = \'null\'};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p50\"])){parameter.pktP50 = data[0][\"pkt_retrans_percent_p50\"].toString()}else{parameter.pktP50 =\'null\'};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p90\"])){parameter.pktP90 = data[0][\"pkt_retrans_percent_p90\"].toString()}else{parameter.pktP90 = \'null\'};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p99\"])){parameter.pktP99 = data[0][\"pkt_retrans_percent_p99\"].toString()}else{parameter.pktP99 = \'null\'};\r\n }\r\n \r\n\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (358, 'entityDetailOverviewAppNetworkQuantity2', '/entity/detail/overview/app/networkQuantity/2', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_value, ROUND(QUANTILE(http_response_latency_ms,0.5)) AS http_response_latency_p50, ROUND(QUANTILE(http_response_latency_ms,0.9)) AS http_response_latency_p90, ROUND(QUANTILE(http_response_latency_ms,0.99)) AS http_response_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND common_app_label = \'${parameter.appName}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (359, 'entityDetailOverviewAppNetworkQuantity3', '/entity/detail/overview/app/networkQuantity/3', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_value, ROUND(QUANTILE(ssl_con_latency_ms,0.5)) AS ssl_con_latency_p50, ROUND(QUANTILE(ssl_con_latency_ms,0.9)) AS ssl_con_latency_p90, ROUND(QUANTILE(ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND common_app_label = \'${parameter.appName}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (360, 'entityDetailOverviewAppNetworkQuantity145', '/entity/detail/overview/app/networkQuantity/145', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(establish_latency_avg_percent)) AS establish_latency_value, ROUND(QUANTILE(establish_latency_avg_percent,0.5)) AS establish_latency_p50, ROUND(QUANTILE(establish_latency_avg_percent,0.9)) AS establish_latency_p90, ROUND(QUANTILE(establish_latency_avg_percent,0.99)) AS establish_latency_p99, ROUND(AVG(pkt_retrans_percent), 4) AS pkt_retrans_percent_value, ROUND(QUANTILE(pkt_retrans_percent, 0.5), 4) AS pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent, 0.9), 4) AS pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent, 0.99), 4) AS pkt_retrans_percent_p99, ROUND(AVG(sequence_gap_loss_percent), 4) AS sequence_gap_loss_percent_value, ROUND(QUANTILE(sequence_gap_loss_percent, 0.5), 4) AS sequence_gap_loss_percent_p50, ROUND(QUANTILE(sequence_gap_loss_percent, 0.9), 4) AS sequence_gap_loss_percent_p90, ROUND(QUANTILE(sequence_gap_loss_percent, 0.99), 4) AS sequence_gap_loss_percent_p99 FROM ( SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_avg_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND common_app_label = \'${parameter.appName}\' GROUP BY granularity )\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (361, 'entityDetailOverviewIpNetworkQuantity', '/entity/detail/overview/ip/networkQuantity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.httpResponseLatency} AS http_response_latency_value, ${parameter.httpP50} AS http_response_latency_p50, ${parameter.httpP90} AS http_response_latency_p90, ${parameter.httpP99} AS http_response_latency_p99, ${parameter.sslConLatency} AS ssl_con_latency_value, ${parameter.sslP50} AS ssl_con_latency_p50, ${parameter.sslP90} AS ssl_con_latency_p90, ${parameter.sslP99} AS ssl_con_latency_p99, ${parameter.establishLatency} AS establish_latency_value, ${parameter.establishP50} AS establish_latency_p50, ${parameter.establishP90} AS establish_latency_p90, ${parameter.establishP99} AS establish_latency_p99, ${parameter.sequenceGapLossPercent} AS sequence_gap_loss_percent_value, ${parameter.sequenceP50} AS sequence_gap_loss_percent_p50, ${parameter.sequenceP90} AS sequence_gap_loss_percent_p90, ${parameter.sequenceP99} AS sequence_gap_loss_percent_p99, ${parameter.pktRetransPercent} AS pkt_retrans_percent_value, ${parameter.pktP50} AS pkt_retrans_percent_p50, ${parameter.pktP90} AS pkt_retrans_percent_p90, ${parameter.pktP99} AS pkt_retrans_percent_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip = \'${parameter.ip}\' LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n parameter.httpResponseLatency = \'null\';\r\nparameter.httpP50 = \'null\';\r\nparameter.httpP90 = \'null\';\r\nparameter.httpP99 = \'null\';\r\nparameter.sslConLatency = \'null\';\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\n parameter.httpResponseLatency = \'null\';\r\nparameter.httpP50 = \'null\';\r\nparameter.httpP90 = \'null\';\r\nparameter.httpP99 = \'null\';\r\n parameter.sslConLatency = \'null\';\r\nparameter.sslP50 = \'null\';\r\nparameter.sslP90 = \'null\';\r\nparameter.sslP99 = \'null\';\r\n parameter.establishLatency = \'null\';\r\nparameter.establishP50 = \'null\';\r\nparameter.establishP90 = \'null\';\r\nparameter.establishP99 = \'null\';\r\n parameter.sequenceGapLossPercent = \'null\';\r\nparameter.sequenceP50 = \'null\';\r\nparameter.sequenceP90 = \'null\';\r\nparameter.sequenceP99 = \'null\';\r\n parameter.pktRetransPercent = \'null\';\r\nparameter.pktP50 = \'null\';\r\nparameter.pktP90 = \'null\';\r\nparameter.pktP99 = \'null\';\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var http = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/ip/networkQuantity/2\',\'GET\',parameter); if(http.success){\r\n var data = http.data; if(!isEmpty(data[0][\"http_response_latency_value\"])){parameter.httpResponseLatency = data[0][\"http_response_latency_value\"].toString(); }else{parameter.httpResponseLatency = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p50\"])){parameter.httpP50 = data[0][\"http_response_latency_p50\"].toString(); }else{parameter.httpP50 = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p90\"])){parameter.httpP90 = data[0][\"http_response_latency_p90\"].toString(); }else{parameter.httpP90 = \'null\';} \r\nif(!isEmpty(data[0][\"http_response_latency_p99\"])){parameter.httpP99 = data[0][\"http_response_latency_p99\"].toString(); }else{parameter.httpP99 = \'null\';} \r\n} \r\n\r\nvar ssl = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/ip/networkQuantity/3\',\'GET\',parameter);\r\n if(ssl.success){\r\n var data = ssl.data;\r\n if(!isEmpty(data[0][\"ssl_con_latency_value\"])){\r\nparameter.sslConLatency = data[0][\"ssl_con_latency_value\"].toString();\r\n}else{parameter.sslConLatency = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p50\"])){\r\nparameter.sslP50 = data[0][\"ssl_con_latency_p50\"].toString();\r\n}else{parameter.sslP50 = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p90\"])){\r\nparameter.sslP90 = data[0][\"ssl_con_latency_p90\"].toString();\r\n}else{parameter.sslP90 = \'null\';}\r\nif(!isEmpty(data[0][\"ssl_con_latency_p99\"])){\r\nparameter.sslP99 = data[0][\"ssl_con_latency_p99\"].toString();\r\n}else{parameter.sslP99 = \'null\';}\r\n }\r\n var result = galaxyUtils.sendGalaxyRequest(\'/entity/detail/overview/ip/networkQuantity/145\',\'GET\',parameter);\r\n if(result.success){\r\n var data = result.data;\r\n if(!isEmpty(data[0][\"establish_latency_value\"])){parameter.establishLatency = data[0][\"establish_latency_value\"].toString()}else{parameter.establishLatency = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p50\"])){parameter.establishP50 = data[0][\"establish_latency_p50\"].toString()}else{parameter.establishP50 = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p90\"])){parameter.establishP90 = data[0][\"establish_latency_p90\"].toString()}else{parameter.establishP90 = \'null\';};\r\nif(!isEmpty(data[0][\"establish_latency_p99\"])){parameter.establishP99 = data[0][\"establish_latency_p99\"].toString()}else{parameter.establishP99 = \'null\';};\r\n if(!isEmpty(data[0][\"sequence_gap_loss_percent_value\"])){parameter.sequenceGapLossPercent = data[0][\"sequence_gap_loss_percent_value\"].toString()}else{parameter.sequenceGapLossPercent = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p50\"])){parameter.sequenceP50 = data[0][\"sequence_gap_loss_percent_p50\"].toString()}else{parameter.sequenceP50 = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p90\"])){parameter.sequenceP90 = data[0][\"sequence_gap_loss_percent_p90\"].toString()}else{parameter.sequenceP90 = \'null\';};\r\nif(!isEmpty(data[0][\"sequence_gap_loss_percent_p99\"])){parameter.sequenceP99 = data[0][\"sequence_gap_loss_percent_p99\"].toString()}else{parameter.sequenceP99 = \'null\';};\r\n if(!isEmpty(data[0][\"pkt_retrans_percent_value\"])){parameter.pktRetransPercent = data[0][\"pkt_retrans_percent_value\"].toString()}else{parameter.pktRetransPercent = \'null\';};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p50\"])){parameter.pktP50 = data[0][\"pkt_retrans_percent_p50\"].toString()}else{parameter.pktP50 = \'null\';};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p90\"])){parameter.pktP90 = data[0][\"pkt_retrans_percent_p90\"].toString()}else{parameter.pktP90 = \'null\';};\r\nif(!isEmpty(data[0][\"pkt_retrans_percent_p99\"])){parameter.pktP99 = data[0][\"pkt_retrans_percent_p99\"].toString()}else{parameter.pktP99 = \'null\';};\r\n }\r\n \r\n\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (362, 'entityDetailOverviewIpNetworkQuantity2', '/entity/detail/overview/ip/networkQuantity/2', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_value, ROUND(QUANTILE(http_response_latency_ms,0.5)) AS http_response_latency_p50, ROUND(QUANTILE(http_response_latency_ms,0.9)) AS http_response_latency_p90, ROUND(QUANTILE(http_response_latency_ms,0.99)) AS http_response_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (363, 'entityDetailOverviewIpNetworkQuantity3', '/entity/detail/overview/ip/networkQuantity/3', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_value, ROUND(QUANTILE(ssl_con_latency_ms,0.5)) AS ssl_con_latency_p50, ROUND(QUANTILE(ssl_con_latency_ms,0.9)) AS ssl_con_latency_p90, ROUND(QUANTILE(ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (364, 'entityDetailOverviewIpNetworkQuantity145', '/entity/detail/overview/ip/networkQuantity/145', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(establish_latency_avg_percent)) AS establish_latency_value, ROUND(QUANTILE(establish_latency_avg_percent,0.5)) AS establish_latency_p50, ROUND(QUANTILE(establish_latency_avg_percent,0.9)) AS establish_latency_p90, ROUND(QUANTILE(establish_latency_avg_percent,0.99)) AS establish_latency_p99, ROUND(AVG(pkt_retrans_percent), 4) AS pkt_retrans_percent_value, ROUND(QUANTILE(pkt_retrans_percent, 0.5), 4) AS pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent, 0.9), 4) AS pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent, 0.99), 4) AS pkt_retrans_percent_p99, ROUND(AVG(sequence_gap_loss_percent), 4) AS sequence_gap_loss_percent_value, ROUND(QUANTILE(sequence_gap_loss_percent, 0.5), 4) AS sequence_gap_loss_percent_p50, ROUND(QUANTILE(sequence_gap_loss_percent, 0.9), 4) AS sequence_gap_loss_percent_p90, ROUND(QUANTILE(sequence_gap_loss_percent, 0.99), 4) AS sequence_gap_loss_percent_p99 FROM ( SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_avg_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND common_server_ip = \'${parameter.ip}\' GROUP BY granularity )\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (365, 'entityDetailDomainServiceOverview145', '/entity/detail/domain/serviceOverview/145', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (366, 'entityDetailDomainServiceOverview2', '/entity/detail/domain/serviceOverview/2', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND domain = \'${parameter.domain}\' \",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (367, 'entityDetailDomainServiceOverview3', '/entity/detail/domain/serviceOverview/3', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND domain = \'${parameter.domain}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (368, 'entityDetailAppServiceOverview145', '/entity/detail/app/serviceOverview/145', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND common_app_label = \'${parameter.appName}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (369, 'entityDetailAppServiceOverview2', '/entity/detail/app/serviceOverview/2', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND common_app_label = \'${parameter.appName}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (370, 'entityDetailAppServiceOverview3', '/entity/detail/app/serviceOverview/3', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND common_app_label = \'${parameter.appName}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (371, 'entityDetailIpServiceOverview145', '/entity/detail/ip/serviceOverview/145', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/ SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num), 4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (372, 'entityDetailIpServiceOverview2', '/entity/detail/ip/serviceOverview/2', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (373, 'entityDetailIpServiceOverview3', '/entity/detail/ip/serviceOverview/3', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND common_server_ip = \'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-11 13:03:32', '2022-02-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (374, 'entityDetailOverviewIpRelatedApp', '/entity/detail/overview/ip/relatedApp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_name, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (common_server_ip = \'${parameter.ip}\' OR common_client_ip=\'${parameter.ip}\') AND notEmpty(common_app_label) GROUP BY common_app_label ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-15 13:03:32', '2022-02-15 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (375, 'entityDetailOverviewDomainRelatedServerIp', '/entity/detail/overview/domain/relatedServerIp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS ip, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND domain=\'${parameter.domain}\' AND notEmpty(common_server_ip) GROUP BY common_server_ip ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-15 13:03:32', '2022-02-15 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (376, 'entityDetailOverviewAppRelatedDomain', '/entity/detail/overview/app/relatedDomain', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_c2s_pkt_num + common_s2c_pkt_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label=\'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-15 13:03:32', '2022-02-15 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (377, 'detectionSecurityFilterSeverity', '/detection/security/filter/severity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_severity AS event_severity, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND event_severity IN (\'critical\',\'high\',\'medium\',\'low\',\'info\') <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY event_severity\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (378, 'detectionSecurityFilterSecurityType', '/detection/security/filter/securityType', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT security_type AS security_type, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type IN (\'command and control\',\'payload_delivery\',\'cryptomining\',\'phishing\',\'dga\',\'ddos\') <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY security_type ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (379, 'detectionSecurityFilterVictimIp', '/detection/security/filter/victimIp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT victim_ip AS victim_ip, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY victim_ip ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (380, 'detectionSecurityFilterVictimLocation', '/detection/security/filter/victimLocation', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT victim_location_country AS victim_location_country, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY victim_location_country ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (381, 'detectionSecurityFilterOffenderIp', '/detection/security/filter/offenderIp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT offender_ip AS offender_ip, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY offender_ip ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (382, 'detectionSecurityFilterOffenderLocation', '/detection/security/filter/offenderLocation', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT offender_location_country AS offender_location_country, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY offender_location_country ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (383, 'detectionSecurityListBasic', '/detection/security/list/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT CAST(event_id AS string) AS event_id, security_type AS security_type, domain AS domain, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, malware_name AS malware_name, cryptomining_pool AS cryptomining_pool, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> ORDER BY start_time DESC <#if parameter.pageNo?default(\'\')?trim? length gt 0&¶meter.pageSize?default(\'\')?trim? length gt 0> limit ${parameter.pageNo}, ${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (384, 'detectionSecurityListCount', '/detection/security/list/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0>AND ${parameter.q} </#if> limit 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (385, 'detectionSecurityDetailOverviewBasic', '/detection/security/detail/overview/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_id AS event_id, start_time AS start_time, ioc_value AS ioc_value, victim_ip AS victim_ip, victim_location_country AS victim_location_country, victim_location_province AS victim_location_province, victim_location_region AS victim_location_region, victim_asn AS victim_asn, offender_ip AS offender_ip, offender_location_country AS offender_location_country, offender_location_province AS offender_location_province, offender_location_region AS offender_location_region, offender_asn AS offender_asn, domain AS domain, domain_category_name AS domain_category_name, domain_category_group AS domain_category_group, domain_reputation_level AS domain_reputation_level, app_name AS app_name, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk, cryptomining_pool AS cryptomining_pool, cryptomining_coin_type AS cryptomining_coin_type, cryptomining_software AS cryptomining_software, malware_name AS malware_name, malware_alias AS malware_alias, malware_description AS malware_description, malware_platforms AS malware_platforms, malware_techniques AS malware_techniques, malware_groups AS malware_groups FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.eventId?default(\'\')?trim? length gt 0> AND event_id = ${parameter.eventId}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (386, 'detectionSecurityDetailOverviewEvent', '/detection/security/detail/overview/event', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ABS(start_time-${parameter.startTime}) as diff_seconds, event_id AS event_id, event_severity AS event_severity, security_type AS security_type, start_time AS start_time, offender_ip AS offender_ip, victim_ip AS victim_ip FROM security_event WHERE (victim_ip IN (\'${parameter.offenderIp}\',\'${parameter.victimIp}\') OR offender_ip IN (\'${parameter.offenderIp}\',\'${parameter.victimIp}\')) HAVING diff_seconds <= 604800 ORDER BY diff_seconds ASC limit 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (387, 'detectionSecurityFilterSeverityTrend', '/detection/security/filter/severityTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT HISTOGRAM(CAST(start_time*1000 AS DATETIME),INTERVAL ${parameter.step} SECOND) AS stat_time, event_severity AS event_severity, COUNT(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY stat_time, event_severity ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (388, 'detectionPerformanceFilterSeverityTrend', '/detection/performance/filter/severityTrend', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT HISTOGRAM(CAST(start_time*1000 AS DATETIME),INTERVAL ${parameter.step} SECOND) AS stat_time, event_severity AS event_severity, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY stat_time, event_severity ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-25 13:03:32', '2022-02-25 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (389, 'detectionFilterSeverity', '/detection/performance/filter/severity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_severity AS event_severity, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND event_severity IN (\'critical\',\'high\',\'medium\',\'low\',\'info\') <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY event_severity\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-25 13:03:32', '2022-02-25 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (390, 'detectionFilterEventType', '/detection/performance/filter/eventType', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_type AS event_type, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND event_type IN (\'dns error\',\'http error\',\'high dns response time\') <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY event_type ORDER BY count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-25 13:03:32', '2022-02-25 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (391, 'detectionPerformanceListBasic', '/detection/performance/list/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT CAST(event_id as string) as event_id, entity_type AS entity_type, server_ip AS server_ip, domain AS domain, app_name AS app_name, event_severity AS event_severity, event_type AS event_type, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-25 13:03:32', '2022-02-25 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (392, 'detectionPerformanceDetailOverviewBasic', '/detection/performance/detail/overview/basic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT server_location_country AS server_location_country, server_location_province AS server_location_province, server_location_region AS server_location_region, server_asn AS server_asn, domain_category_name AS domain_category_name, domain_category_group AS domain_category_group, domain_reputation_score AS domain_reputation_score, domain_reputation_level AS domain_reputation_level, app_category AS app_category, app_subcategory AS app_subcategory, app_risk AS app_risk FROM performance_event WHERE start_time >= ${parameter.startTime} <#if parameter.serverIp?default(\'\')?trim? length gt 0> AND server_ip = \'${parameter.serverIp}\' </#if><#if parameter.appName?default(\'\')?trim? length gt 0> AND app_name = \'${parameter.appName}\' </#if><#if parameter.domain?default(\'\')?trim? length gt 0> AND domain = \'${parameter.domain}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = nowTimestamp\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = nowTimestamp - 5 * 60 *1000\r\n}\r\n/*计算step,series最多显示100个点,单位:min*/\r\nparameter.step = Math.ceil((parameter.endTime-parameter.startTime)/6000/100);\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-02-25 13:03:32', '2022-02-25 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (393, 'detectionPerformanceListCount', '/detection/performance/list/count', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> limit 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\n;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-02-16 13:03:32', '2022-02-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (394, 'dnsRtdns', '/dns/rtdns', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count FROM entity_info WHERE dns_server_role like \'%RTDNS%\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (395, 'dnsTldns', '/dns/tldns', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count FROM entity_info WHERE dns_server_role like \'%TLDNS%\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (396, 'dnsAdns', '/dns/adns', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count FROM entity_info WHERE dns_server_role like \'%ADNS%\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (397, 'dnsOprdns', '/dns/oprdns', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count FROM entity_info WHERE dns_server_role like \'%OPRDNS%\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (398, 'dnsOs', '/dns/os', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_server_os AS name, COUNT(DISTINCT(ip_addr)) AS num FROM entity_info WHERE dns_server_role !=\'\' AND dns_server_role IS NOT NULL AND dns_server_os != \'\' AND dns_server_os IS NOT NULL GROUP BY dns_server_os\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (399, 'dnsSoftware', '/dns/software', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_server_software AS name, COUNT(DISTINCT(ip_addr)) AS num FROM entity_info WHERE dns_server_role !=\'\' AND dns_server_role IS NOT NULL AND dns_server_software != \'\' AND dns_server_software IS NOT NULL GROUP BY dns_server_software\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (400, 'dnsOrg', '/dns/org', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_server_org AS name, COUNT(DISTINCT(ip_addr)) AS num FROM entity_info WHERE dns_server_role !=\'\' AND dns_server_role IS NOT NULL AND dns_server_org != \'\' AND dns_server_org IS NOT NULL GROUP BY dns_server_org\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (401, 'dnsDnssecSupport', '/dns/dnssecSupport', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count <#if parameter.sum?default(\'\')?trim? length gt 0> , ROUND(CAST(COUNT(DISTINCT(ip_addr)) AS DOUBLE)/${parameter.sum},4)<#else>, 0 </#if> AS percent FROM entity_info WHERE dnssec_support = \'true\' AND dns_server_role != \'\' AND dns_server_role IS NOT NULL LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/dnsCount\',\'GET\',parameter);\r\n if(result.success&&result.data!=0){\r\nparameter.sum = Number(result.data[0][\'count\']);\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (402, 'dnsIpv6Support', '/dns/ipv6Support', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count <#if parameter.sum?default(\'\')?trim? length gt 0> , ROUND(CAST(COUNT(DISTINCT(ip_addr)) AS DOUBLE)/${parameter.sum},4) <#else>, 0 </#if> AS percent FROM entity_info WHERE ip_addr LIKE \'%:%\' AND dns_server_role != \'\' AND dns_server_role IS NOT NULL LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/dnsCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.sum = Number(result.data[0][\'count\']);\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (403, 'dnsEncryptedProtocolSupport', '/dns/encryptedProtocolSupport', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT \'${parameter.doh}\' AS doh ,\'${parameter.dot}\' AS dot FROM entity_info LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/dnsCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.sum = Number(result.data[0][\'count\']);\r\n}\r\nvar galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var hresult = galaxyUtils.sendGalaxyRequest(\'/dns/dohCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.doh = hresult.data[0].toString();\r\n}else{\r\nparameter.doh = \"{}\"\r\n}\r\n var tresult = galaxyUtils.sendGalaxyRequest(\'/dns/dotCount\',\'GET\',parameter);\r\n if(tresult.success){\r\nparameter.dot = tresult.data[0].toString();\r\n}else{\r\nparameter.dot = \"{}\"\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n var str = pojo[key].replace(/=/g,\":\");\r\n var json = eval(\"(\" + str + \")\");\r\n tempObj[tempKey] = json }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (404, 'dnsDohCount', '/dns/dohCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count<#if parameter.sum?default(\'\')?trim? length gt 0>, ROUND(CAST(COUNT(DISTINCT(ip_addr)) AS DOUBLE)/${parameter.sum},4) <#else>, 0 </#if> AS percent FROM entity_info WHERE doh_support = \'true\' AND dns_server_role != \'\' AND dns_server_role IS NOT NULL LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/dnsCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.sum = Number(result.data[0][\'count\']);\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (405, 'dnsDotCount', '/dns/dotCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count <#if parameter.sum?default(\'\')?trim? length gt 0> , ROUND(CAST(COUNT(DISTINCT(ip_addr)) AS DOUBLE)/${parameter.sum},4)<#else>, 0 </#if> AS percent FROM entity_info WHERE dot_support = \'true\' AND dns_server_role != \'\' AND dns_server_role IS NOT NULL LIMIT 1\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/dnsCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.sum = Number(result.data[0][\'count\']);\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (406, 'dnsMap', '/dns/map', 'v1', 'GET', '/', '{\r\n \"query\": \"<#if parameter.dnsServerRole?default(\'\')?trim? length gt 0 && parameter.dnsServerRole?upper_case == \'RTDNSM\'>SELECT dns_root_mirror_locations FROM entity_info WHERE dns_server_role = \'RTDNS\' <#else>SELECT dns_server_role AS dns_server_role, ip_location_country AS ip_location_country, COUNT(DISTINCT(ip_addr)) AS count <#if parameter.ipLocationCountry?default(\'\')?trim? length gt 0>, ip_location_province AS ip_location_province <#if parameter.ipLocationProvince?default(\'\')?trim? length gt 0>, ip_location_city AS ip_location_city </#if> </#if> FROM entity_info WHERE dns_server_role = \'${parameter.dnsServerRole}\' <#if parameter.ipLocationCountry?default(\'\')?trim? length gt 0> <#if parameter.ipLocationProvince?default(\'\')?trim? length gt 0>AND ip_location_country = \'${parameter.ipLocationCountry}\' AND ip_location_province = \'${parameter.ipLocationProvince}\' AND ip_location_city != \'\' <#else> AND ip_location_country = \'${parameter.ipLocationCountry}\' AND ip_location_province != \'\' </#if> <#else> AND ip_location_country != \'\' </#if> GROUP BY dns_server_role, ip_location_country <#if parameter.ipLocationCountry?default(\'\')?trim? length gt 0>,ip_location_province <#if parameter.ipLocationProvince?default(\'\')?trim? length gt 0>,ip_location_city</#if></#if></#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function (all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n}\r\nfunction isEmpty(a) {\r\n if (a === \"\")\r\n return true;\r\n if (a === \"null\")\r\n return true;\r\n if (a === \"undefined\")\r\n return true;\r\n if (!a && a !== 0 && a !== \"\")\r\n return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0)\r\n return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0)\r\n return true;\r\n return false;\r\n}\r\n\r\nif (result.success) {\r\n var o = {};\r\n o.resultType = \"table\";\r\n if (!isEmpty(parameter.dnsServerRole) && parameter.dnsServerRole.toUpperCase()===\"RTDNSM\") {\r\n var tempObj = new java.util.ArrayList();\r\n if (result.data.length > 0) {\r\n for (var i in result.data) {\r\n var pojo = result.data[i];\r\n var obj;\r\n for (var key in pojo) {\r\n obj = pojo[key];\r\n }\r\n var arr = eval(obj);\r\n for (var i = 0; i < arr.length; i++) {\r\n var pojo = arr[i];\r\n tempObj.add(pojo);\r\n }\r\n o.result = tempObj;\r\n\r\n }\r\n }\r\n } else {\r\n o.result = result.data; if (o.result.length > 0) {\r\n for (var i in o.result) {\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n\r\n for (var key in pojo) {\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n for (var item in countryCodeMap) {\r\n if (item.toLowerCase() == tempObj.ipLocationCountry.toLowerCase()) {\r\n tempObj.ipLocationId = countryCodeMap[item];\r\n }\r\n }\r\n if (!tempObj.ipLocationId) {\r\n tempObj.ipLocationId = \"\";\r\n } else {\r\n // 存在地区\r\n if (tempObj.ipLocationProvince) {\r\n for (var item in countCityMap[tempObj.ipLocationId]) {\r\n if (item.toLowerCase() == tempObj.ipLocationProvince.toLowerCase()) {\r\n var regionCode = countCityMap[tempObj.ipLocationId][item];\r\n if (regionCode) {\r\n tempObj.ipLocationId = regionCode;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n }\r\n result.code = 200;\r\n result.data = o;\r\n result.msg = result.message;\r\n result.message = null;\r\n}\r\n', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (407, 'dnsQueryRate', '/dns/queryRate', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(COUNT(*)/${parameter.step},4) AS query_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n return (a - b);\r\n }\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n }\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key] + \"\";\r\n aggregation.last = list[list.length - 1][key] + \"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = Math.round(sumValue / list.length) + \"\";\r\n \r\n var plist = new java.util.ArrayList();\r\n for(var i=0; i<values.length; i++){\r\n plist.add(values[i][1]);\r\n }\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\naggregation.p90 = getPercentile(plist, 0.9);\r\naggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (408, 'dnsQueryCount', '/dns/queryCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT SUM(IF(dns_qr =0,1,0)) AS query_count FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(dns_protocol)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=Number(o.result[0][key])\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (409, 'dnsDohInquiries', '/dns/dohInquiries', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT SUM(IF(dns_qr =0,1,0)) AS count <#if parameter.sum?default(\'\')?trim? length gt 0> , ROUND(CAST(SUM(IF(dns_qr =0,1,0)) AS DOUBLE)/${parameter.sum},4) <#else>, 0 </#if> AS percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time <${parameter.endTime} AND dns_protocol = \'doh\' AND notEmpty(dns_server_role)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/queryCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.sum = Number(result.data[0][\'query_count\']);\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = Number(pojo[key]);\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (410, 'dnsDotInquiries', '/dns/dotInquiries', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT SUM(IF(dns_qr =0,1,0)) AS count <#if parameter.sum?default(\'\')?trim? length gt 0&¶meter.sum!=0> , ROUND(CAST(SUM(IF(dns_qr =0,1,0)) AS DOUBLE)/${parameter.sum},4) <#else>, 0 </#if> AS percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND dns_protocol = \'dot\' AND notEmpty(dns_server_role)\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\');\r\n var result = galaxyUtils.sendGalaxyRequest(\'/dns/queryCount\',\'GET\',parameter);\r\n if(result.success){\r\nparameter.sum = Number(result.data[0][\'query_count\']);\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = Number(pojo[key]);\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (411, 'dnsActiveClientIp', '/dns/activeClientIp', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_client_ip AS server_ip, COUNT(*) AS query_count, ROUND(AVG(dns_response_latency_ms)) AS dns_latency, ROUND(SUM(IF(dns_rcode = 0,0,1))/COUNT(dns_rcode),4) AS response_fail_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' GROUP BY common_client_ip ORDER BY ${parameter.order} DESC <#if parameter.limit?default(\'\')?trim? length gt 0> Limit ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nfunction toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif(parameter.order){parameter.order = toLine(parameter.order);}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (412, 'dnsActiveDomainServer', '/dns/activeDomainServer', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_ip AS server_ip, ROUND(SUM(IF(dns_qr =0,1,0))/toUnixTimestamp(${parameter.endTime} - ${parameter.startTime}),2) AS query_rate, ROUND(AVG(dns_response_latency_ms)) AS dns_latency, ROUND(COUNT(*)/COUNT(dns_rcode),4) AS response_fail_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' GROUP BY common_server_ip ORDER BY ${parameter.order} DESC <#if parameter.limit?default(\'\')?trim? length gt 0> Limit ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nfunction toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif(parameter.order){parameter.order = toLine(parameter.order);}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (413, 'dnsResolveDomain', '/dns/resolveDomain', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_qname AS dns_qname, COUNT(*) AS query_count, ROUND(AVG(dns_response_latency_ms)) AS dns_latency, ROUND(SUM(IF(dns_rcode = 0,0,1))/COUNT(dns_rcode),4) AS response_fail_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(dns_qname) AND common_schema_type = \'DNS\' GROUP BY dns_qname ORDER BY ${parameter.order} DESC <#if parameter.limit?default(\'\')?trim? length gt 0> Limit ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nfunction toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif(parameter.order){parameter.order = toLine(parameter.order);}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (414, 'dnsAverageResolveLatency', '/dns/averageResolveLatency', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(dns_response_latency_ms)) AS dns_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n return (a - b);\r\n }\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n }\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key]+\"\";\r\n aggregation.last = list[list.length - 1][key]+\"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (415, 'dnsResponseFailureRate', '/dns/responseFailureRate', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(dns_rcode = 1,1,0))/COUNT(dns_rcode),4) AS format_error_rate, ROUND(SUM(IF(dns_rcode = 2,1,0))/COUNT(dns_rcode),4) AS server_failure_rate, ROUND(SUM(IF(dns_rcode = 3,1,0))/COUNT(dns_rcode),4) AS non_existent_domain_rate, ROUND(SUM(IF(dns_rcode = 4,1,0))/COUNT(dns_rcode),4) AS not_implemented_rate, ROUND(SUM(IF(dns_rcode = 5,1,0))/COUNT(dns_rcode),4) AS query_refused_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n }\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key]+\"\";\r\n aggregation.last = list[list.length - 1][key]+\"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (416, 'dnsAlarmInfo', '/dns/alarmInfo', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT entity_type AS entity_type, server_ip AS server_ip, domain AS domain, app_name AS app_name, event_severity AS event_severity, event_type AS event_type, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.eventSeverity?default(\'\')?trim? length gt 0> AND event_severity = \'${parameter.eventSeverity}\' </#if> ORDER BY start_time DESC <#if parameter.pageNo?default(\'\')?trim? length gt 0&¶meter.pageSize?default(\'\')?trim? length gt 0> limit ${parameter.pageNo}, ${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (417, 'dnsAlarmInfoCount', '/dns/alarmInfoCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.eventSeverity?default(\'\')?trim? length gt 0> AND event_severity = \'${parameter.eventSeverity}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (418, 'dnsCount', '/dns/dnsCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count FROM entity_info WHERE dns_server_role != \'\' AND dns_server_role IS NOT NULL\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (419, 'entityDetailIpPort', '/entity/detail/ip/port', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_server_port as server_port, common_l7_protocol AS protocol, http_response_line AS http_response_line, common_recv_time AS recv_time FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip=\'${parameter.ip}\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (420, 'detectionPerformanceDetailOverviewMetric', '/detection/performance/detail/overview/metric', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(dns_rcode = 0,0,1))/COUNT(dns_rcode),4) AS dns_error_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' <#if parameter.serverIp?default(\'\')?trim? length gt 0> AND common_server_ip = \'${parameter.serverIp}\' <#elseif parameter.appName?default(\'\')?trim? length gt 0> AND common_app_label = \'${parameter.appName}\' <#elseif parameter.domain?default(\'\')?trim? length gt 0> <#if parameter.eventType==\'dns error\' || parameter.eventType==\'high dns response time\'> AND dns_qname = \'${parameter.domain}\' <#elseif parameter.eventType==\'http error\'> AND domain = \'${parameter.domain}\' </#if> </#if> GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key]+\"\";\r\n aggregation.last = list[list.length - 1][key]+\"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n}', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (421, 'detectionPerformanceFilterActiveEntity', '/detection/performance/filter/activeEntity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT entity_type AS entity_type, IIF(entity_type = \'domain\',domain, IIF(entity_type = \'ip\',server_ip, app_name)) AS name, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if> GROUP BY entity_type, app_name, domain, server_ip ORDER by count DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-10-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (422, 'entityDetailIpDomains', '/entity/detail/ip/domains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_server_ip=\'${parameter.ip}\' AND notEmpty(domain) GROUP BY domain ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-03 10:03:32', '2022-03-03 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (423, 'entityDetailIpDomainByCategory', '/entity/detail/ip/domainByCategory', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_category_name AS category_name, uniq(domain) AS uniq_domains FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain_category_name) <#if parameter.domains?default(\'\')?trim? length gt 0> AND domain in (<#list parameter.domains?split(\",\") as domain><#if !domain_has_next>\'${domain}\'<#else>\'${domain}\',</#if></#list>) </#if> GROUP BY domain_category_name\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-21 10:03:32', '2022-03-21 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (424, 'entityDetailIpDomainByReputation', '/entity/detail/ip/domainByReputation', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_reputation_level AS reputation_level, uniq(domain) AS uniq_domains FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain_reputation_level) <#if parameter.domains?default(\'\')?trim? length gt 0> AND domain in (<#list parameter.domains?split(\",\") as domain><#if !domain_has_next>\'${domain}\'<#else>\'${domain}\',</#if></#list>) </#if> GROUP BY domain_reputation_level\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-21 10:03:32', '2022-03-21 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (425, 'entityDetailAppDomains', '/entity/detail/app/domains', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain AS domain, SUM(common_c2s_byte_num + common_s2c_byte_num) as bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_app_label = \'${parameter.appName}\' AND notEmpty(domain) GROUP BY domain ORDER BY bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'if(result.success){\r\n \r\n var o={};\r\n \r\n var list = result.data;\r\n var arr = new java.util.ArrayList(); \r\n if(list.length > 0){\r\n for(var i=0; i< list.length; i++){\r\n var pojo = list[i];\r\n arr.add(pojo[\"domain\"]) \r\n }\r\n } \r\n o.resultType=\"array\"\r\n o.result=arr;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-22 10:03:32', '2022-03-22 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (426, 'entityDetailAppDomainByCategory', '/entity/detail/app/domainByCategory', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_category_name AS category_name, uniq(domain) AS uniq_domains FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain_category_name) <#if parameter.domains?default(\'\')?trim? length gt 0> AND domain in (<#list parameter.domains?split(\",\") as domain><#if !domain_has_next>\'${domain}\'<#else>\'${domain}\',</#if></#list>) </#if> GROUP BY domain_category_name\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-22 10:03:32', '2022-03-22 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (427, 'entityDetailAppDomainByReputation', '/entity/detail/app/domainByReputation', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT domain_reputation_level AS reputation_level, uniq(domain) AS uniq_domains FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(domain_reputation_level) <#if parameter.domains?default(\'\')?trim? length gt 0> AND domain in (<#list parameter.domains?split(\",\") as domain><#if !domain_has_next>\'${domain}\'<#else>\'${domain}\',</#if></#list>) </#if> GROUP BY domain_reputation_level\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-21 10:03:32', '2022-03-21 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (428, 'entityDetailIpSecurityEvent', '/entity/detail/ip/securityEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_id AS event_id, security_type AS security_type, domain AS domain, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, malware_name AS malware_name, cryptomining_pool AS cryptomining_pool, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.ip?default(\'\')?trim? length gt 0> AND (client_ip = \'${parameter.ip}\' OR server_ip = \'${parameter.ip}\') </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (429, 'entityDetailIpSecurityEventCount', '/entity/detail/ip/securityEventCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.ip?default(\'\')?trim? length gt 0> AND (client_ip = \'${parameter.ip}\' OR server_ip = \'${parameter.ip}\') </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (430, 'entityDetailIpPerformanceEvent', '/entity/detail/ip/performanceEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT entity_type AS entity_type, server_ip AS server_ip, domain AS domain, app_name AS app_name, event_severity AS event_severity, event_type AS event_type, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.ip?default(\'\')?trim? length gt 0> AND server_ip = \'${parameter.ip}\' </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (431, 'entityDetailIpPerformanceEventCount', '/entity/detail/ip/performanceEventCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.ip?default(\'\')?trim? length gt 0> AND server_ip = \'${parameter.ip}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (432, 'entityDetailAppSecurityEvent', '/entity/detail/app/securityEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_id AS event_id, security_type AS security_type, domain AS domain, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, malware_name AS malware_name, cryptomining_pool AS cryptomining_pool, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.appName?default(\'\')?trim? length gt 0> AND app_name = \'${parameter.appName}\' </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (433, 'entityDetailAppSecurityEventCount', '/entity/detail/app/securityEventCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.appName?default(\'\')?trim? length gt 0> AND app_name = \'${parameter.appName}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (434, 'entityDetailAppPerformanceEvent', '/entity/detail/app/performanceEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT entity_type AS entity_type, server_ip AS server_ip, domain AS domain, app_name AS app_name, event_severity AS event_severity, event_type AS event_type, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.appName?default(\'\')?trim? length gt 0> AND app_name = \'${parameter.appName}\' </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (435, 'entityDetailAppPerformanceEventCount', '/entity/detail/app/performanceEventCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.appName?default(\'\')?trim? length gt 0> AND app_name = \'${parameter.appName}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (436, 'entityDetailDomainSecurityEvent', '/entity/detail/domain/securityEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_id AS event_id, security_type AS security_type, domain AS domain, offender_ip AS offender_ip, victim_ip AS victim_ip, event_severity AS event_severity, malware_name AS malware_name, cryptomining_pool AS cryptomining_pool, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.domain?default(\'\')?trim? length gt 0> AND domain = \'${parameter.domain}\' </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (437, 'entityDetailDomainSecurityEventCount', '/entity/detail/domain/securityEventCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.domain?default(\'\')?trim? length gt 0> AND domain = \'${parameter.domain}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (438, 'entityDetailDomainPerformanceEvent', '/entity/detail/domain/performanceEvent', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT entity_type AS entity_type, server_ip AS server_ip, domain AS domain, app_name AS app_name, event_severity AS event_severity, event_type AS event_type, start_time AS start_time, duration_ms AS duration_ms, end_time AS end_time FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.domain?default(\'\')?trim? length gt 0> AND domain = \'${parameter.domain}\' </#if> ORDER BY start_time DESC <#if parameter.pageSize?default(\'\')?trim? length gt 0&¶meter.pageNo?default(\'\')?trim? length gt 0> LIMIT ${parameter.pageNo},${parameter.pageSize}</#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (439, 'entityDetailDomainPerformanceEventCount', '/entity/detail/domain/performanceEventCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.domain?default(\'\')?trim? length gt 0> AND domain = \'${parameter.domain}\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (440, 'dnsOverallDnsTraffic', '/dns/overallDnsTraffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nif(parameter.pageNo){parameter.pageNo=(parameter.pageNo-1)*parameter.pageSize;}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-30 13:03:32', '2022-03-30 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (441, 'dnsDnsTraffic', '/dns/dnsTraffic', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes <#if parameter.count?default(\'\')?trim? length gt 0>, ROUND(isNull(count(*)/${parameter.count}),4) AS count_percent </#if> <#if parameter.bytes?default(\'\')?trim? length gt 0>, ROUND(isNull(SUM(common_c2s_byte_num + common_s2c_byte_num)/${parameter.bytes}),4) AS bytes_percent </#if> FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND (dns_protocol = \'doh\' OR dns_protocol = \'dot\')\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';function isEmpty(a){\r\n if (a === \"\") return true; if (a === null) return true; if (a === undefined) return true; if (!a && a !== 0 && a !==\"\") return true; return false;\r\n }\r\n var galaxyUtils = Java.type(\'net.geedge.common.utils.GalaxyUtils\'); var result = galaxyUtils.sendGalaxyRequest(\'/dns/overallDnsTraffic\',\'GET\',parameter); if(result.success){\r\n var data = result.data; if(!isEmpty(data[\"count\"])){parameter.count = data[\"count\"].toString(); }else{parameter.count = 0;}\r\nif(!isEmpty(data[\"bytes\"])){parameter.count = data[\"bytes\"].toString(); }else{parameter.bytes = 0;}\r\n }', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key]+\"\";\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-03-28 13:03:32', '2022-03-28 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (442, 'entityDetailOverviewIpDnsQueryRate', '/entity/detail/overview/ip/dnsQueryRate', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(COUNT(*)/${parameter.step},4) AS query_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' <#if parameter.ip?default(\'\')?trim? length gt 0> AND common_server_ip = \'${parameter.ip}\' </#if> GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n function sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key]+\"\";\r\n aggregation.last = list[list.length - 1][key]+\"\";\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n \r\n var plist = new java.util.ArrayList();\r\n for(var k=0; k<values.length; k++){\r\n plist.add(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n var lineObj = {};\r\n lineObj.legend = key; \r\n lineObj.values = values; \r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n \r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n}', '2022-03-31 13:43:32', '2022-03-31 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (443, 'detectionPerformanceDetailOverviewMetricDnsError', '/detection/performance/detail/overview/metric/dnsError', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(dns_rcode = 0,0,1))/COUNT(dns_rcode),4) AS dns_error_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' <#if parameter.serverIp?default(\'\')?trim? length gt 0> AND common_server_ip = \'${parameter.serverIp}\' <#elseif parameter.appName?default(\'\')?trim? length gt 0> AND common_app_label = \'${parameter.appName}\' <#elseif parameter.domain?default(\'\')?trim? length gt 0> AND dns_qname = \'${parameter.domain}\' </#if> GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-04-19 13:43:32', '2022-04-19 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (444, 'detectionPerformanceDetailOverviewMetricHttpError', '/detection/performance/detail/overview/metric/httpError', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(SUM(IF(http_status_code < 400, 0, 1))/COUNT(http_status_code),4) AS http_error_rate FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' <#if parameter.serverIp?default(\'\')?trim? length gt 0> AND common_server_ip = \'${parameter.serverIp}\' <#elseif parameter.appName?default(\'\')?trim? length gt 0> AND common_app_label = \'${parameter.appName}\' <#elseif parameter.domain?default(\'\')?trim? length gt 0> AND dns_qname = \'${parameter.domain}\' </#if> GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-04-19 13:43:32', '2022-04-19 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (445, 'detectionPerformanceDetailOverviewMetricHighDnsResponseTime', '/detection/performance/detail/overview/metric/highDnsResponseTime', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(UNIX_TIMESTAMP(common_recv_time),\'PT${parameter.step}S\',\'zero\') AS stat_time, AVG(dns_response_latency_ms) AS dns_response_latency_ms FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' <#if parameter.serverIp?default(\'\')?trim? length gt 0> AND common_server_ip = \'${parameter.serverIp}\' <#elseif parameter.appName?default(\'\')?trim? length gt 0> AND common_app_label = \'${parameter.appName}\' <#elseif parameter.domain?default(\'\')?trim? length gt 0> AND dns_qname = \'${parameter.domain}\' </#if> GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new java.util.ArrayList();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.add(key);\r\n }\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(Number(pojo[\"statTime\"]));\r\n tempArray.add(pojo[key]+\"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n aggregation.avg = (sumValue / list.length).toFixed(2);\r\n var plist = new Array();\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n aggregation.p50 = getPercentile(plist, 0.5);\r\n aggregation.p90 = getPercentile(plist, 0.9);\r\n aggregation.max = plist[plist.length-1]+\"\";\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.legend = key;\r\n lineObj.aggregation = aggregation;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-04-19 13:43:32', '2022-04-19 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (446, 'dnsRtMirrors', '/dns/rtMirrors', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_root_mirror_locations FROM entity_info WHERE dns_server_role = \'RTDNS\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function isEmpty(a){\r\n if (a === \"\") return true;\r\n if (a === \"null\") return true;\r\n if (a === \"undefined\") return true;\r\n if (!a && a !== 0 && a !==\"\") return true;\r\n if (Array.prototype.isPrototypeOf(a) && a.length === 0 ) return true;\r\n if (Object.prototype.isPrototypeOf(a) && Object.keys(a).length === 0 ) return true;\r\n return false;\r\n }\r\nif (isEmpty(parameter.endTime)) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (isEmpty(parameter.startTime)) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n }\r\n if(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n }', '2022-04-24 13:43:32', '2022-04-24 13:43:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (447, 'dnsRtMirrorsCount', '/dns/rtMirrorsCount', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT dns_root_mirror_locations FROM entity_info WHERE dns_server_role = \'RTDNS\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'if(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=\"\";\r\n var arr = result.data;\r\n arr = eval(arr); var temparr = [];for(var i in arr){\r\n var pojo = arr[i]; for(var key in pojo){\r\n var str = pojo[key];\r\n str = eval(str);\r\n for(var i in str){\r\n temparr.push(str[i]);\r\n };\r\n }\r\n }\r\n o.result=temparr.length;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-04-25 10:03:32', '2022-04-25 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (448, 'dnsFwdns', '/dns/fwdns', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(DISTINCT(ip_addr)) AS count FROM entity_info WHERE dns_server_role like \'%FWDNS%\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', '', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"single\"\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var key in o.result[0]){\r\n o.result=o.result[0][key]\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-05-10 10:03:32', '2022-05-10 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (449, 'entityFilterCountDnsRole', '/entity/filter/count/dns/role', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT count(*) AS count <#if parameter.column?default(\'\')?trim? length gt 0>, \'${parameter.column}\' AS dns_server_role </#if> FROM entity_info WHERE update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} AND entity_type = \'ip\' <#if parameter.column?default(\'\')?trim? length gt 0> AND QUERY(\'dns_server_role:${parameter.column}\') <#else> AND dns_server_role IS NOT NULL AND dns_server_role != \'\' </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-05-11 10:03:32', '2022-05-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (450, 'entityFilterCountDnsOthers', '/entity/filter/count/dns/others', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT <#if parameter.column?default(\'\')?trim? length gt 0 && parameter.column?lower_case == \'dns_server_org\'> count(DISTINCT dns_server_org) AS org_count, count(*) AS org_total_count <#elseif parameter.column?default(\'\')?trim? length gt 0 && parameter.column?lower_case == \'dns_server_os\'> count(DISTINCT dns_server_os) AS os_count, count(*) AS os_total_count <#else> count(DISTINCT dns_server_software) AS software_count, count(*) AS software_total_count</#if> FROM entity_info WHERE update_time >= ${parameter.startTime} AND update_time < ${parameter.endTime} AND entity_type = \'ip\' <#if parameter.column?default(\'\')?trim? length gt 0 && parameter.column?lower_case == \'dns_server_org\'> AND dns_server_org IS NOT NULL AND dns_server_org != \'\' <#elseif parameter.column?default(\'\')?trim? length gt 0 && parameter.column?lower_case == \'dns_server_os\'> AND dns_server_os IS NOT NULL AND dns_server_os != \'\' <#else> AND dns_server_software IS NOT NULL AND dns_server_software != \'\' </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND ${parameter.q} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-05-11 10:03:32', '2022-05-11 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (484, 'overviewApplicationTrafficAnalysis', '/overview/applicationTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, common_app_label AS app_label, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes_total, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets_total, SUM(common_sessions) AS sessions_total FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND common_app_label IN (<#if parameter.appLabels?default(\'\')?trim? length gt 0> ${parameter.appLabels} </#if>) GROUP BY stat_time,app_label ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n var name = new java.util.HashMap();\r\n for(var i in list){\r\n var temp = list[i];\r\n var tempObj= {};\r\n for (var key in temp){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = temp[key];\r\n if(tempKey == \'appLabel\'){\r\n name.put(tempObj[tempKey],tempObj[tempKey]);\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var type = {};\r\n type.bytes = \'bytesTotal\';\r\n type.packets = \'packetsTotal\';\r\n type.sessions = \'sessionsTotal\';\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n for(var m in name){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n if(pojo[\"appLabel\"]==m){\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[type[key]] + \"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[type[key]]);\r\n }\r\n }\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n analysis.rate = Number((sumValue/parameter.timeDiff).toFixed(2) * 8);\r\n analysis.total = sumValue;\r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[m] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (485, 'overviewApplicationCycleTrafficTotal', '/overview/applicationCycleTrafficTotal', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_app_label AS app_label, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes_total, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets_total, SUM(common_sessions) AS sessions_total FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND common_app_label IN (<#if parameter.appLabels?default(\'\')?trim? length gt 0> ${parameter.appLabels} </#if>) GROUP BY app_label\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n var name = new java.util.HashMap();\r\n for(var i in list){\r\n var temp = list[i];\r\n var tempObj= {};\r\n for (var key in temp){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = temp[key];\r\n if(tempKey == \'appLabel\'){\r\n name.put(tempObj[tempKey],tempObj[tempKey]);\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var type = {};\r\n type.bytes = \'bytesTotal\';\r\n type.packets = \'packetsTotal\';\r\n type.sessions = \'sessionsTotal\';\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n for(var m in name){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n if(pojo[\"appLabel\"]==m){\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[type[key]] + \"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[type[key]]);\r\n }\r\n }\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n analysis.rate = Number((sumValue/parameter.timeDiff).toFixed(2) * 8);\r\n analysis.total = sumValue;\r\n \r\n obj[m] = analysis;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}\r\n\r\n\r\n', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (486, 'overviewAppCompanyTrafficAnalysis', '/overview/appCompanyTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, app_company AS app_company, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes_total, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets_total, SUM(common_sessions) AS sessions_total FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND app_company IN (<#if parameter.appCompanies?default(\'\')?trim? length gt 0> ${parameter.appCompanies} </#if>) GROUP BY stat_time,app_company ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n var name = new java.util.HashMap();\r\n for(var i in list){\r\n var temp = list[i];\r\n var tempObj= {};\r\n for (var key in temp){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = temp[key];\r\n if(tempKey == \'appCompany\'){\r\n name.put(tempObj[tempKey],tempObj[tempKey]);\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var type = {};\r\n type.bytes = \'bytesTotal\';\r\n type.packets = \'packetsTotal\';\r\n type.sessions = \'sessionsTotal\';\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n for(var m in name){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n if(pojo[\"appCompany\"]==m){\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[type[key]] + \"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[type[key]]);\r\n }\r\n }\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n analysis.rate = Number((sumValue/parameter.timeDiff).toFixed(2) * 8);\r\n analysis.total = sumValue;\r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[m] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (487, 'overviewAppCompanyCycleTrafficTotal', '/overview/appCompanyCycleTrafficTotal', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT app_company AS app_company, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes_total, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets_total, SUM(common_sessions) AS sessions_total FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND app_company IN (<#if parameter.appCompanies?default(\'\')?trim? length gt 0> ${parameter.appCompanies} </#if>) GROUP BY app_company\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\n', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n if(list.length > 0){\r\n var name = new java.util.HashMap();\r\n for(var i in list){\r\n var temp = list[i];\r\n var tempObj= {};\r\n for (var key in temp){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = temp[key];\r\n if(tempKey == \'appCompany\'){\r\n name.put(tempObj[tempKey],tempObj[tempKey]);\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var type = {};\r\n type.bytes = \'bytesTotal\';\r\n type.packets = \'packetsTotal\';\r\n type.sessions = \'sessionsTotal\';\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n for(var m in name){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n if(pojo[\"appCompany\"]==m){\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[type[key]] + \"\");\r\n values.add(tempArray);\r\n sumValue += Number(pojo[type[key]]);\r\n }\r\n }\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n analysis.rate = Number((sumValue/parameter.timeDiff).toFixed(2) * 8);\r\n analysis.total = sumValue;\r\n \r\n obj[m] = analysis;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}\r\n\r\n\r\n', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (488, 'overviewEventSeverity', '/overview/eventSeverity', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_severity AS event_severity, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY event_severity\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (489, 'overviewEventType', '/overview/eventType', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT event_type AS event_type, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY event_type\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n \r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (490, 'overviewDdosEventAnalysis', '/overview/ddosEventAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT COUNT(*) AS attack_event_count, COUNT(DISTINCT(offender_ip)) AS attacker_count, COUNT(DISTINCT(victim_ip)) AS victim_count FROM security_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND security_type = \'ddos\'\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-07-27 10:03:32', '2022-07-27 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (491, 'overviewTotalTrafficAnalysis', '/overview/totalTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT granularity AS granularity,SUM(total_bytes) AS bytes_total,SUM(total_packets) AS packets_total,SUM(total_sessions) AS total_sessions,SUM(inbound_bytes) AS inbound_bytes,SUM(inbound_packets) AS inbound_packets,SUM(outbound_bytes) AS outbound_bytes,SUM(outbound_packets) AS outbound_packets,SUM(internal_bytes) AS internal_bytes,SUM(internal_packets) AS internal_packets,SUM(external_bytes) AS through_bytes,SUM(external_packets) AS through_packets FROM ( SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS granularity, client_zone, server_zone, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes,SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS total_packets,SUM(common_sessions) AS total_sessions,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS external_bytes,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS external_packets FROM session_record_cn AS a WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY granularity,client_zone,server_zone ORDER BY granularity )GROUP BY granularity ORDER BY granularity ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"granularity\") != -1){\r\n tempObj[\'granularity\'] = pojo[key]\r\n }else if(key.indexOf(\"bytes_total\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"packets_total\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n var bytes = [];\r\n var packets = [];\r\n var sessions = [];\r\n \r\n for(var key in list[0]){\r\n if(key.indexOf(\"Bits\") != -1){\r\n bytes.push(key);\r\n } else if(key.indexOf(\"Packets\") != -1){\r\n packets.push(key);\r\n } else if(key.indexOf(\"Sessions\") != -1){\r\n sessions.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"totalBitsRate\",\"bytes_total\");\r\n map.put(\"totalPacketsRate\",\"packets_total\");\r\n map.put(\"totalSessionsRate\",\"total_sessions\");\r\n map.put(\"inboundBitsRate\",\"inbound_bytes\");\r\n map.put(\"inboundPacketsRate\",\"inbound_packets\");\r\n map.put(\"outboundBitsRate\",\"outbound_bytes\");\r\n map.put(\"outboundPacketsRate\",\"outbound_packets\");\r\n map.put(\"internalBitsRate\",\"internal_bytes\");\r\n map.put(\"internalPacketsRate\",\"internal_packets\");\r\n map.put(\"throughBitsRate\",\"through_bytes\");\r\n map.put(\"throughPacketsRate\",\"through_packets\");\r\n var type = {};\r\n type.bytes = bytes;\r\n type.packets = packets;\r\n type.sessions = sessions;\r\n \r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"granularity\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n var len = old[0][\"totalBitsRate\"][\"values\"].length;\r\n for(var a in old){\r\n if(old[a].type == \'bytes\' || old[a].type == \'packets\'){\r\n var other = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n var sumValue = 0;\r\n for(var i=0; i<len; i++){\r\n var sum = 0;\r\n var tempArray = new java.util.ArrayList();\r\n for(var b in old[a]){\r\n if(b != \'type\'){\r\n if(b.indexOf(\"total\") != -1){\r\n sum += Number(old[a][b][\"values\"][i][1]);\r\n } else {\r\n sum -= Number(old[a][b][\"values\"][i][1]);\r\n }\r\n sum = sum>0?sum:0;\r\n }\r\n }\r\n tempArray.add(old[0][\"totalBitsRate\"][\"values\"][i][0]);\r\n tempArray.add(sum.toFixed(2));\r\n values.add(tempArray);\r\n sumValue += Number(sum);\r\n }\r\n analysis.avg = Math.round((sumValue / len)*100)/100 + \"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n other.values = values;\r\n other.analysis = analysis;\r\n old[a].other = other;\r\n }\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 16:50:27', '2022-08-03 16:50:29', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (492, 'overviewDrilldownList', '/overview/drilldown/list', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad} FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(${parameter.lad}) <#if parameter.name?default(\'\')?trim? length gt 0> AND ${parameter.lad} like \'%${parameter.name}%\'</#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} ORDER BY SUM(common_s2c_byte_num + common_c2s_byte_num) DESC <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"Object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var val = \'\';\r\n for (var key in pojo){ \r\n val = pojo[key];\r\n }\r\n o.result[i] = val;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 19:20:50', '2022-08-03 19:20:52', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (493, 'overviewDimensionTrafficAnalysis', '/overview/dimensionTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes,SUM(traffic_inbound_byte) AS inbound_bytes,SUM(traffic_outbound_byte) AS outbound_bytes,SUM(traffic_internal_byte) AS internal_bytes,SUM(traffic_through_byte) AS through_bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets,SUM(traffic_inbound_pkt) AS inbound_packets,SUM(traffic_outbound_pkt) AS outbound_packets,SUM(traffic_internal_pkt) AS internal_packets,SUM(traffic_through_pkt) AS through_packets,SUM(common_sessions) AS sessions FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(${parameter.lad}) <#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'totalBytes\'){\r\n parameter.orderBy=\'total_bytes\';\r\n}else if(parameter.orderBy==\'totalPackets\'){\r\n parameter.orderBy=\'total_packets\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 19:56:02', '2022-08-03 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (494, 'overviewDimensionCycleTrafficAnalysis', '/overview/dimensionCycleTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets,SUM(common_sessions) AS sessions FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} - ${parameter.timeDiff} AND stat_time < ${parameter.endTime} - ${parameter.timeDiff} AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"bytes\") != -1){\r\n tempObj[\'bitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"packets\") != -1){\r\n tempObj[\'packetsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 20:48:11', '2022-08-03 20:48:13', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (495, 'overviewDimensionTcpSessionDelay', '/overview/dimensionTcpSessionDelay', 'v1', 'GET', '/', ' {\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_establish_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 20:53:39', '2022-08-03 20:53:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (496, 'overviewDimensionHttpResponseDelay', '/overview/dimensionHttpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_http_response_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 20:53:39', '2022-08-03 20:53:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (497, 'overviewDimensionSslConDelay', '/overview/dimensionSslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_ssl_con_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 20:53:39', '2022-08-03 20:53:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (498, 'overviewDimensionTcpLostlenPercent', '/overview/dimensionTcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 20:53:39', '2022-08-03 20:53:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (499, 'overviewDimensionPacketRetransPercent', '/overview/dimensionPacketRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad},ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 20:53:39', '2022-08-03 20:53:43', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (500, 'overviewDrilldownDimensionTrafficAnalysis', '/overview/drilldown/dimensionTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.lad} AS ${parameter.lad},SUM(bytes_total) AS total_bytes,SUM(packets_total) AS total_packets,SUM(sessions) AS sessions,SUM(inbound_bytes) AS inbound_bytes,SUM(inbound_packets) AS inbound_packets,SUM(outbound_bytes) AS outbound_bytes,SUM(outbound_packets) AS outbound_packets,SUM(internal_bytes) AS internal_bytes,SUM(internal_packets) AS internal_packets,SUM(external_bytes) AS through_bytes,SUM(external_packets) AS through_packets FROM ( SELECT ${parameter.fieldName} as ${parameter.lad},SUM(common_s2c_byte_num + common_c2s_byte_num) AS bytes_total,SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS packets_total,SUM(common_sessions) AS sessions,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS external_bytes,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS external_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(${parameter.lad}) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.lad},client_zone,server_zone) GROUP BY ${parameter.lad} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.fieldName = \'common_client_ip\';\r\n parameter.lad = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.fieldName = \'common_server_ip\';\r\n parameter.lad = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.fieldName = \'client_country\';\r\n parameter.lad = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.fieldName = \'server_country\';\r\n parameter.lad = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.fieldName = \'client_province\';\r\n parameter.lad = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.fieldName = \'server_province\';\r\n parameter.lad = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.fieldName = \'client_region\';\r\n parameter.lad = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.fieldName = \'server_region\';\r\n parameter.lad = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.fieldName = \'client_isp\';\r\n parameter.lad = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.fieldName = \'server_isp\';\r\n parameter.lad = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.fieldName = \'client_idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.fieldName = \'server_idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.fieldName = \'client_asn\';\r\n parameter.lad = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.fieldName = \'server_asn\';\r\n parameter.lad = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'totalBytes\'){\r\n parameter.orderBy=\'total_bytes\';\r\n}else if(parameter.orderBy==\'totalPackets\'){\r\n parameter.orderBy=\'total_packets\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', '\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 19:56:02', '2022-08-03 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (501, 'overviewDrilldownDimensionCycleTrafficAnalysis', '/overview/drilldown/dimensionCycleTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} as ${parameter.lad},SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets,SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} - ${parameter.timeDiff} AND common_recv_time < ${parameter.endTime} - ${parameter.timeDiff} AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.fieldName = \'common_client_ip\';\r\n parameter.lad = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.fieldName = \'common_server_ip\';\r\n parameter.lad = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.fieldName = \'client_country\';\r\n parameter.lad = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.fieldName = \'server_country\';\r\n parameter.lad = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.fieldName = \'client_province\';\r\n parameter.lad = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.fieldName = \'server_province\';\r\n parameter.lad = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.fieldName = \'client_region\';\r\n parameter.lad = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.fieldName = \'server_region\';\r\n parameter.lad = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.fieldName = \'client_isp\';\r\n parameter.lad = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.fieldName = \'server_isp\';\r\n parameter.lad = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.fieldName = \'client_idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.fieldName = \'server_idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.fieldName = \'client_asn\';\r\n parameter.lad = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.fieldName = \'server_asn\';\r\n parameter.lad = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', '\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"bytes\") != -1){\r\n tempObj[\'bitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"packets\") != -1){\r\n tempObj[\'packetsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 22:35:23', '2022-08-03 22:35:25', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (502, 'overviewDrilldownDimensionTcpPktRetranPercent', '/overview/drilldown/dimensionTcpPktRetranPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} as ${parameter.lad},ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.fieldName = \'common_client_ip\';\r\n parameter.lad = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.fieldName = \'common_server_ip\';\r\n parameter.lad = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.fieldName = \'client_country\';\r\n parameter.lad = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.fieldName = \'server_country\';\r\n parameter.lad = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.fieldName = \'client_province\';\r\n parameter.lad = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.fieldName = \'server_province\';\r\n parameter.lad = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.fieldName = \'client_region\';\r\n parameter.lad = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.fieldName = \'server_region\';\r\n parameter.lad = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.fieldName = \'client_isp\';\r\n parameter.lad = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.fieldName = \'server_isp\';\r\n parameter.lad = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.fieldName = \'client_idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.fieldName = \'server_idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.fieldName = \'client_asn\';\r\n parameter.lad = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.fieldName = \'server_asn\';\r\n parameter.lad = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (503, 'overviewDrilldownDimensionHttpResponseDelay', '/overview/drilldown/dimensionHttpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} as ${parameter.lad},ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.fieldName = \'common_client_ip\';\r\n parameter.lad = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.fieldName = \'common_server_ip\';\r\n parameter.lad = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.fieldName = \'client_country\';\r\n parameter.lad = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.fieldName = \'server_country\';\r\n parameter.lad = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.fieldName = \'client_province\';\r\n parameter.lad = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.fieldName = \'server_province\';\r\n parameter.lad = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.fieldName = \'client_region\';\r\n parameter.lad = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.fieldName = \'server_region\';\r\n parameter.lad = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.fieldName = \'client_isp\';\r\n parameter.lad = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.fieldName = \'server_isp\';\r\n parameter.lad = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.fieldName = \'client_idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.fieldName = \'server_idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.fieldName = \'client_asn\';\r\n parameter.lad = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.fieldName = \'server_asn\';\r\n parameter.lad = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (504, 'overviewDrilldownDimensionSslConDelay', '/overview/drilldown/dimensionSslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} as ${parameter.lad},ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.fieldName = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.fieldName = \'common_client_ip\';\r\n parameter.lad = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.fieldName = \'common_server_ip\';\r\n parameter.lad = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.fieldName = \'client_country\';\r\n parameter.lad = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.fieldName = \'server_country\';\r\n parameter.lad = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.fieldName = \'client_province\';\r\n parameter.lad = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.fieldName = \'server_province\';\r\n parameter.lad = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.fieldName = \'client_region\';\r\n parameter.lad = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.fieldName = \'server_region\';\r\n parameter.lad = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.fieldName = \'client_isp\';\r\n parameter.lad = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.fieldName = \'server_isp\';\r\n parameter.lad = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.fieldName = \'client_idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.fieldName = \'server_idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.fieldName = \'client_asn\';\r\n parameter.lad = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.fieldName = \'server_asn\';\r\n parameter.lad = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (505, 'applicationPerformanceOverviewTcpSessionDelay', '/application/performance/overview/tcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'>SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms_avg FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') <#else> SELECT ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms_avg, ROUND(QUANTILE(common_establish_latency_ms,0.5)) AS establish_latency_ms_p50, ROUND(QUANTILE(common_establish_latency_ms,0.9)) AS establish_latency_ms_p90, ROUND(QUANTILE(common_establish_latency_ms,0.95)) AS establish_latency_ms_p95, ROUND(QUANTILE(common_establish_latency_ms,0.99)) AS establish_latency_ms_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\',\'IPv6_TCP\') </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (506, 'applicationPerformanceOverviewHttpResponseDelay', '/application/performance/overview/httpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_avg FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_schema_type = \'HTTP\' <#else> SELECT ROUND(AVG(http_response_latency_ms)) AS http_response_latency_avg, ROUND(QUANTILE(http_response_latency_ms,0.5)) AS http_response_latency_p50, ROUND(QUANTILE(http_response_latency_ms,0.9)) AS http_response_latency_p90, ROUND(QUANTILE(http_response_latency_ms,0.95)) AS http_response_latency_p95, ROUND(QUANTILE(http_response_latency_ms,0.99)) AS http_response_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (507, 'applicationPerformanceOverviewSslConDelay', '/application/performance/overview/sslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_avg FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_schema_type = \'SSL\' <#else> SELECT ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency_avg, ROUND(QUANTILE(ssl_con_latency_ms,0.5)) AS ssl_con_latency_p50, ROUND(QUANTILE(ssl_con_latency_ms,0.9)) AS ssl_con_latency_p90, ROUND(QUANTILE(ssl_con_latency_ms,0.95)) AS ssl_con_latency_p95, ROUND(QUANTILE(ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99 FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (508, 'applicationPerformanceOverviewTcpLostlenPercent', '/application/performance/overview/tcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ROUND(AVG(sequence_gap_loss_percent), 4) AS tcp_lostlen_percent_avg FROM( SELECT ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time),INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY granularity ) <#else> SELECT ROUND(AVG(sequence_gap_loss_percent), 4) AS tcp_lostlen_percent_avg, ROUND(QUANTILE(sequence_gap_loss_percent, 0.5), 4) AS tcp_lostlen_percent_p50, ROUND(QUANTILE(sequence_gap_loss_percent, 0.9), 4) AS tcp_lostlen_percent_p90, ROUND(QUANTILE(sequence_gap_loss_percent, 0.95), 4) AS tcp_lostlen_percent_p95, ROUND(QUANTILE(sequence_gap_loss_percent, 0.99), 4) AS tcp_lostlen_percent_p99 FROM( SELECT ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen) / SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen), 4) AS sequence_gap_loss_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY granularity ) </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (509, 'applicationPerformanceOverviewPacketRetransPercent', '/application/performance/overview/packetRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ROUND(AVG(pkt_retrans_percent), 4) AS pkt_retrans_percent_avg FROM( SELECT ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY granularity ) <#else> SELECT ROUND(AVG(pkt_retrans_percent), 4) AS pkt_retrans_percent_avg, ROUND(QUANTILE(pkt_retrans_percent, 0.5), 4) AS pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_percent, 0.9), 4) AS pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_percent, 0.95), 4) AS pkt_retrans_percent_p95, ROUND(QUANTILE(pkt_retrans_percent, 0.99), 4) AS pkt_retrans_percent_p99 FROM( SELECT ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent, toDateTime(toStartOfInterval(toDateTime(common_recv_time), INTERVAL ${parameter.step} SECOND)) AS granularity FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY granularity ) </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (510, 'applicationPerformanceOverviewAppTrafficAnalysis', '/application/performance/overview/appTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT app_subcategory AS app_subcategory, SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#else> SELECT app_subcategory AS app_subcategory, SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if> </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nif(parameter.orderBy){parameter.orderBy = toLine(parameter.orderBy);}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (511, 'applicationPerformanceOverviewAppTcpSessionDelay', '/application/performance/overview/appTcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_establish_latency_ms) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#else> SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_establish_latency_ms) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (512, 'applicationPerformanceOverviewAppHttpResponseDelay', '/application/performance/overview/appHttpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_http_response_latency_ms) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#else> SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_http_response_latency_ms) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (513, 'applicationPerformanceOverviewAppSslConDelay', '/application/performance/overview/appSslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_ssl_con_latency_ms) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#else> SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_ssl_con_latency_ms) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (514, 'applicationPerformanceOverviewAppTcpLostlenPercent', '/application/performance/overview/appTcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT app_subcategory AS app_subcategory, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(tcp_lostlen_ratio) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#else> SELECT app_subcategory AS app_subcategory, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (515, 'applicationPerformanceOverviewAppPacketRetransPercent', '/application/performance/overview/appPacketRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT app_subcategory AS app_subcategory, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_application WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(pkt_retrans_ratio) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory <#else> SELECT app_subcategory AS app_subcategory, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_application WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (516, 'applicationPerformanceOverviewDimensionTrafficAnalysis', '/application/performance/overview/dimensionTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad}, SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(${parameter.lad})<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.orderBy){parameter.orderBy = toLine(parameter.orderBy);}\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'totalBytes\'){\r\n parameter.orderBy=\'total_bytes\';\r\n}else if(parameter.orderBy==\'totalPackets\'){\r\n parameter.orderBy=\'total_packets\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (517, 'applicationPerformanceOverviewDimensionCycleTrafficAnalysis', '/application/performance/overview/dimensionCycleTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.fieldName} AS ${parameter.lad}, SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'totalBytes\'){\r\n parameter.orderBy=\'total_bytes\';\r\n}else if(parameter.orderBy==\'totalPackets\'){\r\n parameter.orderBy=\'total_packets\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (518, 'applicationPerformanceOverviewDimensionTcpSessionDelay', '/application/performance/overview/dimensionTcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_establish_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#else> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_establish_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (519, 'applicationPerformanceOverviewDimensionHttpResponseDelay', '/application/performance/overview/dimensionHttpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_http_response_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#else> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_http_response_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (520, 'applicationPerformanceOverviewDimensionSslConDelay', '/application/performance/overview/dimensionSslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_ssl_con_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#else> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_ssl_con_latency_ms) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (521, 'applicationPerformanceOverviewDimensionTcpLostlenPercent', '/application/performance/overview/dimensionTcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(tcp_lostlen_ratio) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#else> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (522, 'applicationPerformanceOverviewDimensionPacketRetransPercent', '/application/performance/overview/dimensionPacketRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(pkt_retrans_ratio) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} <#else> SELECT ${parameter.fieldName} AS ${parameter.lad}, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) AND ${parameter.lad} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.lad} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'common_app_label\';\r\n parameter.lad = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_company\';\r\n parameter.lad = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain\';\r\n parameter.lad = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \'common_l7_protocol\';\r\n parameter.lad = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.fieldName = \'app_subcategory\';\r\n parameter.lad = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.fieldName = \'domain_category_name\';\r\n parameter.lad = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.fieldName = \'http_host\';\r\n parameter.lad = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.fieldName = \'ssl_sni\';\r\n parameter.lad = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.fieldName = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.lad = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.fieldName = \'ip\';\r\n parameter.lad = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'country\';\r\n parameter.lad = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'province\';\r\n parameter.lad = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.fieldName = \'city\';\r\n parameter.lad = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'isp\';\r\n parameter.lad = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.fieldName = \'idc_renter\';\r\n parameter.lad = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.fieldName = \'asn\';\r\n parameter.lad = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}\r\n\r\n ', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (523, 'applicationPerformanceRelatedSessions', '/application/performance/relatedSessions', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ip AS ip, SUM(client_sessions) AS client_sessions, SUM(server_sessions) AS server_sessions FROM( SELECT ip AS ip, IF(side = \'client\',SUM(common_sessions),0) AS client_sessions, IF(side = \'server\',SUM(common_sessions),0) AS server_sessions FROM metric_ip WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND ip = \'${parameter.ip}\' GROUP BY ip,side ) GROUP BY ip\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n tempObj.sessionsRate = ((Number(tempObj.clientSessions) + Number(tempObj.serverSessions)) / parameter.timeDiff).toFixed(2); o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (524, 'applicationPerformanceOverviewDrilldownDimensionTcpSessionDelay', '/application/performance/overview/drilldown/dimension/tcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_establish_latency_ms) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_establish_latency_ms) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (525, 'applicationPerformanceOverviewDrilldownDimensionHttpResponseDelay', '/application/performance/overview/drilldown/dimension/httpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_http_response_latency_ms) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_http_response_latency_ms) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (526, 'applicationPerformanceOverviewDrilldownDimensionSslConDelay', '/application/performance/overview/drilldown/dimension/sslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(avg_ssl_con_latency_ms) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_ssl_con_latency_ms) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (527, 'applicationPerformanceOverviewDrilldownDimensionTcpLostlenPercent', '/application/performance/overview/drilldown/dimension/tcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(tcp_lostlen_ratio) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (528, 'applicationPerformanceOverviewDrilldownDimensionPacketRetransPercent', '/application/performance/overview/drilldown/dimension/packetRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} AND isNotNull(pkt_retrans_ratio) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (529, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsWorldTrafficAnalysis', '/application/performance/overview/drilldown/dimension/clientLocations/world/trafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS total_packets, SUM(common_sessions) AS sessions, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS through_bytes, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS through_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(client_country) AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,client_zone,server_zone <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif(parameter.orderBy){parameter.orderBy = toLine(parameter.orderBy);}\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'var countryCodeMap = {\"Private IP\":\"CN\",\"Afghanistan\":\"AF\",\"Albania\":\"AL\",\"Algeria\":\"DZ\",\"American Samoa\":\"AS\",\"Andorra\":\"AD\",\"Angola\":\"AO\",\"Anguilla\":\"AI\",\"Antarctica\":\"AQ\",\"Antigua and Barbuda\":\"AG\",\"Argentina\":\"AR\",\"Armenia\":\"AM\",\"Aruba\":\"AW\",\"Australia\":\"AU\",\"Austria\":\"AT\",\"Azerbaijan\":\"AZ\",\"Bahamas (the)\":\"BS\",\"Bahrain\":\"BH\",\"Bangladesh\":\"BD\",\"Barbados\":\"BB\",\"Belarus\":\"BY\",\"Belgium\":\"BE\",\"Belize\":\"BZ\",\"Benin\":\"BJ\",\"Bermuda\":\"BM\",\"Åland Islands\":\"AX\",\"Bhutan\":\"BT\",\"Bolivia (Plurinational State of)\":\"BO\",\"Bonaire, Sint Eustatius and Saba\":\"BQ\",\"Bosnia and Herzegovina\":\"BA\",\"Botswana\":\"BW\",\"Bouvet Island\":\"BV\",\"Brazil\":\"BR\",\"British Indian Ocean Territory (the)\":\"IO\",\"Brunei Darussalam\":\"BN\",\"Bulgaria\":\"BG\",\"Burkina Faso\":\"BF\",\"Burundi\":\"BI\",\"Cabo Verde\":\"CV\",\"Cambodia\":\"KH\",\"Cameroon\":\"CM\",\"Canada\":\"CA\",\"Cayman Islands (the)\":\"KY\",\"Central African Republic (the)\":\"CF\",\"Chad\":\"TD\",\"Chile\":\"CL\",\"China\":\"CN\",\"Christmas Island\":\"CX\",\"Cocos (Keeling) Islands (the)\":\"CC\",\"Colombia\":\"CO\",\"Comoros (the)\":\"KM\",\"Congo (the Democratic Republic of the)\":\"CD\",\"Congo (the)\":\"CG\",\"Cook Islands (the)\":\"CK\",\"Costa Rica\":\"CR\",\"Croatia\":\"HR\",\"Cuba\":\"CU\",\"Curaçao\":\"CW\",\"Cyprus\":\"CY\",\"Czech Republic\":\"CZ\",\"Côte d\'Ivoire\":\"CI\",\"Denmark\":\"DK\",\"Djibouti\":\"DJ\",\"Dominica\":\"DM\",\"Dominican Republic (the)\":\"DO\",\"Ecuador\":\"EC\",\"Egypt\":\"EG\",\"El Salvador\":\"SV\",\"Equatorial Guinea\":\"GQ\",\"Eritrea\":\"ER\",\"Estonia\":\"EE\",\"Eswatini\":\"SZ\",\"Ethiopia\":\"ET\",\"Falkland Islands (the) [Malvinas]\":\"FK\",\"Faroe Islands (the)\":\"FO\",\"Fiji\":\"FJ\",\"Finland\":\"FI\",\"France\":\"FR\",\"French Guiana\":\"GF\",\"French Polynesia\":\"PF\",\"French Southern Territories (the)\":\"TF\",\"Gabon\":\"GA\",\"Gambia (the)\":\"GM\",\"Georgia\":\"GE\",\"Germany\":\"DE\",\"Ghana\":\"GH\",\"Gibraltar\":\"GI\",\"Greece\":\"GR\",\"Greenland\":\"GL\",\"Grenada\":\"GD\",\"Guadeloupe\":\"GP\",\"Guam\":\"GU\",\"Guatemala\":\"GT\",\"Guernsey\":\"GG\",\"Guinea\":\"GN\",\"Guinea-Bissau\":\"GW\",\"Guyana\":\"GY\",\"Haiti\":\"HT\",\"Heard Island and McDonald Islands\":\"HM\",\"Holy See (the)\":\"VA\",\"Honduras\":\"HN\",\"Hong Kong\":\"HK\",\"Hungary\":\"HU\",\"Iceland\":\"IS\",\"India\":\"IN\",\"Indonesia\":\"ID\",\"Iran (Islamic Republic of)\":\"IR\",\"Iraq\":\"IQ\",\"Ireland\":\"IE\",\"Isle of Man\":\"IM\",\"Israel\":\"IL\",\"Italy\":\"IT\",\"Jamaica\":\"JM\",\"Japan\":\"JP\",\"Jersey\":\"JE\",\"Jordan\":\"JO\",\"Kazakhstan\":\"KZ\",\"Kenya\":\"KE\",\"Kiribati\":\"KI\",\"Korea\":\"KR\",\"Kuwait\":\"KW\",\"Kyrgyzstan\":\"KG\",\"Lao People\'s Democratic Republic (the)\":\"LA\",\"Latvia\":\"LV\",\"Lebanon\":\"LB\",\"Lesotho\":\"LS\",\"Liberia\":\"LR\",\"Libya\":\"LY\",\"Liechtenstein\":\"LI\",\"Lithuania\":\"LT\",\"Luxembourg\":\"LU\",\"Macao\":\"MO\",\"Madagascar\":\"MG\",\"Malawi\":\"MW\",\"Malaysia\":\"MY\",\"Maldives\":\"MV\",\"Mali\":\"ML\",\"Malta\":\"MT\",\"Marshall Islands (the)\":\"MH\",\"Martinique\":\"MQ\",\"Mauritania\":\"MR\",\"Mauritius\":\"MU\",\"Mayotte\":\"YT\",\"Mexico\":\"MX\",\"Micronesia (Federated States of)\":\"FM\",\"Moldova (the Republic of)\":\"MD\",\"Monaco\":\"MC\",\"Mongolia\":\"MN\",\"Montenegro\":\"ME\",\"Montserrat\":\"MS\",\"Morocco\":\"MA\",\"Mozambique\":\"MZ\",\"Myanmar\":\"MM\",\"Namibia\":\"NA\",\"Nauru\":\"NR\",\"Nepal\":\"NP\",\"Netherlands\":\"NL\",\"New Caledonia\":\"NC\",\"New Zealand\":\"NZ\",\"Nicaragua\":\"NI\",\"Niger\":\"NE\",\"Nigeria\":\"NG\",\"Niue\":\"NU\",\"Norfolk Island\":\"NF\",\"North Macedonia\":\"MK\",\"Northern Mariana Islands (the)\":\"MP\",\"Norway\":\"NO\",\"Oman\":\"OM\",\"Pakistan\":\"PK\",\"Palau\":\"PW\",\"Palestine, State of\":\"PS\",\"Panama\":\"PA\",\"Papua New Guinea\":\"PG\",\"Paraguay\":\"PY\",\"Peru\":\"PE\",\"Philippines\":\"PH\",\"Pitcairn\":\"PN\",\"Poland\":\"PL\",\"Portugal\":\"PT\",\"Puerto Rico\":\"PR\",\"Qatar\":\"QA\",\"Romania\":\"RO\",\"Russian Federation\":\"RU\",\"Rwanda\":\"RW\",\"Réunion\":\"RE\",\"Saint Barthélemy\":\"BL\",\"Saint Helena, Ascension and Tristan da Cunha\":\"SH\",\"Saint Kitts and Nevis\":\"KN\",\"Saint Lucia\":\"LC\",\"Saint Martin\":\"MF\",\"Saint Pierre and Miquelon\":\"PM\",\"Saint Vincent and the Grenadines\":\"VC\",\"Samoa\":\"WS\",\"San Marino\":\"SM\",\"Sao Tome and Principe\":\"ST\",\"Saudi Arabia\":\"SA\",\"Senegal\":\"SN\",\"Serbia\":\"RS\",\"Seychelles\":\"SC\",\"Sierra Leone\":\"SL\",\"Singapore\":\"SG\",\"Sint Maarten\":\"SX\",\"Slovakia\":\"SK\",\"Slovenia\":\"SI\",\"Solomon Islands\":\"SB\",\"Somalia\":\"SO\",\"South Africa\":\"ZA\",\"South Georgia and the South Sandwich Islands\":\"GS\",\"South Sudan\":\"SS\",\"Spain\":\"ES\",\"Sri Lanka\":\"LK\",\"Sudan\":\"SD\",\"Suriname\":\"SR\",\"Svalbard and Jan Mayen\":\"SJ\",\"Sweden\":\"SE\",\"Switzerland\":\"CH\",\"Syrian Arab Republic\":\"SY\",\"Taiwan\":\"TW\",\"Tajikistan\":\"TJ\",\"Tanzania, the United Republic of\":\"TZ\",\"Thailand\":\"TH\",\"Timor-Leste\":\"TL\",\"Togo\":\"TG\",\"Tokelau\":\"TK\",\"Tonga\":\"TO\",\"Trinidad and Tobago\":\"TT\",\"Tunisia\":\"TN\",\"Turkey\":\"TR\",\"Turkmenistan\":\"TM\",\"Turks and Caicos Islands\":\"TC\",\"Tuvalu\":\"TV\",\"Uganda\":\"UG\",\"Ukraine\":\"UA\",\"United Arab Emirates\":\"AE\",\"United Kingdom of Great Britain and Northern Ireland\":\"GB\",\"United States Minor Outlying Islands\":\"UM\",\"United States\":\"US\",\"Uruguay\":\"UY\",\"Uzbekistan\":\"UZ\",\"Vanuatu\":\"VU\",\"Venezuela (Bolivarian Republic of)\":\"VE\",\"Viet Nam\":\"VN\",\"Virgin Islands (British)\":\"VG\",\"Virgin Islands (U.S.)\":\"VI\",\"Wallis and Futuna\":\"WF\",\"Western Sahara*\":\"EH\",\"Yemen\":\"YE\",\"Zambia\":\"ZM\",\"Zimbabwe\":\"ZW\"};\r\nvar countCityMap = {\"PR\":{\"Adjuntas\":\"\",\"Aguada\":\"\",\"Aguadilla\":\"\",\"Aguas Buenas\":\"\",\"Aibonito\":\"\",\"Anasco\":\"\",\"Arecibo\":\"\",\"Arroyo\":\"\",\"Barceloneta\":\"\",\"Barranquitas\":\"\",\"Bayamon\":\"\",\"Cabo Rojo\":\"\",\"Caguas\":\"\",\"Camuy\":\"\",\"Canovanas\":\"\",\"Carolina\":\"\",\"Catano\":\"\",\"Cayey\":\"\",\"Ceiba\":\"\",\"Ciales\":\"\",\"Cidra\":\"\",\"Coamo\":\"\",\"Comerio\":\"\",\"Corozal\":\"\",\"Culebra\":\"\",\"Dorado\":\"\",\"Fajardo\":\"\",\"Florida\":\"\",\"Guanica\":\"\",\"Guayama\":\"\",\"Guayanilla\":\"\",\"Guaynabo\":\"\",\"Gurabo\":\"\",\"Hatillo\":\"\",\"Hormigueros\":\"\",\"Humacao\":\"\",\"Isabela\":\"\",\"Juana Diaz\":\"\",\"Lajas\":\"\",\"Lares\":\"\",\"Las Marias\":\"\",\"Las Piedras\":\"\",\"Loiza\":\"\",\"Luquillo\":\"\",\"Manati\":\"\",\"Mayaguez\":\"\",\"Moca\":\"\",\"Morovis\":\"\",\"Municipio de Jayuya\":\"\",\"Municipio de Juncos\":\"\",\"Naguabo\":\"\",\"Naranjito\":\"\",\"Patillas\":\"\",\"Penuelas\":\"\",\"Ponce\":\"\",\"Quebradillas\":\"\",\"Rincon\":\"\",\"Rio Grande\":\"\",\"Sabana Grande\":\"\",\"Salinas\":\"\",\"San German\":\"\",\"San Juan\":\"\",\"San Lorenzo\":\"\",\"San Sebastian\":\"\",\"Santa Isabel Municipio\":\"\",\"Toa Alta\":\"\",\"Toa Baja\":\"\",\"Trujillo Alto\":\"\",\"Utuado\":\"\",\"Vega Alta\":\"\",\"Vega Baja\":\"\",\"Vieques\":\"\",\"Villalba\":\"\",\"Yabucoa\":\"\",\"Yauco\":\"\"},\"PS\":{\"Bethlehem\":\"PS-BTH\",\"Deir El Balah\":\"PS-DEB\",\"Gaza\":\"PS-GZA\",\"Hebron\":\"PS-HBN\",\"Jenin\":\"PS-JEN\",\"Jericho and Al Aghwar\":\"PS-JRH\",\"Jerusalem\":\"PS-JEM\",\"Khan Yunis\":\"PS-KYS\",\"Nablus\":\"PS-NBS\",\"Qalqilya\":\"PS-QQA\",\"Rafah\":\"PS-RFH\",\"Ramallah\":\"PS-RBH\",\"Salfit\":\"PS-SLT\",\"Tubas\":\"PS-TBS\",\"Tulkarm\":\"PS-TKM\"},\"PT\":{\"Aveiro\":\"PT-01\",\"Beja\":\"PT-02\",\"Braga\":\"PT-03\",\"Braganca\":\"PT-04\",\"Castelo Branco\":\"PT-05\",\"Coimbra\":\"PT-06\",\"Evora\":\"PT-07\",\"Faro\":\"PT-08\",\"Guarda\":\"PT-09\",\"Leiria\":\"PT-10\",\"Lisboa\":\"PT-11\",\"Portalegre\":\"PT-12\",\"Porto\":\"PT-13\",\"Regiao Autonoma da Madeira\":\"PT-30\",\"Regiao Autonoma dos Acores\":\"PT-20\",\"Santarem\":\"PT-14\",\"Setubal\":\"PT-15\",\"Viana do Castelo\":\"PT-16\",\"Vila Real\":\"PT-17\",\"Viseu\":\"PT-18\"},\"PW\":{\"Airai\":\"PW-004\",\"Kayangel\":\"PW-100\",\"Koror\":\"PW-150\",\"Melekeok\":\"PW-212\",\"Ngaraard\":\"PW-214\",\"Ngardmau\":\"PW-222\"},\"PY\":{\"Alto Parana\":\"PY-10\",\"Amambay\":\"PY-13\",\"Asuncion\":\"PY-ASU\",\"Boqueron\":\"PY-19\",\"Caaguazu\":\"PY-5\",\"Caazapa\":\"PY-6\",\"Canindeyu\":\"PY-14\",\"Central\":\"PY-11\",\"Concepcion\":\"PY-1\",\"Cordillera\":\"PY-3\",\"Guaira\":\"PY-4\",\"Itapua\":\"PY-7\",\"Misiones\":\"PY-8\",\"Neembucu\":\"PY-12\",\"Paraguari\":\"PY-9\",\"Presidente Hayes\":\"PY-15\",\"San Pedro\":\"PY-2\"},\"QA\":{\"Ad Dawhah\":\"QA-DA\",\"Al Khawr wa adh Dhakhirah\":\"QA-KH\",\"Al Wakrah\":\"QA-WA\",\"Ar Rayyan\":\"QA-RA\",\"Ash Shamal\":\"QA-MS\",\"Az Za\'ayin\":\"QA-ZA\",\"Umm Salal\":\"QA-US\"},\"AD\":{\"Andorra la Vella\":\"AD-07\",\"Canillo\":\"AD-02\",\"Encamp\":\"AD-03\",\"Escaldes-Engordany\":\"AD-08\",\"La Massana\":\"AD-04\",\"Ordino\":\"AD-05\",\"Sant Julia de Loria\":\"AD-06\"},\"AE\":{\"\'Ajman\":\"AE-AJ\",\"Abu Zaby\":\"AE-AZ\",\"Al Fujayrah\":\"AE-FU\",\"Ash Shariqah\":\"AE-SH\",\"Dubayy\":\"AE-DU\",\"Ra\'s al Khaymah\":\"AE-RK\",\"Umm al Qaywayn\":\"AE-UQ\"},\"AF\":{\"Badakhshan\":\"AF-BDS\",\"Badghis\":\"AF-BDG\",\"Baghlan\":\"AF-BGL\",\"Balkh\":\"AF-BAL\",\"Bamyan\":\"AF-BAM\",\"Daykundi\":\"AF-DAY\",\"Farah\":\"AF-FRA\",\"Faryab\":\"AF-FYB\",\"Ghazni\":\"AF-GHA\",\"Ghor\":\"AF-GHO\",\"Helmand\":\"AF-HEL\",\"Herat\":\"AF-HER\",\"Jowzjan\":\"AF-JOW\",\"Kabul\":\"AF-KAB\",\"Kandahar\":\"AF-KAN\",\"Khost\":\"AF-KHO\",\"Kunduz\":\"AF-KDZ\",\"Laghman\":\"AF-LAG\",\"Logar\":\"AF-LOG\",\"Nangarhar\":\"AF-NAN\",\"Nimroz\":\"AF-NIM\",\"Paktika\":\"AF-PKA\",\"Paktiya\":\"AF-PIA\",\"Parwan\":\"AF-PAR\",\"Takhar\":\"AF-TAK\",\"Uruzgan\":\"AF-URU\"},\"AG\":{\"Redonda\":\"AG-11\",\"Saint George\":\"AG-03\",\"Saint John\":\"AG-04\",\"Saint Mary\":\"AG-05\",\"Saint Paul\":\"AG-06\",\"Saint Peter\":\"AG-07\",\"Saint Philip\":\"AG-08\"},\"AI\":{\"Anguilla\":\"\"},\"AL\":{\"Berat\":\"AL-01\",\"Diber\":\"AL-09\",\"Durres\":\"AL-02\",\"Elbasan\":\"AL-03\",\"Fier\":\"AL-04\",\"Gjirokaster\":\"AL-05\",\"Korce\":\"AL-06\",\"Kukes\":\"AL-07\",\"Lezhe\":\"AL-08\",\"Shkoder\":\"AL-10\",\"Tirane\":\"AL-11\",\"Vlore\":\"AL-12\"},\"AM\":{\"Aragacotn\":\"AM-AG\",\"Ararat\":\"AM-AR\",\"Armavir\":\"AM-AV\",\"Erevan\":\"AM-ER\",\"Gegark\'unik\'\":\"AM-GR\",\"Kotayk\'\":\"AM-KT\",\"Lori\":\"AM-LO\",\"Sirak\":\"AM-SH\",\"Syunik\'\":\"AM-SU\",\"Tavus\":\"AM-TV\",\"Vayoc Jor\":\"AM-VD\"},\"AO\":{\"Bengo\":\"AO-BGO\",\"Benguela\":\"AO-BGU\",\"Bie\":\"AO-BIE\",\"Cabinda\":\"AO-CAB\",\"Cuando Cubango\":\"AO-CCU\",\"Cuanza-Norte\":\"AO-CNO\",\"Cuanza-Sul\":\"AO-CUS\",\"Cunene\":\"AO-CNN\",\"Huambo\":\"AO-HUA\",\"Huila\":\"AO-HUI\",\"Luanda\":\"AO-LUA\",\"Lunda-Norte\":\"AO-LNO\",\"Lunda-Sul\":\"AO-LSU\",\"Malange\":\"AO-MAL\",\"Moxico\":\"AO-MOX\",\"Namibe\":\"AO-NAM\",\"Uige\":\"AO-UIG\",\"Zaire\":\"AO-ZAI\"},\"AR\":{\"Buenos Aires\":\"AR-B\",\"Catamarca\":\"AR-K\",\"Chaco\":\"AR-H\",\"Chubut\":\"AR-U\",\"Ciudad Autonoma de Buenos Aires\":\"AR-C\",\"Cordoba\":\"AR-X\",\"Corrientes\":\"AR-W\",\"Entre Rios\":\"AR-E\",\"Formosa\":\"AR-P\",\"Jujuy\":\"AR-Y\",\"La Pampa\":\"AR-L\",\"La Rioja\":\"AR-F\",\"Mendoza\":\"AR-M\",\"Misiones\":\"AR-N\",\"Neuquen\":\"AR-Q\",\"Rio Negro\":\"AR-R\",\"Salta\":\"AR-A\",\"San Juan\":\"AR-J\",\"San Luis\":\"AR-D\",\"Santa Cruz\":\"AR-Z\",\"Santa Fe\":\"AR-S\",\"Santiago del Estero\":\"AR-G\",\"Tierra del Fuego\":\"AR-V\",\"Tucuman\":\"AR-T\"},\"AS\":{\"Eastern District\":\"\",\"Western District\":\"\"},\"RE\":{\"Reunion\":\"\"},\"AT\":{\"Burgenland\":\"AT-1\",\"Karnten\":\"AT-2\",\"Niederosterreich\":\"AT-3\",\"Oberosterreich\":\"AT-4\",\"Salzburg\":\"AT-5\",\"Steiermark\":\"AT-6\",\"Tirol\":\"AT-7\",\"Vorarlberg\":\"AT-8\",\"Wien\":\"AT-9\"},\"AU\":{\"Australian Capital Territory\":\"AU-ACT\",\"New South Wales\":\"AU-NSW\",\"Northern Territory\":\"AU-NT\",\"Queensland\":\"AU-QLD\",\"South Australia\":\"AU-SA\",\"Tasmania\":\"AU-TAS\",\"Victoria\":\"AU-VIC\",\"Western Australia\":\"AU-WA\"},\"AW\":{\"Aruba\":\"\"},\"AX\":{\"Eckeroe\":\"\",\"Finstroem\":\"\",\"Hammarland\":\"\",\"Jomala\":\"\",\"Lemland\":\"\",\"Mariehamn\":\"\",\"Saltvik\":\"\",\"Sund\":\"\"},\"AZ\":{\"Abseron\":\"AZ-ABS\",\"Agcabadi\":\"AZ-AGC\",\"Agdas\":\"AZ-AGS\",\"Astara\":\"AZ-AST\",\"Baki\":\"AZ-BA\",\"Balakan\":\"AZ-BAL\",\"Barda\":\"AZ-BAR\",\"Beylaqan\":\"AZ-BEY\",\"Bilasuvar\":\"AZ-BIL\",\"Calilabad\":\"AZ-CAL\",\"Fuzuli\":\"AZ-FUZ\",\"Gadabay\":\"AZ-GAD\",\"Ganca\":\"AZ-GA\",\"Goranboy\":\"AZ-GOR\",\"Goycay\":\"AZ-GOY\",\"Goygol\":\"AZ-GYG\",\"Imisli\":\"AZ-IMI\",\"Ismayilli\":\"AZ-ISM\",\"Kurdamir\":\"AZ-KUR\",\"Lankaran\":\"AZ-LA\",\"Masalli\":\"AZ-MAS\",\"Mingacevir\":\"AZ-MI\",\"Naxcivan\":\"AZ-NX\",\"Neftcala\":\"AZ-NEF\",\"Oguz\":\"AZ-OGU\",\"Qabala\":\"AZ-QAB\",\"Qax\":\"AZ-QAX\",\"Quba\":\"AZ-QBA\",\"Qusar\":\"AZ-QUS\",\"Saatli\":\"AZ-SAT\",\"Sabirabad\":\"AZ-SAB\",\"Saki\":\"AZ-SAK\",\"Salyan\":\"AZ-SAL\",\"Samaxi\":\"AZ-SMI\",\"Samkir\":\"AZ-SKR\",\"Samux\":\"AZ-SMX\",\"Sirvan\":\"AZ-SR\",\"Siyazan\":\"AZ-SIY\",\"Sumqayit\":\"AZ-SM\",\"Tartar\":\"AZ-TAR\",\"Xacmaz\":\"AZ-XAC\",\"Xizi\":\"AZ-XIZ\",\"Yardimli\":\"AZ-YAR\",\"Yevlax\":\"AZ-YEV\",\"Zaqatala\":\"AZ-ZAQ\",\"Zardab\":\"AZ-ZAR\"},\"RO\":{\"Alba\":\"RO-AB\",\"Arad\":\"RO-AR\",\"Arges\":\"RO-AG\",\"Bacau\":\"RO-BC\",\"Bihor\":\"RO-BH\",\"Bistrita-Nasaud\":\"RO-BN\",\"Botosani\":\"RO-BT\",\"Braila\":\"RO-BR\",\"Brasov\":\"RO-BV\",\"Bucuresti\":\"RO-B\",\"Buzau\":\"RO-BZ\",\"Calarasi\":\"RO-CL\",\"Caras-Severin\":\"RO-CS\",\"Cluj\":\"RO-CJ\",\"Constanta\":\"RO-CT\",\"Covasna\":\"RO-CV\",\"Dambovita\":\"RO-DB\",\"Dolj\":\"RO-DJ\",\"Galati\":\"RO-GL\",\"Giurgiu\":\"RO-GR\",\"Gorj\":\"RO-GJ\",\"Harghita\":\"RO-HR\",\"Hunedoara\":\"RO-HD\",\"Ialomita\":\"RO-IL\",\"Iasi\":\"RO-IS\",\"Ilfov\":\"RO-IF\",\"Maramures\":\"RO-MM\",\"Mehedinti\":\"RO-MH\",\"Mures\":\"RO-MS\",\"Neamt\":\"RO-NT\",\"Olt\":\"RO-OT\",\"Prahova\":\"RO-PH\",\"Salaj\":\"RO-SJ\",\"Satu Mare\":\"RO-SM\",\"Sibiu\":\"RO-SB\",\"Suceava\":\"RO-SV\",\"Teleorman\":\"RO-TR\",\"Timis\":\"RO-TM\",\"Tulcea\":\"RO-TL\",\"Valcea\":\"RO-VL\",\"Vaslui\":\"RO-VS\",\"Vrancea\":\"RO-VN\"},\"BA\":{\"Brcko distrikt\":\"BA-BRC\",\"Federacija Bosne i Hercegovine\":\"BA-BIH\",\"Republika Srpska\":\"BA-SRP\"},\"BB\":{\"Christ Church\":\"BB-01\",\"Saint Andrew\":\"BB-02\",\"Saint George\":\"BB-03\",\"Saint James\":\"BB-04\",\"Saint John\":\"BB-05\",\"Saint Lucy\":\"BB-07\",\"Saint Michael\":\"BB-08\",\"Saint Peter\":\"BB-09\",\"Saint Philip\":\"BB-10\",\"Saint Thomas\":\"BB-11\"},\"RS\":{\"Beograd\":\"RS-00\",\"Borski okrug\":\"RS-14\",\"Branicevski okrug\":\"RS-11\",\"Jablanicki okrug\":\"RS-23\",\"Juznobacki okrug\":\"RS-06\",\"Juznobanatski okrug\":\"RS-04\",\"Kolubarski okrug\":\"RS-09\",\"Kosovsko-Mitrovacki okrug\":\"RS-28\",\"Macvanski okrug\":\"RS-08\",\"Moravicki okrug\":\"RS-17\",\"Nisavski okrug\":\"RS-20\",\"Pcinjski okrug\":\"RS-24\",\"Pecki okrug\":\"RS-26\",\"Pirotski okrug\":\"RS-22\",\"Podunavski okrug\":\"RS-10\",\"Pomoravski okrug\":\"RS-13\",\"Prizrenski okrug\":\"RS-27\",\"Rasinski okrug\":\"RS-19\",\"Raski okrug\":\"RS-18\",\"Severnobacki okrug\":\"RS-01\",\"Severnobanatski okrug\":\"RS-03\",\"Srednjebanatski okrug\":\"RS-02\",\"Sremski okrug\":\"RS-07\",\"Sumadijski okrug\":\"RS-12\",\"Toplicki okrug\":\"RS-21\",\"Zajecarski okrug\":\"RS-15\",\"Zapadnobacki okrug\":\"RS-05\",\"Zlatiborski okrug\":\"RS-16\"},\"BD\":{\"Barishal\":\"BD-A\",\"Chattogram\":\"BD-B\",\"Dhaka\":\"BD-C\",\"Khulna\":\"BD-D\",\"Rajshahi\":\"BD-E\",\"Rangpur\":\"BD-F\",\"Sylhet\":\"BD-G\"},\"RU\":{\"Adygeya, Respublika\":\"RU-AD\",\"Altay, Respublika\":\"RU-AL\",\"Altayskiy kray\":\"RU-ALT\",\"Amurskaya oblast\'\":\"RU-AMU\",\"Arkhangel\'skaya oblast\'\":\"RU-ARK\",\"Astrakhanskaya oblast\'\":\"RU-AST\",\"Bashkortostan, Respublika\":\"RU-BA\",\"Belgorodskaya oblast\'\":\"RU-BEL\",\"Bryanskaya oblast\'\":\"RU-BRY\",\"Buryatiya, Respublika\":\"RU-BU\",\"Chechenskaya Respublika\":\"RU-CE\",\"Chelyabinskaya oblast\'\":\"RU-CHE\",\"Chukotskiy avtonomnyy okrug\":\"RU-CHU\",\"Chuvashskaya Respublika\":\"RU-CU\",\"Dagestan, Respublika\":\"RU-DA\",\"Ingushetiya, Respublika\":\"RU-IN\",\"Irkutskaya oblast\'\":\"RU-IRK\",\"Ivanovskaya oblast\'\":\"RU-IVA\",\"Kabardino-Balkarskaya Respublika\":\"RU-KB\",\"Kaliningradskaya oblast\'\":\"RU-KGD\",\"Kalmykiya, Respublika\":\"RU-KL\",\"Kaluzhskaya oblast\'\":\"RU-KLU\",\"Kamchatskiy kray\":\"RU-KAM\",\"Karachayevo-Cherkesskaya Respublika\":\"RU-KC\",\"Kareliya, Respublika\":\"RU-KR\",\"Kemerovskaya oblast\'\":\"RU-KEM\",\"Khabarovskiy kray\":\"RU-KHA\",\"Khakasiya, Respublika\":\"RU-KK\",\"Khanty-Mansiyskiy avtonomnyy okrug\":\"RU-KHM\",\"Kirovskaya oblast\'\":\"RU-KIR\",\"Komi, Respublika\":\"RU-KO\",\"Kostromskaya oblast\'\":\"RU-KOS\",\"Krasnodarskiy kray\":\"RU-KDA\",\"Krasnoyarskiy kray\":\"RU-KYA\",\"Kurganskaya oblast\'\":\"RU-KGN\",\"Kurskaya oblast\'\":\"RU-KRS\",\"Leningradskaya oblast\'\":\"RU-LEN\",\"Lipetskaya oblast\'\":\"RU-LIP\",\"Magadanskaya oblast\'\":\"RU-MAG\",\"Mariy El, Respublika\":\"RU-ME\",\"Mordoviya, Respublika\":\"RU-MO\",\"Moskovskaya oblast\'\":\"RU-MOS\",\"Moskva\":\"RU-MOW\",\"Murmanskaya oblast\'\":\"RU-MUR\",\"Nenetskiy avtonomnyy okrug\":\"RU-NEN\",\"Nizhegorodskaya oblast\'\":\"RU-NIZ\",\"Novgorodskaya oblast\'\":\"RU-NGR\",\"Novosibirskaya oblast\'\":\"RU-NVS\",\"Omskaya oblast\'\":\"RU-OMS\",\"Orenburgskaya oblast\'\":\"RU-ORE\",\"Orlovskaya oblast\'\":\"RU-ORL\",\"Penzenskaya oblast\'\":\"RU-PNZ\",\"Permskiy kray\":\"RU-PER\",\"Primorskiy kray\":\"RU-PRI\",\"Pskovskaya oblast\'\":\"RU-PSK\",\"Rostovskaya oblast\'\":\"RU-ROS\",\"Ryazanskaya oblast\'\":\"RU-RYA\",\"Saha, Respublika\":\"RU-SA\",\"Sakhalinskaya oblast\'\":\"RU-SAK\",\"Samarskaya oblast\'\":\"RU-SAM\",\"Sankt-Peterburg\":\"RU-SPE\",\"Saratovskaya oblast\'\":\"RU-SAR\",\"Severnaya Osetiya, Respublika\":\"RU-SE\",\"Smolenskaya oblast\'\":\"RU-SMO\",\"Stavropol\'skiy kray\":\"RU-STA\",\"Sverdlovskaya oblast\'\":\"RU-SVE\",\"Tambovskaya oblast\'\":\"RU-TAM\",\"Tatarstan, Respublika\":\"RU-TA\",\"Tomskaya oblast\'\":\"RU-TOM\",\"Tul\'skaya oblast\'\":\"RU-TUL\",\"Tverskaya oblast\'\":\"RU-TVE\",\"Tyumenskaya oblast\'\":\"RU-TYU\",\"Tyva, Respublika\":\"RU-TY\",\"Udmurtskaya Respublika\":\"RU-UD\",\"Ul\'yanovskaya oblast\'\":\"RU-ULY\",\"Vladimirskaya oblast\'\":\"RU-VLA\",\"Volgogradskaya oblast\'\":\"RU-VGG\",\"Vologodskaya oblast\'\":\"RU-VLG\",\"Voronezhskaya oblast\'\":\"RU-VOR\",\"Yamalo-Nenetskiy avtonomnyy okrug\":\"RU-YAN\",\"Yaroslavskaya oblast\'\":\"RU-YAR\",\"Yevreyskaya avtonomnaya oblast\'\":\"RU-YEV\",\"Zabaykal\'skiy kray\":\"RU-ZAB\"},\"BE\":{\"Antwerpen\":\"BE-VAN\",\"Brabant wallon\":\"BE-WBR\",\"Brussels Hoofdstedelijk Gewest\":\"BE-BRU\",\"Hainaut\":\"BE-WHT\",\"Liege\":\"BE-WLG\",\"Limburg\":\"BE-VLI\",\"Luxembourg\":\"BE-WLX\",\"Namur\":\"BE-WNA\",\"Oost-Vlaanderen\":\"BE-VOV\",\"Vlaams-Brabant\":\"BE-VBR\",\"West-Vlaanderen\":\"BE-VWV\"},\"BF\":{\"Bam\":\"BF-BAM\",\"Bazega\":\"BF-BAZ\",\"Boulgou\":\"BF-BLG\",\"Boulkiemde\":\"BF-BLK\",\"Ganzourgou\":\"BF-GAN\",\"Gnagna\":\"BF-GNA\",\"Gourma\":\"BF-GOU\",\"Houet\":\"BF-HOU\",\"Kadiogo\":\"BF-KAD\",\"Komondjari\":\"BF-KMD\",\"Kompienga\":\"BF-KMP\",\"Koulpelogo\":\"BF-KOP\",\"Kouritenga\":\"BF-KOT\",\"Kourweogo\":\"BF-KOW\",\"Leraba\":\"BF-LER\",\"Loroum\":\"BF-LOR\",\"Nahouri\":\"BF-NAO\",\"Namentenga\":\"BF-NAM\",\"Nayala\":\"BF-NAY\",\"Oubritenga\":\"BF-OUB\",\"Oudalan\":\"BF-OUD\",\"Passore\":\"BF-PAS\",\"Poni\":\"BF-PON\",\"Sanmatenga\":\"BF-SMT\",\"Seno\":\"BF-SEN\",\"Sissili\":\"BF-SIS\",\"Soum\":\"BF-SOM\",\"Sourou\":\"BF-SOR\",\"Tapoa\":\"BF-TAP\",\"Tuy\":\"BF-TUI\",\"Yatenga\":\"BF-YAT\",\"Ziro\":\"BF-ZIR\",\"Zondoma\":\"BF-ZON\",\"Zoundweogo\":\"BF-ZOU\"},\"RW\":{\"Est\":\"RW-02\",\"Nord\":\"RW-03\",\"Ouest\":\"RW-04\",\"Sud\":\"RW-05\",\"Ville de Kigali\":\"RW-01\"},\"BG\":{\"Blagoevgrad\":\"BG-01\",\"Burgas\":\"BG-02\",\"Dobrich\":\"BG-08\",\"Gabrovo\":\"BG-07\",\"Haskovo\":\"BG-26\",\"Kardzhali\":\"BG-09\",\"Kyustendil\":\"BG-10\",\"Lovech\":\"BG-11\",\"Montana\":\"BG-12\",\"Pazardzhik\":\"BG-13\",\"Pernik\":\"BG-14\",\"Pleven\":\"BG-15\",\"Plovdiv\":\"BG-16\",\"Razgrad\":\"BG-17\",\"Ruse\":\"BG-18\",\"Shumen\":\"BG-27\",\"Silistra\":\"BG-19\",\"Sliven\":\"BG-20\",\"Smolyan\":\"BG-21\",\"Sofia\":\"BG-23\",\"Sofia (stolitsa)\":\"BG-22\",\"Stara Zagora\":\"BG-24\",\"Targovishte\":\"BG-25\",\"Varna\":\"BG-03\",\"Veliko Tarnovo\":\"BG-04\",\"Vidin\":\"BG-05\",\"Vratsa\":\"BG-06\",\"Yambol\":\"BG-28\"},\"BH\":{\"Al \'Asimah\":\"BH-13\",\"Al Janubiyah\":\"BH-14\",\"Al Muharraq\":\"BH-15\",\"Ash Shamaliyah\":\"BH-17\"},\"BI\":{\"Bujumbura Mairie\":\"BI-BM\",\"Cibitoke\":\"BI-CI\",\"Gitega\":\"BI-GI\",\"Kirundo\":\"BI-KI\",\"Mwaro\":\"BI-MW\",\"Ngozi\":\"BI-NG\",\"Rumonge\":\"BI-RM\",\"Rutana\":\"BI-RT\",\"Ruyigi\":\"BI-RY\"},\"BJ\":{\"Alibori\":\"BJ-AL\",\"Atacora\":\"BJ-AK\",\"Atlantique\":\"BJ-AQ\",\"Borgou\":\"BJ-BO\",\"Donga\":\"BJ-DO\",\"Littoral\":\"BJ-LI\",\"Mono\":\"BJ-MO\",\"Oueme\":\"BJ-OU\",\"Plateau\":\"BJ-PL\",\"Zou\":\"BJ-ZO\"},\"BL\":{\"Saint Barthelemy\":\"\"},\"BM\":{\"Hamilton\":\"\",\"Saint George\":\"\"},\"BN\":{\"Belait\":\"BN-BE\",\"Brunei-Muara\":\"BN-BM\",\"Temburong\":\"BN-TE\",\"Tutong\":\"BN-TU\"},\"BO\":{\"Chuquisaca\":\"BO-H\",\"Cochabamba\":\"BO-C\",\"El Beni\":\"BO-B\",\"La Paz\":\"BO-L\",\"Oruro\":\"BO-O\",\"Pando\":\"BO-N\",\"Potosi\":\"BO-P\",\"Santa Cruz\":\"BO-S\",\"Tarija\":\"BO-T\"},\"SA\":{\"\'Asir\":\"SA-14\",\"Al Bahah\":\"SA-11\",\"Al Hudud ash Shamaliyah\":\"SA-08\",\"Al Jawf\":\"SA-12\",\"Al Madinah al Munawwarah\":\"SA-03\",\"Al Qasim\":\"SA-05\",\"Ar Riyad\":\"SA-01\",\"Ash Sharqiyah\":\"SA-04\",\"Ha\'il\":\"SA-06\",\"Jazan\":\"SA-09\",\"Makkah al Mukarramah\":\"SA-02\",\"Najran\":\"SA-10\",\"Tabuk\":\"SA-07\"},\"SB\":{\"Choiseul\":\"SB-CH\",\"Guadalcanal\":\"SB-GU\",\"Western\":\"SB-WE\"},\"BQ\":{\"Bonaire\":\"BQ-BO\",\"Saba\":\"BQ-SA\",\"Sint Eustatius\":\"BQ-SE\"},\"SC\":{\"Anse Boileau\":\"SC-02\",\"Anse aux Pins\":\"SC-01\",\"Baie Lazare\":\"SC-06\",\"Baie Sainte Anne\":\"SC-07\",\"Beau Vallon\":\"SC-08\",\"Bel Ombre\":\"SC-10\",\"Cascade\":\"SC-11\",\"English River\":\"SC-16\",\"Grand Anse Mahe\":\"SC-13\",\"Grand Anse Praslin\":\"SC-14\",\"La Digue\":\"SC-15\",\"Pointe Larue\":\"SC-20\",\"Takamaka\":\"SC-23\"},\"BR\":{\"Acre\":\"BR-AC\",\"Alagoas\":\"BR-AL\",\"Amapa\":\"BR-AP\",\"Amazonas\":\"BR-AM\",\"Bahia\":\"BR-BA\",\"Ceara\":\"BR-CE\",\"Distrito Federal\":\"BR-DF\",\"Espirito Santo\":\"BR-ES\",\"Goias\":\"BR-GO\",\"Maranhao\":\"BR-MA\",\"Mato Grosso\":\"BR-MT\",\"Mato Grosso do Sul\":\"BR-MS\",\"Minas Gerais\":\"BR-MG\",\"Para\":\"BR-PA\",\"Paraiba\":\"BR-PB\",\"Parana\":\"BR-PR\",\"Pernambuco\":\"BR-PE\",\"Piaui\":\"BR-PI\",\"Rio Grande do Norte\":\"BR-RN\",\"Rio Grande do Sul\":\"BR-RS\",\"Rio de Janeiro\":\"BR-RJ\",\"Rondonia\":\"BR-RO\",\"Roraima\":\"BR-RR\",\"Santa Catarina\":\"BR-SC\",\"Sao Paulo\":\"BR-SP\",\"Sergipe\":\"BR-SE\",\"Tocantins\":\"BR-TO\"},\"SD\":{\"Blue Nile\":\"SD-NB\",\"Central Darfur\":\"SD-DC\",\"Gedaref\":\"SD-GD\",\"Gezira\":\"SD-GZ\",\"Kassala\":\"SD-KA\",\"Khartoum\":\"SD-KH\",\"North Darfur\":\"SD-DN\",\"North Kordofan\":\"SD-KN\",\"Northern\":\"SD-NO\",\"Red Sea\":\"SD-RS\",\"River Nile\":\"SD-NR\",\"Sennar\":\"SD-SI\",\"South Darfur\":\"SD-DS\",\"South Kordofan\":\"SD-KS\",\"West Darfur\":\"SD-DW\",\"West Kordofan\":\"SD-GK\",\"White Nile\":\"SD-NW\"},\"BS\":{\"Central Abaco\":\"BS-CO\",\"City of Freeport\":\"BS-FP\",\"Long Island\":\"BS-LI\",\"New Providence\":\"BS-NP\",\"North Abaco\":\"BS-NO\",\"North Andros\":\"BS-NS\",\"South Eleuthera\":\"BS-SE\"},\"SE\":{\"Blekinge lan\":\"SE-K\",\"Dalarnas lan\":\"SE-W\",\"Gavleborgs lan\":\"SE-X\",\"Gotlands lan\":\"SE-I\",\"Hallands lan\":\"SE-N\",\"Jamtlands lan\":\"SE-Z\",\"Jonkopings lan\":\"SE-F\",\"Kalmar lan\":\"SE-H\",\"Kronobergs lan\":\"SE-G\",\"Norrbottens lan\":\"SE-BD\",\"Orebro lan\":\"SE-T\",\"Ostergotlands lan\":\"SE-E\",\"Skane lan\":\"SE-M\",\"Sodermanlands lan\":\"SE-D\",\"Stockholms lan\":\"SE-AB\",\"Uppsala lan\":\"SE-C\",\"Varmlands lan\":\"SE-S\",\"Vasterbottens lan\":\"SE-AC\",\"Vasternorrlands lan\":\"SE-Y\",\"Vastmanlands lan\":\"SE-U\",\"Vastra Gotalands lan\":\"SE-O\"},\"BT\":{\"Bumthang\":\"BT-33\",\"Chhukha\":\"BT-12\",\"Gasa\":\"BT-GA\",\"Haa\":\"BT-13\",\"Lhuentse\":\"BT-44\",\"Monggar\":\"BT-42\",\"Paro\":\"BT-11\",\"Pema Gatshel\":\"BT-43\",\"Punakha\":\"BT-23\",\"Samdrup Jongkhar\":\"BT-45\",\"Samtse\":\"BT-14\",\"Thimphu\":\"BT-15\",\"Trashigang\":\"BT-41\",\"Trongsa\":\"BT-32\",\"Tsirang\":\"BT-21\",\"Wangdue Phodrang\":\"BT-24\"},\"SG\":{\"Singapore\":\"\"},\"BV\":{\"Bouvet Island\":\"\"},\"SH\":{\"Saint Helena\":\"SH-HL\"},\"BW\":{\"Central\":\"BW-CE\",\"Chobe\":\"BW-CH\",\"Kgalagadi\":\"BW-KG\",\"Kgatleng\":\"BW-KL\",\"Kweneng\":\"BW-KW\",\"North East\":\"BW-NE\",\"North West\":\"BW-NW\",\"South East\":\"BW-SE\",\"Southern\":\"BW-SO\"},\"SI\":{\"Ajdovscina\":\"SI-001\",\"Ankaran\":\"SI-213\",\"Apace\":\"SI-195\",\"Beltinci\":\"SI-002\",\"Benedikt\":\"SI-148\",\"Bistrica ob Sotli\":\"SI-149\",\"Bled\":\"SI-003\",\"Bloke\":\"SI-150\",\"Bohinj\":\"SI-004\",\"Borovnica\":\"SI-005\",\"Bovec\":\"SI-006\",\"Braslovce\":\"SI-151\",\"Brda\":\"SI-007\",\"Brezice\":\"SI-009\",\"Brezovica\":\"SI-008\",\"Cankova\":\"SI-152\",\"Celje\":\"SI-011\",\"Cerklje na Gorenjskem\":\"SI-012\",\"Cerknica\":\"SI-013\",\"Cerkno\":\"SI-014\",\"Cirkulane\":\"SI-196\",\"Crensovci\":\"SI-015\",\"Crnomelj\":\"SI-017\",\"Destrnik\":\"SI-018\",\"Divaca\":\"SI-019\",\"Dobje\":\"SI-154\",\"Dobrepolje\":\"SI-020\",\"Dobrna\":\"SI-155\",\"Dobrova-Polhov Gradec\":\"SI-021\",\"Dobrovnik\":\"SI-156\",\"Domzale\":\"SI-023\",\"Dornava\":\"SI-024\",\"Dravograd\":\"SI-025\",\"Duplek\":\"SI-026\",\"Gorje\":\"SI-207\",\"Gornja Radgona\":\"SI-029\",\"Gornji Petrovci\":\"SI-031\",\"Grad\":\"SI-158\",\"Grosuplje\":\"SI-032\",\"Hajdina\":\"SI-159\",\"Hoce-Slivnica\":\"SI-160\",\"Hodos\":\"SI-161\",\"Horjul\":\"SI-162\",\"Hrastnik\":\"SI-034\",\"Hrpelje-Kozina\":\"SI-035\",\"Idrija\":\"SI-036\",\"Ig\":\"SI-037\",\"Ilirska Bistrica\":\"SI-038\",\"Ivancna Gorica\":\"SI-039\",\"Izola\":\"SI-040\",\"Jesenice\":\"SI-041\",\"Jursinci\":\"SI-042\",\"Kamnik\":\"SI-043\",\"Kanal\":\"SI-044\",\"Kidricevo\":\"SI-045\",\"Kobarid\":\"SI-046\",\"Kobilje\":\"SI-047\",\"Kocevje\":\"SI-048\",\"Komen\":\"SI-049\",\"Komenda\":\"SI-164\",\"Koper\":\"SI-050\",\"Kosanjevica na Krki\":\"SI-197\",\"Kostel\":\"SI-165\",\"Kranj\":\"SI-052\",\"Kranjska Gora\":\"SI-053\",\"Krizevci\":\"SI-166\",\"Krsko\":\"SI-054\",\"Kungota\":\"SI-055\",\"Kuzma\":\"SI-056\",\"Lasko\":\"SI-057\",\"Lenart\":\"SI-058\",\"Lendava\":\"SI-059\",\"Litija\":\"SI-060\",\"Ljubljana\":\"SI-061\",\"Ljutomer\":\"SI-063\",\"Log-Dragomer\":\"SI-208\",\"Logatec\":\"SI-064\",\"Loska dolina\":\"SI-065\",\"Loski Potok\":\"SI-066\",\"Lovrenc na Pohorju\":\"SI-167\",\"Luce\":\"SI-067\",\"Lukovica\":\"SI-068\",\"Majsperk\":\"SI-069\",\"Makole\":\"SI-198\",\"Maribor\":\"SI-070\",\"Markovci\":\"SI-168\",\"Medvode\":\"SI-071\",\"Menges\":\"SI-072\",\"Metlika\":\"SI-073\",\"Mezica\":\"SI-074\",\"Miklavz na Dravskem polju\":\"SI-169\",\"Miren-Kostanjevica\":\"SI-075\",\"Mirna\":\"SI-212\",\"Mirna Pec\":\"SI-170\",\"Mislinja\":\"SI-076\",\"Mokronog-Trebelno\":\"SI-199\",\"Moravce\":\"SI-077\",\"Mozirje\":\"SI-079\",\"Murska Sobota\":\"SI-080\",\"Muta\":\"SI-081\",\"Naklo\":\"SI-082\",\"Nazarje\":\"SI-083\",\"Nova Gorica\":\"SI-084\",\"Novo Mesto\":\"SI-085\",\"Odranci\":\"SI-086\",\"Oplotnica\":\"SI-171\",\"Ormoz\":\"SI-087\",\"Piran\":\"SI-090\",\"Pivka\":\"SI-091\",\"Podcetrtek\":\"SI-092\",\"Podlehnik\":\"SI-172\",\"Poljcane\":\"SI-200\",\"Polzela\":\"SI-173\",\"Postojna\":\"SI-094\",\"Prebold\":\"SI-174\",\"Preddvor\":\"SI-095\",\"Prevalje\":\"SI-175\",\"Ptuj\":\"SI-096\",\"Puconci\":\"SI-097\",\"Race-Fram\":\"SI-098\",\"Radece\":\"SI-099\",\"Radenci\":\"SI-100\",\"Radlje ob Dravi\":\"SI-101\",\"Radovljica\":\"SI-102\",\"Ravne na Koroskem\":\"SI-103\",\"Razkrizje\":\"SI-176\",\"Recica ob Savinji\":\"SI-209\",\"Rence-Vogrsko\":\"SI-201\",\"Ribnica\":\"SI-104\",\"Rogaska Slatina\":\"SI-106\",\"Rogasovci\":\"SI-105\",\"Ruse\":\"SI-108\",\"Salovci\":\"SI-033\",\"Semic\":\"SI-109\",\"Sempeter-Vrtojba\":\"SI-183\",\"Sencur\":\"SI-117\",\"Sentilj\":\"SI-118\",\"Sentjernej\":\"SI-119\",\"Sentjur\":\"SI-120\",\"Sentrupert\":\"SI-211\",\"Sevnica\":\"SI-110\",\"Sezana\":\"SI-111\",\"Skocjan\":\"SI-121\",\"Skofja Loka\":\"SI-122\",\"Skofljica\":\"SI-123\",\"Slovenj Gradec\":\"SI-112\",\"Slovenska Bistrica\":\"SI-113\",\"Slovenske Konjice\":\"SI-114\",\"Smarje pri Jelsah\":\"SI-124\",\"Smarjeske Toplice\":\"SI-206\",\"Smartno ob Paki\":\"SI-125\",\"Smartno pri Litiji\":\"SI-194\",\"Sodrazica\":\"SI-179\",\"Solcava\":\"SI-180\",\"Sostanj\":\"SI-126\",\"Starse\":\"SI-115\",\"Store\":\"SI-127\",\"Straza\":\"SI-203\",\"Sveta Trojica v Slovenskih goricah\":\"SI-204\",\"Sveti Andraz v Slovenskih Goricah\":\"SI-182\",\"Sveti Jurij ob Scavnici\":\"SI-116\",\"Sveti Jurij v Slovenskih goricah\":\"SI-210\",\"Sveti Tomaz\":\"SI-205\",\"Tabor\":\"SI-184\",\"Tisina\":\"SI-010\",\"Tolmin\":\"SI-128\",\"Trbovlje\":\"SI-129\",\"Trebnje\":\"SI-130\",\"Trnovska Vas\":\"SI-185\",\"Trzic\":\"SI-131\",\"Trzin\":\"SI-186\",\"Turnisce\":\"SI-132\",\"Velenje\":\"SI-133\",\"Velika Polana\":\"SI-187\",\"Velike Lasce\":\"SI-134\",\"Verzej\":\"SI-188\",\"Videm\":\"SI-135\",\"Vipava\":\"SI-136\",\"Vitanje\":\"SI-137\",\"Vodice\":\"SI-138\",\"Vojnik\":\"SI-139\",\"Vransko\":\"SI-189\",\"Vrhnika\":\"SI-140\",\"Vuzenica\":\"SI-141\",\"Zagorje ob Savi\":\"SI-142\",\"Zalec\":\"SI-190\",\"Zavrc\":\"SI-143\",\"Zelezniki\":\"SI-146\",\"Zetale\":\"SI-191\",\"Ziri\":\"SI-147\",\"Zrece\":\"SI-144\",\"Zuzemberk\":\"SI-193\"},\"BY\":{\"Brestskaya voblasts\'\":\"BY-BR\",\"Homyel\'skaya voblasts\'\":\"BY-HO\",\"Horad Minsk\":\"BY-HM\",\"Hrodzyenskaya voblasts\'\":\"BY-HR\",\"Mahilyowskaya voblasts\'\":\"BY-MA\",\"Minskaya voblasts\'\":\"BY-MI\",\"Vitsyebskaya voblasts\'\":\"BY-VI\"},\"SK\":{\"Banskobystricky kraj\":\"SK-BC\",\"Bratislavsky kraj\":\"SK-BL\",\"Kosicky kraj\":\"SK-KI\",\"Nitriansky kraj\":\"SK-NI\",\"Presovsky kraj\":\"SK-PV\",\"Trenciansky kraj\":\"SK-TC\",\"Trnavsky kraj\":\"SK-TA\",\"Zilinsky kraj\":\"SK-ZI\"},\"BZ\":{\"Belize\":\"BZ-BZ\",\"Cayo\":\"BZ-CY\",\"Corozal\":\"BZ-CZL\",\"Orange Walk\":\"BZ-OW\",\"Stann Creek\":\"BZ-SC\",\"Toledo\":\"BZ-TOL\"},\"SL\":{\"Eastern\":\"SL-E\",\"Northern\":\"SL-N\",\"Southern\":\"SL-S\",\"Western Area\":\"SL-W\"},\"SM\":{\"Citta di San Marino\":\"SM-07\",\"Domagnano\":\"SM-03\",\"Serravalle\":\"SM-09\"},\"SN\":{\"Dakar\":\"SN-DK\",\"Diourbel\":\"SN-DB\",\"Fatick\":\"SN-FK\",\"Kaffrine\":\"SN-KA\",\"Kaolack\":\"SN-KL\",\"Kolda\":\"SN-KD\",\"Louga\":\"SN-LG\",\"Matam\":\"SN-MT\",\"Saint-Louis\":\"SN-SL\",\"Tambacounda\":\"SN-TC\",\"Thies\":\"SN-TH\",\"Ziguinchor\":\"SN-ZG\"},\"SO\":{\"Awdal\":\"SO-AW\",\"Banaadir\":\"SO-BN\",\"Hiiraan\":\"SO-HI\",\"Mudug\":\"SO-MU\",\"Nugaal\":\"SO-NU\",\"Shabeellaha Hoose\":\"SO-SH\",\"Sool\":\"SO-SO\",\"Togdheer\":\"SO-TO\",\"Woqooyi Galbeed\":\"SO-WO\"},\"CA\":{\"Alberta\":\"CA-AB\",\"British Columbia\":\"CA-BC\",\"Manitoba\":\"CA-MB\",\"New Brunswick\":\"CA-NB\",\"Newfoundland and Labrador\":\"CA-NL\",\"Northwest Territories\":\"CA-NT\",\"Nova Scotia\":\"CA-NS\",\"Nunavut\":\"CA-NU\",\"Ontario\":\"CA-ON\",\"Prince Edward Island\":\"CA-PE\",\"Quebec\":\"CA-QC\",\"Saskatchewan\":\"CA-SK\",\"Yukon\":\"CA-YT\"},\"SR\":{\"Commewijne\":\"SR-CM\",\"Nickerie\":\"SR-NI\",\"Para\":\"SR-PR\",\"Paramaribo\":\"SR-PM\",\"Sipaliwini\":\"SR-SI\",\"Wanica\":\"SR-WA\"},\"SS\":{\"Central Equatoria\":\"SS-EC\",\"Eastern Equatoria\":\"SS-EE\",\"Northern Bahr el Ghazal\":\"SS-BN\",\"Upper Nile\":\"SS-NU\",\"Western Equatoria\":\"SS-EW\"},\"CC\":{\"Cocos (Keeling) Islands\":\"\"},\"ST\":{\"Agua Grande\":\"ST-01\"},\"CD\":{\"Equateur\":\"CD-EQ\",\"Haut-Katanga\":\"CD-HK\",\"Ituri\":\"CD-IT\",\"Kasai Central\":\"CD-KC\",\"Kasai Oriental\":\"CD-KE\",\"Kinshasa\":\"CD-KN\",\"Kwilu\":\"CD-KL\",\"Lualaba\":\"CD-LU\",\"Mai-Ndombe\":\"CD-MN\",\"Nord-Kivu\":\"CD-NK\",\"Sankuru\":\"CD-SA\",\"Sud-Kivu\":\"CD-SK\",\"Tanganyika\":\"CD-TA\",\"Tshopo\":\"CD-TO\"},\"SV\":{\"Ahuachapan\":\"SV-AH\",\"Cabanas\":\"SV-CA\",\"Chalatenango\":\"SV-CH\",\"Cuscatlan\":\"SV-CU\",\"La Libertad\":\"SV-LI\",\"La Paz\":\"SV-PA\",\"La Union\":\"SV-UN\",\"Morazan\":\"SV-MO\",\"San Miguel\":\"SV-SM\",\"San Salvador\":\"SV-SS\",\"San Vicente\":\"SV-SV\",\"Santa Ana\":\"SV-SA\",\"Sonsonate\":\"SV-SO\",\"Usulutan\":\"SV-US\"},\"CF\":{\"Bangui\":\"CF-BGF\",\"Nana-Mambere\":\"CF-NM\",\"Ouham\":\"CF-AC\",\"Ouham-Pende\":\"CF-OP\"},\"CG\":{\"Brazzaville\":\"CG-BZV\",\"Cuvette\":\"CG-8\",\"Pointe-Noire\":\"CG-16\",\"Sangha\":\"CG-13\"},\"SX\":{\"Sint Maarten (Dutch Part)\":\"\"},\"CH\":{\"Aargau\":\"CH-AG\",\"Appenzell Ausserrhoden\":\"CH-AR\",\"Appenzell Innerrhoden\":\"CH-AI\",\"Basel-Landschaft\":\"CH-BL\",\"Basel-Stadt\":\"CH-BS\",\"Bern\":\"CH-BE\",\"Fribourg\":\"CH-FR\",\"Geneve\":\"CH-GE\",\"Glarus\":\"CH-GL\",\"Graubunden\":\"CH-GR\",\"Jura\":\"CH-JU\",\"Luzern\":\"CH-LU\",\"Neuchatel\":\"CH-NE\",\"Nidwalden\":\"CH-NW\",\"Obwalden\":\"CH-OW\",\"Sankt Gallen\":\"CH-SG\",\"Schaffhausen\":\"CH-SH\",\"Schwyz\":\"CH-SZ\",\"Solothurn\":\"CH-SO\",\"Thurgau\":\"CH-TG\",\"Ticino\":\"CH-TI\",\"Uri\":\"CH-UR\",\"Valais\":\"CH-VS\",\"Vaud\":\"CH-VD\",\"Zug\":\"CH-ZG\",\"Zurich\":\"CH-ZH\"},\"SY\":{\"Al Hasakah\":\"SY-HA\",\"Al Ladhiqiyah\":\"SY-LA\",\"Al Qunaytirah\":\"SY-QU\",\"Ar Raqqah\":\"SY-RA\",\"As Suwayda\'\":\"SY-SU\",\"Dar\'a\":\"SY-DR\",\"Dayr az Zawr\":\"SY-DY\",\"Dimashq\":\"SY-DI\",\"Halab\":\"SY-HL\",\"Hamah\":\"SY-HM\",\"Hims\":\"SY-HI\",\"Idlib\":\"SY-ID\",\"Rif Dimashq\":\"SY-RD\",\"Tartus\":\"SY-TA\"},\"CI\":{\"Abidjan\":\"CI-AB\",\"Bas-Sassandra\":\"CI-BS\",\"Comoe\":\"CI-CM\",\"Denguele\":\"CI-DN\",\"Goh-Djiboua\":\"CI-GD\",\"Lacs\":\"CI-LC\",\"Lagunes\":\"CI-LG\",\"Montagnes\":\"CI-MG\",\"Sassandra-Marahoue\":\"CI-SM\",\"Savanes\":\"CI-SV\",\"Vallee du Bandama\":\"CI-VB\",\"Woroba\":\"CI-WR\",\"Yamoussoukro\":\"CI-YM\",\"Zanzan\":\"CI-ZZ\"},\"SZ\":{\"Hhohho\":\"SZ-HH\",\"Lubombo\":\"SZ-LU\",\"Manzini\":\"SZ-MA\"},\"CK\":{\"Cook Islands\":\"\"},\"CL\":{\"Aisen del General Carlos Ibanez del Campo\":\"CL-AI\",\"Antofagasta\":\"CL-AN\",\"Arica y Parinacota\":\"CL-AP\",\"Atacama\":\"CL-AT\",\"Biobio\":\"CL-BI\",\"Coquimbo\":\"CL-CO\",\"La Araucania\":\"CL-AR\",\"Libertador General Bernardo O\'Higgins\":\"CL-LI\",\"Los Lagos\":\"CL-LL\",\"Los Rios\":\"CL-LR\",\"Magallanes\":\"CL-MA\",\"Maule\":\"CL-ML\",\"Nuble\":\"CL-NB\",\"Region Metropolitana de Santiago\":\"CL-RM\",\"Tarapaca\":\"CL-TA\",\"Valparaiso\":\"CL-VS\"},\"CM\":{\"Adamaoua\":\"CM-AD\",\"Centre\":\"CM-CE\",\"Est\":\"CM-ES\",\"Extreme-Nord\":\"CM-EN\",\"Littoral\":\"CM-LT\",\"Nord\":\"CM-NO\",\"Nord-Ouest\":\"CM-NW\",\"Ouest\":\"CM-OU\",\"Sud\":\"CM-SU\",\"Sud-Ouest\":\"CM-SW\"},\"CN\":{\"Anhui\":\"CN-AH\",\"Beijing\":\"CN-BJ\",\"Chongqing\":\"CN-CQ\",\"Fujian\":\"CN-FJ\",\"Gansu\":\"CN-GS\",\"Guangdong\":\"CN-GD\",\"Guangxi\":\"CN-GX\",\"Guizhou\":\"CN-GZ\",\"Hainan\":\"CN-HI\",\"Hebei\":\"CN-HE\",\"Heilongjiang\":\"CN-HL\",\"Henan\":\"CN-HA\",\"Hubei\":\"CN-HB\",\"Hunan\":\"CN-HN\",\"Jiangsu\":\"CN-JS\",\"Jiangxi\":\"CN-JX\",\"Jilin\":\"CN-JL\",\"Liaoning\":\"CN-LN\",\"Nei Mongol\":\"CN-NM\",\"Ningxia\":\"CN-NX\",\"Qinghai\":\"CN-QH\",\"Shaanxi\":\"CN-SN\",\"Shandong\":\"CN-SD\",\"Shanghai\":\"CN-SH\",\"Shanxi\":\"CN-SX\",\"Sichuan\":\"CN-SC\",\"Tianjin\":\"CN-TJ\",\"Xinjiang\":\"CN-XJ\",\"Xizang\":\"CN-XZ\",\"Yunnan\":\"CN-YN\",\"Zhejiang\":\"CN-ZJ\"},\"CO\":{\"Amazonas\":\"CO-AMA\",\"Antioquia\":\"CO-ANT\",\"Arauca\":\"CO-ARA\",\"Atlantico\":\"CO-ATL\",\"Bolivar\":\"CO-BOL\",\"Boyaca\":\"CO-BOY\",\"Caldas\":\"CO-CAL\",\"Caqueta\":\"CO-CAQ\",\"Casanare\":\"CO-CAS\",\"Cauca\":\"CO-CAU\",\"Cesar\":\"CO-CES\",\"Choco\":\"CO-CHO\",\"Cordoba\":\"CO-COR\",\"Cundinamarca\":\"CO-CUN\",\"Distrito Capital de Bogota\":\"CO-DC\",\"Guainia\":\"CO-GUA\",\"Guaviare\":\"CO-GUV\",\"Huila\":\"CO-HUI\",\"La Guajira\":\"CO-LAG\",\"Magdalena\":\"CO-MAG\",\"Meta\":\"CO-MET\",\"Narino\":\"CO-NAR\",\"Norte de Santander\":\"CO-NSA\",\"Putumayo\":\"CO-PUT\",\"Quindio\":\"CO-QUI\",\"Risaralda\":\"CO-RIS\",\"San Andres, Providencia y Santa Catalina\":\"CO-SAP\",\"Santander\":\"CO-SAN\",\"Sucre\":\"CO-SUC\",\"Tolima\":\"CO-TOL\",\"Valle del Cauca\":\"CO-VAC\",\"Vichada\":\"CO-VID\"},\"TC\":{\"Turks and Caicos Islands\":\"\"},\"CR\":{\"Alajuela\":\"CR-A\",\"Cartago\":\"CR-C\",\"Guanacaste\":\"CR-G\",\"Heredia\":\"CR-H\",\"Limon\":\"CR-L\",\"Puntarenas\":\"CR-P\",\"San Jose\":\"CR-SJ\"},\"TD\":{\"Guera\":\"TD-GR\",\"Logone-Occidental\":\"TD-LO\",\"Mayo-Kebbi-Est\":\"TD-ME\",\"Ouaddai\":\"TD-OD\",\"Ville de Ndjamena\":\"TD-ND\",\"Wadi Fira\":\"TD-WF\"},\"TF\":{\"French Southern Territories\":\"\"},\"CU\":{\"Artemisa\":\"CU-15\",\"Camaguey\":\"CU-09\",\"Ciego de Avila\":\"CU-08\",\"Cienfuegos\":\"CU-06\",\"Granma\":\"CU-12\",\"Guantanamo\":\"CU-14\",\"Holguin\":\"CU-11\",\"La Habana\":\"CU-03\",\"Las Tunas\":\"CU-10\",\"Matanzas\":\"CU-04\",\"Mayabeque\":\"CU-16\",\"Pinar del Rio\":\"CU-01\",\"Sancti Spiritus\":\"CU-07\",\"Santiago de Cuba\":\"CU-13\",\"Villa Clara\":\"CU-05\"},\"TG\":{\"Centrale\":\"TG-C\",\"Kara\":\"TG-K\",\"Maritime\":\"TG-M\",\"Plateaux\":\"TG-P\"},\"CV\":{\"Boa Vista\":\"CV-BV\",\"Brava\":\"CV-BR\",\"Maio\":\"CV-MA\",\"Porto Novo\":\"CV-PN\",\"Praia\":\"CV-PR\",\"Ribeira Grande\":\"CV-RG\",\"Ribeira Grande de Santiago\":\"CV-RS\",\"Sal\":\"CV-SL\",\"Santa Cruz\":\"CV-CR\",\"Sao Vicente\":\"CV-SV\",\"Tarrafal\":\"CV-TA\"},\"TH\":{\"Amnat Charoen\":\"TH-37\",\"Ang Thong\":\"TH-15\",\"Bueng Kan\":\"TH-38\",\"Buri Ram\":\"TH-31\",\"Chachoengsao\":\"TH-24\",\"Chai Nat\":\"TH-18\",\"Chaiyaphum\":\"TH-36\",\"Chanthaburi\":\"TH-22\",\"Chiang Mai\":\"TH-50\",\"Chiang Rai\":\"TH-57\",\"Chon Buri\":\"TH-20\",\"Chumphon\":\"TH-86\",\"Kalasin\":\"TH-46\",\"Kamphaeng Phet\":\"TH-62\",\"Kanchanaburi\":\"TH-71\",\"Khon Kaen\":\"TH-40\",\"Krabi\":\"TH-81\",\"Krung Thep Maha Nakhon\":\"TH-10\",\"Lampang\":\"TH-52\",\"Lamphun\":\"TH-51\",\"Loei\":\"TH-42\",\"Lop Buri\":\"TH-16\",\"Mae Hong Son\":\"TH-58\",\"Maha Sarakham\":\"TH-44\",\"Mukdahan\":\"TH-49\",\"Nakhon Nayok\":\"TH-26\",\"Nakhon Pathom\":\"TH-73\",\"Nakhon Phanom\":\"TH-48\",\"Nakhon Ratchasima\":\"TH-30\",\"Nakhon Sawan\":\"TH-60\",\"Nakhon Si Thammarat\":\"TH-80\",\"Nan\":\"TH-55\",\"Narathiwat\":\"TH-96\",\"Nong Bua Lam Phu\":\"TH-39\",\"Nong Khai\":\"TH-43\",\"Nonthaburi\":\"TH-12\",\"Pathum Thani\":\"TH-13\",\"Pattani\":\"TH-94\",\"Phangnga\":\"TH-82\",\"Phatthalung\":\"TH-93\",\"Phayao\":\"TH-56\",\"Phetchabun\":\"TH-67\",\"Phetchaburi\":\"TH-76\",\"Phichit\":\"TH-66\",\"Phitsanulok\":\"TH-65\",\"Phra Nakhon Si Ayutthaya\":\"TH-14\",\"Phrae\":\"TH-54\",\"Phuket\":\"TH-83\",\"Prachin Buri\":\"TH-25\",\"Prachuap Khiri Khan\":\"TH-77\",\"Ranong\":\"TH-85\",\"Ratchaburi\":\"TH-70\",\"Rayong\":\"TH-21\",\"Roi Et\":\"TH-45\",\"Sa Kaeo\":\"TH-27\",\"Sakon Nakhon\":\"TH-47\",\"Samut Prakan\":\"TH-11\",\"Samut Sakhon\":\"TH-74\",\"Samut Songkhram\":\"TH-75\",\"Saraburi\":\"TH-19\",\"Satun\":\"TH-91\",\"Si Sa Ket\":\"TH-33\",\"Sing Buri\":\"TH-17\",\"Songkhla\":\"TH-90\",\"Sukhothai\":\"TH-64\",\"Suphan Buri\":\"TH-72\",\"Surat Thani\":\"TH-84\",\"Surin\":\"TH-32\",\"Tak\":\"TH-63\",\"Trang\":\"TH-92\",\"Trat\":\"TH-23\",\"Ubon Ratchathani\":\"TH-34\",\"Udon Thani\":\"TH-41\",\"Uthai Thani\":\"TH-61\",\"Uttaradit\":\"TH-53\",\"Yala\":\"TH-95\",\"Yasothon\":\"TH-35\"},\"CW\":{\"Curacao\":\"\"},\"CX\":{\"Christmas Island\":\"\"},\"TJ\":{\"Dushanbe\":\"TJ-DU\",\"Khatlon\":\"TJ-KT\",\"Nohiyahoi Tobei Jumhuri\":\"TJ-RA\",\"Sughd\":\"TJ-SU\"},\"CY\":{\"Ammochostos\":\"CY-04\",\"Keryneia\":\"CY-06\",\"Larnaka\":\"CY-03\",\"Lefkosia\":\"CY-01\",\"Lemesos\":\"CY-02\",\"Pafos\":\"CY-05\"},\"TK\":{\"Tokelau\":\"\"},\"CZ\":{\"Jihocesky kraj\":\"CZ-31\",\"Jihomoravsky kraj\":\"CZ-64\",\"Karlovarsky kraj\":\"CZ-41\",\"Kraj Vysocina\":\"CZ-63\",\"Kralovehradecky kraj\":\"CZ-52\",\"Liberecky kraj\":\"CZ-51\",\"Moravskoslezsky kraj\":\"CZ-80\",\"Olomoucky kraj\":\"CZ-71\",\"Pardubicky kraj\":\"CZ-53\",\"Plzensky kraj\":\"CZ-32\",\"Praha, Hlavni mesto\":\"CZ-10\",\"Stredocesky kraj\":\"CZ-20\",\"Ustecky kraj\":\"CZ-42\",\"Zlinsky kraj\":\"CZ-72\"},\"TL\":{\"Ainaro\":\"TL-AN\",\"Cova Lima\":\"TL-CO\",\"Dili\":\"TL-DI\"},\"TM\":{\"Ahal\":\"TM-A\",\"Balkan\":\"TM-B\",\"Dasoguz\":\"TM-D\",\"Lebap\":\"TM-L\",\"Mary\":\"TM-M\"},\"TN\":{\"Beja\":\"TN-31\",\"Ben Arous\":\"TN-13\",\"Bizerte\":\"TN-23\",\"Gabes\":\"TN-81\",\"Gafsa\":\"TN-71\",\"Jendouba\":\"TN-32\",\"Kairouan\":\"TN-41\",\"Kasserine\":\"TN-42\",\"Kebili\":\"TN-73\",\"L\'Ariana\":\"TN-12\",\"La Manouba\":\"TN-14\",\"Le Kef\":\"TN-33\",\"Mahdia\":\"TN-53\",\"Medenine\":\"TN-82\",\"Monastir\":\"TN-52\",\"Nabeul\":\"TN-21\",\"Sfax\":\"TN-61\",\"Sidi Bouzid\":\"TN-43\",\"Siliana\":\"TN-34\",\"Sousse\":\"TN-51\",\"Tataouine\":\"TN-83\",\"Tozeur\":\"TN-72\",\"Tunis\":\"TN-11\",\"Zaghouan\":\"TN-22\"},\"TO\":{\"Niuas\":\"TO-03\",\"Tongatapu\":\"TO-04\"},\"TR\":{\"Adana\":\"TR-01\",\"Adiyaman\":\"TR-02\",\"Afyonkarahisar\":\"TR-03\",\"Agri\":\"TR-04\",\"Aksaray\":\"TR-68\",\"Amasya\":\"TR-05\",\"Ankara\":\"TR-06\",\"Antalya\":\"TR-07\",\"Ardahan\":\"TR-75\",\"Artvin\":\"TR-08\",\"Aydin\":\"TR-09\",\"Balikesir\":\"TR-10\",\"Bartin\":\"TR-74\",\"Batman\":\"TR-72\",\"Bayburt\":\"TR-69\",\"Bilecik\":\"TR-11\",\"Bingol\":\"TR-12\",\"Bitlis\":\"TR-13\",\"Bolu\":\"TR-14\",\"Burdur\":\"TR-15\",\"Bursa\":\"TR-16\",\"Canakkale\":\"TR-17\",\"Cankiri\":\"TR-18\",\"Corum\":\"TR-19\",\"Denizli\":\"TR-20\",\"Diyarbakir\":\"TR-21\",\"Duzce\":\"TR-81\",\"Edirne\":\"TR-22\",\"Elazig\":\"TR-23\",\"Erzincan\":\"TR-24\",\"Erzurum\":\"TR-25\",\"Eskisehir\":\"TR-26\",\"Gaziantep\":\"TR-27\",\"Giresun\":\"TR-28\",\"Gumushane\":\"TR-29\",\"Hakkari\":\"TR-30\",\"Hatay\":\"TR-31\",\"Igdir\":\"TR-76\",\"Isparta\":\"TR-32\",\"Istanbul\":\"TR-34\",\"Izmir\":\"TR-35\",\"Kahramanmaras\":\"TR-46\",\"Karabuk\":\"TR-78\",\"Karaman\":\"TR-70\",\"Kars\":\"TR-36\",\"Kastamonu\":\"TR-37\",\"Kayseri\":\"TR-38\",\"Kilis\":\"TR-79\",\"Kirikkale\":\"TR-71\",\"Kirklareli\":\"TR-39\",\"Kirsehir\":\"TR-40\",\"Kocaeli\":\"TR-41\",\"Konya\":\"TR-42\",\"Kutahya\":\"TR-43\",\"Malatya\":\"TR-44\",\"Manisa\":\"TR-45\",\"Mardin\":\"TR-47\",\"Mersin\":\"TR-33\",\"Mugla\":\"TR-48\",\"Mus\":\"TR-49\",\"Nevsehir\":\"TR-50\",\"Nigde\":\"TR-51\",\"Ordu\":\"TR-52\",\"Osmaniye\":\"TR-80\",\"Rize\":\"TR-53\",\"Sakarya\":\"TR-54\",\"Samsun\":\"TR-55\",\"Sanliurfa\":\"TR-63\",\"Siirt\":\"TR-56\",\"Sinop\":\"TR-57\",\"Sirnak\":\"TR-73\",\"Sivas\":\"TR-58\",\"Tekirdag\":\"TR-59\",\"Tokat\":\"TR-60\",\"Trabzon\":\"TR-61\",\"Tunceli\":\"TR-62\",\"Usak\":\"TR-64\",\"Van\":\"TR-65\",\"Yalova\":\"TR-77\",\"Yozgat\":\"TR-66\",\"Zonguldak\":\"TR-67\"},\"TT\":{\"Arima\":\"TT-ARI\",\"Chaguanas\":\"TT-CHA\",\"Couva-Tabaquite-Talparo\":\"TT-CTT\",\"Diego Martin\":\"TT-DMN\",\"Mayaro-Rio Claro\":\"TT-MRC\",\"Penal-Debe\":\"TT-PED\",\"Point Fortin\":\"TT-PTF\",\"Port of Spain\":\"TT-POS\",\"Princes Town\":\"TT-PRT\",\"San Fernando\":\"TT-SFO\",\"San Juan-Laventille\":\"TT-SJL\",\"Sangre Grande\":\"TT-SGE\",\"Siparia\":\"TT-SIP\",\"Tobago\":\"TT-TOB\",\"Tunapuna-Piarco\":\"TT-TUP\"},\"DE\":{\"Baden-Wurttemberg\":\"DE-BW\",\"Bayern\":\"DE-BY\",\"Berlin\":\"DE-BE\",\"Brandenburg\":\"DE-BB\",\"Bremen\":\"DE-HB\",\"Hamburg\":\"DE-HH\",\"Hessen\":\"DE-HE\",\"Mecklenburg-Vorpommern\":\"DE-MV\",\"Niedersachsen\":\"DE-NI\",\"Nordrhein-Westfalen\":\"DE-NW\",\"Rheinland-Pfalz\":\"DE-RP\",\"Saarland\":\"DE-SL\",\"Sachsen\":\"DE-SN\",\"Sachsen-Anhalt\":\"DE-ST\",\"Schleswig-Holstein\":\"DE-SH\",\"Thuringen\":\"DE-TH\"},\"TV\":{\"Funafuti\":\"TV-FUN\"},\"TW\":{\"Changhua\":\"TW-CHA\",\"Chiayi\":\"TW-CYQ\",\"Hsinchu\":\"TW-HSQ\",\"Hualien\":\"TW-HUA\",\"Kaohsiung\":\"TW-KHH\",\"Keelung\":\"TW-KEE\",\"Kinmen\":\"TW-KIN\",\"Lienchiang\":\"TW-LIE\",\"Miaoli\":\"TW-MIA\",\"Nantou\":\"TW-NAN\",\"New Taipei\":\"TW-NWT\",\"Penghu\":\"TW-PEN\",\"Pingtung\":\"TW-PIF\",\"Taichung\":\"TW-TXG\",\"Tainan\":\"TW-TNN\",\"Taipei\":\"TW-TPE\",\"Taitung\":\"TW-TTT\",\"Taoyuan\":\"TW-TAO\",\"Yilan\":\"TW-ILA\",\"Yunlin\":\"TW-YUN\"},\"TZ\":{\"Arusha\":\"TZ-01\",\"Dar es Salaam\":\"TZ-02\",\"Dodoma\":\"TZ-03\",\"Geita\":\"TZ-27\",\"Iringa\":\"TZ-04\",\"Kagera\":\"TZ-05\",\"Kaskazini Unguja\":\"TZ-07\",\"Katavi\":\"TZ-28\",\"Kigoma\":\"TZ-08\",\"Kilimanjaro\":\"TZ-09\",\"Kusini Unguja\":\"TZ-11\",\"Lindi\":\"TZ-12\",\"Manyara\":\"TZ-26\",\"Mara\":\"TZ-13\",\"Mbeya\":\"TZ-14\",\"Mjini Magharibi\":\"TZ-15\",\"Morogoro\":\"TZ-16\",\"Mtwara\":\"TZ-17\",\"Mwanza\":\"TZ-18\",\"Njombe\":\"TZ-29\",\"Pwani\":\"TZ-19\",\"Rukwa\":\"TZ-20\",\"Ruvuma\":\"TZ-21\",\"Shinyanga\":\"TZ-22\",\"Simiyu\":\"TZ-30\",\"Singida\":\"TZ-23\",\"Songwe\":\"TZ-31\",\"Tabora\":\"TZ-24\",\"Tanga\":\"TZ-25\"},\"DJ\":{\"Djibouti\":\"DJ-DJ\"},\"DK\":{\"Hovedstaden\":\"DK-84\",\"Midtjylland\":\"DK-82\",\"Nordjylland\":\"DK-81\",\"Sjaelland\":\"DK-85\",\"Syddanmark\":\"DK-83\"},\"DM\":{\"Saint Andrew\":\"DM-02\",\"Saint George\":\"DM-04\",\"Saint John\":\"DM-05\",\"Saint Patrick\":\"DM-09\",\"Saint Paul\":\"DM-10\"},\"DO\":{\"Azua\":\"DO-02\",\"Baoruco\":\"DO-03\",\"Barahona\":\"DO-04\",\"Dajabon\":\"DO-05\",\"Distrito Nacional (Santo Domingo)\":\"DO-01\",\"Duarte\":\"DO-06\",\"El Seibo\":\"DO-08\",\"Elias Pina\":\"DO-07\",\"Espaillat\":\"DO-09\",\"Hato Mayor\":\"DO-30\",\"Hermanas Mirabal\":\"DO-19\",\"Independencia\":\"DO-10\",\"La Altagracia\":\"DO-11\",\"La Romana\":\"DO-12\",\"La Vega\":\"DO-13\",\"Maria Trinidad Sanchez\":\"DO-14\",\"Monsenor Nouel\":\"DO-28\",\"Monte Cristi\":\"DO-15\",\"Monte Plata\":\"DO-29\",\"Peravia\":\"DO-17\",\"Puerto Plata\":\"DO-18\",\"Samana\":\"DO-20\",\"San Cristobal\":\"DO-21\",\"San Jose de Ocoa\":\"DO-31\",\"San Juan\":\"DO-22\",\"San Pedro de Macoris\":\"DO-23\",\"Sanchez Ramirez\":\"DO-24\",\"Santiago\":\"DO-25\",\"Santiago Rodriguez\":\"DO-26\",\"Valverde\":\"DO-27\"},\"UA\":{\"Avtonomna Respublika Krym\":\"UA-43\",\"Cherkaska oblast\":\"UA-71\",\"Chernihivska oblast\":\"UA-74\",\"Chernivetska oblast\":\"UA-77\",\"Dnipropetrovska oblast\":\"UA-12\",\"Donetska oblast\":\"UA-14\",\"Ivano-Frankivska oblast\":\"UA-26\",\"Kharkivska oblast\":\"UA-63\",\"Khersonska oblast\":\"UA-65\",\"Khmelnytska oblast\":\"UA-68\",\"Kirovohradska oblast\":\"UA-35\",\"Kyiv\":\"UA-30\",\"Kyivska oblast\":\"UA-32\",\"Luhanska oblast\":\"UA-09\",\"Lvivska oblast\":\"UA-46\",\"Mykolaivska oblast\":\"UA-48\",\"Odeska oblast\":\"UA-51\",\"Poltavska oblast\":\"UA-53\",\"Rivnenska oblast\":\"UA-56\",\"Sevastopol\":\"UA-40\",\"Sumska oblast\":\"UA-59\",\"Ternopilska oblast\":\"UA-61\",\"Vinnytska oblast\":\"UA-05\",\"Volynska oblast\":\"UA-07\",\"Zakarpatska oblast\":\"UA-21\",\"Zaporizka oblast\":\"UA-23\",\"Zhytomyrska oblast\":\"UA-18\"},\"UG\":{\"Alebtong\":\"UG-323\",\"Amuru\":\"UG-316\",\"Arua\":\"UG-303\",\"Bugiri\":\"UG-201\",\"Buikwe\":\"UG-117\",\"Bukedea\":\"UG-219\",\"Buvuma\":\"UG-120\",\"Gulu\":\"UG-304\",\"Hoima\":\"UG-403\",\"Iganga\":\"UG-203\",\"Jinja\":\"UG-204\",\"Kabale\":\"UG-404\",\"Kabarole\":\"UG-405\",\"Kalangala\":\"UG-101\",\"Kaliro\":\"UG-222\",\"Kalungu\":\"UG-122\",\"Kampala\":\"UG-102\",\"Kamuli\":\"UG-205\",\"Kamwenge\":\"UG-413\",\"Kapchorwa\":\"UG-206\",\"Kasese\":\"UG-406\",\"Kayunga\":\"UG-112\",\"Kibaale\":\"UG-407\",\"Kiboga\":\"UG-103\",\"Kiruhura\":\"UG-419\",\"Kisoro\":\"UG-408\",\"Kitgum\":\"UG-305\",\"Kyenjojo\":\"UG-415\",\"Lira\":\"UG-307\",\"Luwero\":\"UG-104\",\"Masaka\":\"UG-105\",\"Masindi\":\"UG-409\",\"Mayuge\":\"UG-214\",\"Mbale\":\"UG-209\",\"Mbarara\":\"UG-410\",\"Mitooma\":\"UG-423\",\"Mityana\":\"UG-115\",\"Mpigi\":\"UG-106\",\"Mubende\":\"UG-107\",\"Mukono\":\"UG-108\",\"Nakaseke\":\"UG-116\",\"Nakasongola\":\"UG-109\",\"Ntungamo\":\"UG-411\",\"Oyam\":\"UG-321\",\"Pallisa\":\"UG-210\",\"Rukungiri\":\"UG-412\",\"Sironko\":\"UG-215\",\"Soroti\":\"UG-211\",\"Wakiso\":\"UG-113\"},\"DZ\":{\"Adrar\":\"DZ-01\",\"Ain Defla\":\"DZ-44\",\"Ain Temouchent\":\"DZ-46\",\"Alger\":\"DZ-16\",\"Annaba\":\"DZ-23\",\"Batna\":\"DZ-05\",\"Bechar\":\"DZ-08\",\"Bejaia\":\"DZ-06\",\"Biskra\":\"DZ-07\",\"Blida\":\"DZ-09\",\"Bordj Bou Arreridj\":\"DZ-34\",\"Bouira\":\"DZ-10\",\"Boumerdes\":\"DZ-35\",\"Chlef\":\"DZ-02\",\"Constantine\":\"DZ-25\",\"Djelfa\":\"DZ-17\",\"El Bayadh\":\"DZ-32\",\"El Oued\":\"DZ-39\",\"El Tarf\":\"DZ-36\",\"Ghardaia\":\"DZ-47\",\"Guelma\":\"DZ-24\",\"Illizi\":\"DZ-33\",\"Jijel\":\"DZ-18\",\"Khenchela\":\"DZ-40\",\"Laghouat\":\"DZ-03\",\"M\'sila\":\"DZ-28\",\"Mascara\":\"DZ-29\",\"Medea\":\"DZ-26\",\"Mila\":\"DZ-43\",\"Mostaganem\":\"DZ-27\",\"Naama\":\"DZ-45\",\"Oran\":\"DZ-31\",\"Ouargla\":\"DZ-30\",\"Oum el Bouaghi\":\"DZ-04\",\"Relizane\":\"DZ-48\",\"Saida\":\"DZ-20\",\"Setif\":\"DZ-19\",\"Sidi Bel Abbes\":\"DZ-22\",\"Skikda\":\"DZ-21\",\"Souk Ahras\":\"DZ-41\",\"Tamanrasset\":\"DZ-11\",\"Tebessa\":\"DZ-12\",\"Tiaret\":\"DZ-14\",\"Tindouf\":\"DZ-37\",\"Tipaza\":\"DZ-42\",\"Tissemsilt\":\"DZ-38\",\"Tizi Ouzou\":\"DZ-15\",\"Tlemcen\":\"DZ-13\"},\"UM\":{\"Palmyra Atoll\":\"UM-95\"},\"US\":{\"Alabama\":\"US-AL\",\"Alaska\":\"US-AK\",\"Arizona\":\"US-AZ\",\"Arkansas\":\"US-AR\",\"California\":\"US-CA\",\"Colorado\":\"US-CO\",\"Connecticut\":\"US-CT\",\"Delaware\":\"US-DE\",\"District of Columbia\":\"US-DC\",\"Florida\":\"US-FL\",\"Georgia\":\"US-GA\",\"Hawaii\":\"US-HI\",\"Idaho\":\"US-ID\",\"Illinois\":\"US-IL\",\"Indiana\":\"US-IN\",\"Iowa\":\"US-IA\",\"Kansas\":\"US-KS\",\"Kentucky\":\"US-KY\",\"Louisiana\":\"US-LA\",\"Maine\":\"US-ME\",\"Maryland\":\"US-MD\",\"Massachusetts\":\"US-MA\",\"Michigan\":\"US-MI\",\"Minnesota\":\"US-MN\",\"Mississippi\":\"US-MS\",\"Missouri\":\"US-MO\",\"Montana\":\"US-MT\",\"Nebraska\":\"US-NE\",\"Nevada\":\"US-NV\",\"New Hampshire\":\"US-NH\",\"New Jersey\":\"US-NJ\",\"New Mexico\":\"US-NM\",\"New York\":\"US-NY\",\"North Carolina\":\"US-NC\",\"North Dakota\":\"US-ND\",\"Ohio\":\"US-OH\",\"Oklahoma\":\"US-OK\",\"Oregon\":\"US-OR\",\"Pennsylvania\":\"US-PA\",\"Rhode Island\":\"US-RI\",\"South Carolina\":\"US-SC\",\"South Dakota\":\"US-SD\",\"Tennessee\":\"US-TN\",\"Texas\":\"US-TX\",\"Utah\":\"US-UT\",\"Vermont\":\"US-VT\",\"Virginia\":\"US-VA\",\"Washington\":\"US-WA\",\"West Virginia\":\"US-WV\",\"Wisconsin\":\"US-WI\",\"Wyoming\":\"US-WY\"},\"EC\":{\"Azuay\":\"EC-A\",\"Bolivar\":\"EC-B\",\"Canar\":\"EC-F\",\"Carchi\":\"EC-C\",\"Chimborazo\":\"EC-H\",\"Cotopaxi\":\"EC-X\",\"El Oro\":\"EC-O\",\"Esmeraldas\":\"EC-E\",\"Galapagos\":\"EC-W\",\"Guayas\":\"EC-G\",\"Imbabura\":\"EC-I\",\"Loja\":\"EC-L\",\"Los Rios\":\"EC-R\",\"Manabi\":\"EC-M\",\"Morona Santiago\":\"EC-S\",\"Napo\":\"EC-N\",\"Orellana\":\"EC-D\",\"Pastaza\":\"EC-Y\",\"Pichincha\":\"EC-P\",\"Santa Elena\":\"EC-SE\",\"Santo Domingo de los Tsachilas\":\"EC-SD\",\"Sucumbios\":\"EC-U\",\"Tungurahua\":\"EC-T\",\"Zamora Chinchipe\":\"EC-Z\"},\"EE\":{\"Harjumaa\":\"EE-37\",\"Hiiumaa\":\"EE-39\",\"Ida-Virumaa\":\"EE-45\",\"Jarvamaa\":\"EE-52\",\"Jogevamaa\":\"EE-50\",\"Laane-Virumaa\":\"EE-60\",\"Laanemaa\":\"EE-56\",\"Parnumaa\":\"EE-68\",\"Polvamaa\":\"EE-64\",\"Raplamaa\":\"EE-71\",\"Saaremaa\":\"EE-74\",\"Tartumaa\":\"EE-79\",\"Valgamaa\":\"EE-81\",\"Viljandimaa\":\"EE-84\",\"Vorumaa\":\"EE-87\"},\"EG\":{\"Ad Daqahliyah\":\"EG-DK\",\"Al Bahr al Ahmar\":\"EG-BA\",\"Al Buhayrah\":\"EG-BH\",\"Al Fayyum\":\"EG-FYM\",\"Al Gharbiyah\":\"EG-GH\",\"Al Iskandariyah\":\"EG-ALX\",\"Al Isma\'iliyah\":\"EG-IS\",\"Al Jizah\":\"EG-GZ\",\"Al Minufiyah\":\"EG-MNF\",\"Al Minya\":\"EG-MN\",\"Al Qahirah\":\"EG-C\",\"Al Qalyubiyah\":\"EG-KB\",\"Al Uqsur\":\"EG-LX\",\"Al Wadi al Jadid\":\"EG-WAD\",\"As Suways\":\"EG-SUZ\",\"Ash Sharqiyah\":\"EG-SHR\",\"Aswan\":\"EG-ASN\",\"Asyut\":\"EG-AST\",\"Bani Suwayf\":\"EG-BNS\",\"Bur Sa\'id\":\"EG-PTS\",\"Dumyat\":\"EG-DT\",\"Janub Sina\'\":\"EG-JS\",\"Kafr ash Shaykh\":\"EG-KFS\",\"Matruh\":\"EG-MT\",\"Qina\":\"EG-KN\",\"Shamal Sina\'\":\"EG-SIN\",\"Suhaj\":\"EG-SHG\"},\"UY\":{\"Artigas\":\"UY-AR\",\"Canelones\":\"UY-CA\",\"Cerro Largo\":\"UY-CL\",\"Colonia\":\"UY-CO\",\"Durazno\":\"UY-DU\",\"Flores\":\"UY-FS\",\"Florida\":\"UY-FD\",\"Lavalleja\":\"UY-LA\",\"Maldonado\":\"UY-MA\",\"Montevideo\":\"UY-MO\",\"Paysandu\":\"UY-PA\",\"Rio Negro\":\"UY-RN\",\"Rivera\":\"UY-RV\",\"Rocha\":\"UY-RO\",\"Salto\":\"UY-SA\",\"San Jose\":\"UY-SJ\",\"Soriano\":\"UY-SO\",\"Tacuarembo\":\"UY-TA\",\"Treinta y Tres\":\"UY-TT\"},\"UZ\":{\"Andijon\":\"UZ-AN\",\"Buxoro\":\"UZ-BU\",\"Farg\'ona\":\"UZ-FA\",\"Jizzax\":\"UZ-JI\",\"Namangan\":\"UZ-NG\",\"Navoiy\":\"UZ-NW\",\"Qashqadaryo\":\"UZ-QA\",\"Qoraqalpog\'iston Respublikasi\":\"UZ-QR\",\"Samarqand\":\"UZ-SA\",\"Sirdaryo\":\"UZ-SI\",\"Surxondaryo\":\"UZ-SU\",\"Toshkent\":\"UZ-TK\",\"Xorazm\":\"UZ-XO\"},\"VA\":{\"Vatican City\":\"\"},\"VC\":{\"Charlotte\":\"VC-01\",\"Grenadines\":\"VC-06\",\"Saint George\":\"VC-04\",\"Saint Patrick\":\"VC-05\"},\"ER\":{\"Al Awsat\":\"ER-MA\"},\"ES\":{\"Andalucia\":\"ES-AN\",\"Aragon\":\"ES-AR\",\"Asturias, Principado de\":\"ES-AS\",\"Canarias\":\"ES-CN\",\"Cantabria\":\"ES-CB\",\"Castilla y Leon\":\"ES-CL\",\"Castilla-La Mancha\":\"ES-CM\",\"Catalunya\":\"ES-CT\",\"Ceuta\":\"ES-CE\",\"Extremadura\":\"ES-EX\",\"Galicia\":\"ES-GA\",\"Illes Balears\":\"ES-IB\",\"La Rioja\":\"ES-RI\",\"Madrid, Comunidad de\":\"ES-MD\",\"Melilla\":\"ES-ML\",\"Murcia, Region de\":\"ES-MC\",\"Navarra, Comunidad Foral de\":\"ES-NC\",\"Pais Vasco\":\"ES-PV\",\"Valenciana, Comunidad\":\"ES-VC\"},\"VE\":{\"Amazonas\":\"VE-Z\",\"Anzoategui\":\"VE-B\",\"Apure\":\"VE-C\",\"Aragua\":\"VE-D\",\"Barinas\":\"VE-E\",\"Bolivar\":\"VE-F\",\"Carabobo\":\"VE-G\",\"Cojedes\":\"VE-H\",\"Delta Amacuro\":\"VE-Y\",\"Distrito Capital\":\"VE-A\",\"Falcon\":\"VE-I\",\"Guarico\":\"VE-J\",\"La Guaira\":\"VE-X\",\"Lara\":\"VE-K\",\"Merida\":\"VE-L\",\"Miranda\":\"VE-M\",\"Monagas\":\"VE-N\",\"Nueva Esparta\":\"VE-O\",\"Portuguesa\":\"VE-P\",\"Sucre\":\"VE-R\",\"Tachira\":\"VE-S\",\"Trujillo\":\"VE-T\",\"Yaracuy\":\"VE-U\",\"Zulia\":\"VE-V\"},\"ET\":{\"Adis Abeba\":\"ET-AA\",\"Afar\":\"ET-AF\",\"Amara\":\"ET-AM\",\"Binshangul Gumuz\":\"ET-BE\",\"Dire Dawa\":\"ET-DD\",\"Hareri Hizb\":\"ET-HA\",\"Oromiya\":\"ET-OR\",\"Sumale\":\"ET-SO\",\"Tigray\":\"ET-TI\",\"YeDebub Biheroch Bihereseboch na Hizboch\":\"ET-SN\"},\"VG\":{\"Virgin Islands, British\":\"\"},\"VI\":{\"Virgin Islands, U.S.\":\"\"},\"VN\":{\"An Giang\":\"VN-44\",\"Ba Ria - Vung Tau\":\"VN-43\",\"Bac Giang\":\"VN-54\",\"Bac Kan\":\"VN-53\",\"Bac Lieu\":\"VN-55\",\"Bac Ninh\":\"VN-56\",\"Ben Tre\":\"VN-50\",\"Binh Dinh\":\"VN-31\",\"Binh Duong\":\"VN-57\",\"Binh Phuoc\":\"VN-58\",\"Binh Thuan\":\"VN-40\",\"Ca Mau\":\"VN-59\",\"Can Tho\":\"VN-CT\",\"Cao Bang\":\"VN-04\",\"Da Nang\":\"VN-DN\",\"Dak Lak\":\"VN-33\",\"Dak Nong\":\"VN-72\",\"Dien Bien\":\"VN-71\",\"Dong Nai\":\"VN-39\",\"Dong Thap\":\"VN-45\",\"Gia Lai\":\"VN-30\",\"Ha Giang\":\"VN-03\",\"Ha Nam\":\"VN-63\",\"Ha Noi\":\"VN-HN\",\"Ha Tinh\":\"VN-23\",\"Hai Duong\":\"VN-61\",\"Hai Phong\":\"VN-HP\",\"Ho Chi Minh\":\"VN-SG\",\"Hoa Binh\":\"VN-14\",\"Hung Yen\":\"VN-66\",\"Khanh Hoa\":\"VN-34\",\"Kien Giang\":\"VN-47\",\"Kon Tum\":\"VN-28\",\"Lai Chau\":\"VN-01\",\"Lam Dong\":\"VN-35\",\"Lang Son\":\"VN-09\",\"Lao Cai\":\"VN-02\",\"Long An\":\"VN-41\",\"Nam Dinh\":\"VN-67\",\"Nghe An\":\"VN-22\",\"Ninh Binh\":\"VN-18\",\"Ninh Thuan\":\"VN-36\",\"Phu Tho\":\"VN-68\",\"Phu Yen\":\"VN-32\",\"Quang Binh\":\"VN-24\",\"Quang Nam\":\"VN-27\",\"Quang Ngai\":\"VN-29\",\"Quang Ninh\":\"VN-13\",\"Quang Tri\":\"VN-25\",\"Soc Trang\":\"VN-52\",\"Son La\":\"VN-05\",\"Tay Ninh\":\"VN-37\",\"Thai Binh\":\"VN-20\",\"Thai Nguyen\":\"VN-69\",\"Thanh Hoa\":\"VN-21\",\"Thua Thien-Hue\":\"VN-26\",\"Tien Giang\":\"VN-46\",\"Tra Vinh\":\"VN-51\",\"Tuyen Quang\":\"VN-07\",\"Vinh Long\":\"VN-49\",\"Vinh Phuc\":\"VN-70\",\"Yen Bai\":\"VN-06\"},\"VU\":{\"Shefa\":\"VU-SEE\",\"Tafea\":\"VU-TAE\",\"Torba\":\"VU-TOB\"},\"FI\":{\"Etela-Karjala\":\"FI-02\",\"Etela-Pohjanmaa\":\"FI-03\",\"Etela-Savo\":\"FI-04\",\"Kainuu\":\"FI-05\",\"Kanta-Hame\":\"FI-06\",\"Keski-Pohjanmaa\":\"FI-07\",\"Keski-Suomi\":\"FI-08\",\"Kymenlaakso\":\"FI-09\",\"Lappi\":\"FI-10\",\"Paijat-Hame\":\"FI-16\",\"Pirkanmaa\":\"FI-11\",\"Pohjanmaa\":\"FI-12\",\"Pohjois-Karjala\":\"FI-13\",\"Pohjois-Pohjanmaa\":\"FI-14\",\"Pohjois-Savo\":\"FI-15\",\"Satakunta\":\"FI-17\",\"Uusimaa\":\"FI-18\",\"Varsinais-Suomi\":\"FI-19\"},\"FJ\":{\"Central\":\"FJ-C\",\"Eastern\":\"FJ-E\",\"Northern\":\"FJ-N\",\"Rotuma\":\"FJ-R\",\"Western\":\"FJ-W\"},\"FK\":{\"Falkland Islands (Malvinas)\":\"\"},\"FM\":{\"Chuuk\":\"FM-TRK\",\"Kosrae\":\"FM-KSA\",\"Pohnpei\":\"FM-PNI\",\"Yap\":\"FM-YAP\"},\"FO\":{\"Eysturoy\":\"\",\"Nordoyar\":\"\",\"Streymoy\":\"\",\"Suduroy\":\"\",\"Vagar\":\"\"},\"FR\":{\"Auvergne-Rhone-Alpes\":\"FR-ARA\",\"Bourgogne-Franche-Comte\":\"FR-BFC\",\"Bretagne\":\"FR-BRE\",\"Centre-Val de Loire\":\"FR-CVL\",\"Corse\":\"FR-20R\",\"Grand-Est\":\"FR-GES\",\"Hauts-de-France\":\"FR-HDF\",\"Ile-de-France\":\"FR-IDF\",\"Normandie\":\"FR-NOR\",\"Nouvelle-Aquitaine\":\"FR-NAQ\",\"Occitanie\":\"FR-OCC\",\"Pays-de-la-Loire\":\"FR-PDL\",\"Provence-Alpes-Cote-d\'Azur\":\"FR-PAC\"},\"WF\":{\"Sigave\":\"WF-SG\",\"Uvea\":\"WF-UV\"},\"GA\":{\"Estuaire\":\"GA-1\",\"Haut-Ogooue\":\"GA-2\",\"Ngounie\":\"GA-4\",\"Ogooue-Maritime\":\"GA-8\",\"Woleu-Ntem\":\"GA-9\"},\"GB\":{\"England\":\"GB-ENG\",\"Northern Ireland\":\"GB-NIR\",\"Scotland\":\"GB-SCT\",\"Wales\":\"GB-WLS\"},\"WS\":{\"Atua\":\"WS-AT\",\"Fa\'asaleleaga\":\"WS-FA\",\"Tuamasaga\":\"WS-TU\"},\"GD\":{\"Saint Andrew\":\"GD-01\",\"Saint David\":\"GD-02\",\"Saint George\":\"GD-03\",\"Saint John\":\"GD-04\",\"Saint Mark\":\"GD-05\",\"Southern Grenadine Islands\":\"GD-10\"},\"GE\":{\"Abkhazia\":\"GE-AB\",\"Ajaria\":\"GE-AJ\",\"Guria\":\"GE-GU\",\"Imereti\":\"GE-IM\",\"K\'akheti\":\"GE-KA\",\"Kvemo Kartli\":\"GE-KK\",\"Mtskheta-Mtianeti\":\"GE-MM\",\"Rach\'a-Lechkhumi-Kvemo Svaneti\":\"GE-RL\",\"Samegrelo-Zemo Svaneti\":\"GE-SZ\",\"Samtskhe-Javakheti\":\"GE-SJ\",\"Shida Kartli\":\"GE-SK\",\"Tbilisi\":\"GE-TB\"},\"GF\":{\"Guyane\":\"\"},\"GG\":{\"Guernsey\":\"\"},\"GH\":{\"Ashanti\":\"GH-AH\",\"Bono\":\"GH-BO\",\"Bono East\":\"GH-BE\",\"Central\":\"GH-CP\",\"Eastern\":\"GH-EP\",\"Greater Accra\":\"GH-AA\",\"Northern\":\"GH-NP\",\"Upper East\":\"GH-UE\",\"Volta\":\"GH-TV\",\"Western\":\"GH-WP\"},\"GI\":{\"Gibraltar\":\"\"},\"GL\":{\"Avannaata Kommunia\":\"GL-AV\",\"Kommune Kujalleq\":\"GL-KU\",\"Kommune Qeqertalik\":\"GL-QT\",\"Kommuneqarfik Sermersooq\":\"GL-SM\",\"Qeqqata Kommunia\":\"GL-QE\"},\"GM\":{\"Banjul\":\"GM-B\",\"Central River\":\"GM-M\",\"Lower River\":\"GM-L\",\"North Bank\":\"GM-N\",\"Upper River\":\"GM-U\",\"Western\":\"GM-W\"},\"GN\":{\"Boffa\":\"GN-BF\",\"Boke\":\"GN-B\",\"Conakry\":\"GN-C\",\"Coyah\":\"GN-CO\",\"Dabola\":\"GN-DB\",\"Kankan\":\"GN-K\",\"Kindia\":\"GN-D\",\"Labe\":\"GN-LA\",\"Nzerekore\":\"GN-N\",\"Siguiri\":\"GN-SI\"},\"GP\":{\"Guadeloupe\":\"\"},\"GQ\":{\"Bioko Norte\":\"GQ-BN\",\"Litoral\":\"GQ-LI\",\"Wele-Nzas\":\"GQ-WN\"},\"GR\":{\"Agion Oros\":\"GR-69\",\"Anatoliki Makedonia kai Thraki\":\"GR-A\",\"Attiki\":\"GR-I\",\"Dytiki Ellada\":\"GR-G\",\"Dytiki Makedonia\":\"GR-C\",\"Ionia Nisia\":\"GR-F\",\"Ipeiros\":\"GR-D\",\"Kentriki Makedonia\":\"GR-B\",\"Kriti\":\"GR-M\",\"Notio Aigaio\":\"GR-L\",\"Peloponnisos\":\"GR-J\",\"Sterea Ellada\":\"GR-H\",\"Thessalia\":\"GR-E\",\"Voreio Aigaio\":\"GR-K\"},\"GS\":{\"South Georgia and the South Sandwich Islands\":\"\"},\"GT\":{\"Alta Verapaz\":\"GT-AV\",\"Baja Verapaz\":\"GT-BV\",\"Chimaltenango\":\"GT-CM\",\"Chiquimula\":\"GT-CQ\",\"El Progreso\":\"GT-PR\",\"Escuintla\":\"GT-ES\",\"Guatemala\":\"GT-GU\",\"Huehuetenango\":\"GT-HU\",\"Izabal\":\"GT-IZ\",\"Jalapa\":\"GT-JA\",\"Jutiapa\":\"GT-JU\",\"Peten\":\"GT-PE\",\"Quetzaltenango\":\"GT-QZ\",\"Quiche\":\"GT-QC\",\"Retalhuleu\":\"GT-RE\",\"Sacatepequez\":\"GT-SA\",\"San Marcos\":\"GT-SM\",\"Santa Rosa\":\"GT-SR\",\"Solola\":\"GT-SO\",\"Suchitepequez\":\"GT-SU\",\"Totonicapan\":\"GT-TO\",\"Zacapa\":\"GT-ZA\"},\"GU\":{\"Agat\":\"\",\"Barrigada\":\"\",\"Chalan Pago-Ordot\":\"\",\"Dededo\":\"\",\"Hagatna\":\"\",\"Inarajan\":\"\",\"Mangilao\":\"\",\"Mongmong-Toto-Maite\":\"\",\"Piti\":\"\",\"Santa Rita\":\"\",\"Sinajana\":\"\",\"Talofofo\":\"\",\"Tamuning-Tumon-Harmon\":\"\",\"Yigo\":\"\",\"Yona\":\"\"},\"GW\":{\"Bissau\":\"GW-BS\",\"Gabu\":\"GW-GA\"},\"GY\":{\"Barima-Waini\":\"GY-BA\",\"Cuyuni-Mazaruni\":\"GY-CU\",\"Demerara-Mahaica\":\"GY-DE\",\"East Berbice-Corentyne\":\"GY-EB\",\"Essequibo Islands-West Demerara\":\"GY-ES\",\"Mahaica-Berbice\":\"GY-MA\",\"Potaro-Siparuni\":\"GY-PT\",\"Upper Demerara-Berbice\":\"GY-UD\"},\"HK\":{\"Hong Kong\":\"CN-HK\"},\"HN\":{\"Atlantida\":\"HN-AT\",\"Choluteca\":\"HN-CH\",\"Colon\":\"HN-CL\",\"Comayagua\":\"HN-CM\",\"Copan\":\"HN-CP\",\"Cortes\":\"HN-CR\",\"El Paraiso\":\"HN-EP\",\"Francisco Morazan\":\"HN-FM\",\"Intibuca\":\"HN-IN\",\"Islas de la Bahia\":\"HN-IB\",\"La Paz\":\"HN-LP\",\"Lempira\":\"HN-LE\",\"Ocotepeque\":\"HN-OC\",\"Olancho\":\"HN-OL\",\"Santa Barbara\":\"HN-SB\",\"Valle\":\"HN-VA\",\"Yoro\":\"HN-YO\"},\"HR\":{\"Bjelovarsko-bilogorska zupanija\":\"HR-07\",\"Brodsko-posavska zupanija\":\"HR-12\",\"Dubrovacko-neretvanska zupanija\":\"HR-19\",\"Grad Zagreb\":\"HR-21\",\"Istarska zupanija\":\"HR-18\",\"Karlovacka zupanija\":\"HR-04\",\"Koprivnicko-krizevacka zupanija\":\"HR-06\",\"Krapinsko-zagorska zupanija\":\"HR-02\",\"Licko-senjska zupanija\":\"HR-09\",\"Medimurska zupanija\":\"HR-20\",\"Osjecko-baranjska zupanija\":\"HR-14\",\"Pozesko-slavonska zupanija\":\"HR-11\",\"Primorsko-goranska zupanija\":\"HR-08\",\"Sibensko-kninska zupanija\":\"HR-15\",\"Sisacko-moslavacka zupanija\":\"HR-03\",\"Splitsko-dalmatinska zupanija\":\"HR-17\",\"Varazdinska zupanija\":\"HR-05\",\"Viroviticko-podravska zupanija\":\"HR-10\",\"Vukovarsko-srijemska zupanija\":\"HR-16\",\"Zadarska zupanija\":\"HR-13\",\"Zagrebacka zupanija\":\"HR-01\"},\"YE\":{\"\'Adan\":\"YE-AD\",\"\'Amran\":\"YE-AM\",\"Abyan\":\"YE-AB\",\"Ad Dali\'\":\"YE-DA\",\"Al Bayda\'\":\"YE-BA\",\"Al Hudaydah\":\"YE-HU\",\"Al Mahrah\":\"YE-MR\",\"Amanat al \'Asimah\":\"YE-SA\",\"Dhamar\":\"YE-DH\",\"Hadramawt\":\"YE-HD\",\"Hajjah\":\"YE-HJ\",\"Ibb\":\"YE-IB\",\"Lahij\":\"YE-LA\",\"Ma\'rib\":\"YE-MA\",\"Sa\'dah\":\"YE-SD\",\"San\'a\'\":\"YE-SN\",\"Shabwah\":\"YE-SH\",\"Ta\'izz\":\"YE-TA\"},\"HT\":{\"Artibonite\":\"HT-AR\",\"Centre\":\"HT-CE\",\"Nord\":\"HT-ND\",\"Nord-Est\":\"HT-NE\",\"Ouest\":\"HT-OU\",\"Sud\":\"HT-SD\",\"Sud-Est\":\"HT-SE\"},\"HU\":{\"Bacs-Kiskun\":\"HU-BK\",\"Baranya\":\"HU-BA\",\"Bekes\":\"HU-BE\",\"Borsod-Abauj-Zemplen\":\"HU-BZ\",\"Budapest\":\"HU-BU\",\"Csongrad\":\"HU-CS\",\"Fejer\":\"HU-FE\",\"Gyor-Moson-Sopron\":\"HU-GS\",\"Hajdu-Bihar\":\"HU-HB\",\"Heves\":\"HU-HE\",\"Jasz-Nagykun-Szolnok\":\"HU-JN\",\"Komarom-Esztergom\":\"HU-KE\",\"Nograd\":\"HU-NO\",\"Pest\":\"HU-PE\",\"Somogy\":\"HU-SO\",\"Szabolcs-Szatmar-Bereg\":\"HU-SZ\",\"Tolna\":\"HU-TO\",\"Vas\":\"HU-VA\",\"Veszprem\":\"HU-VE\",\"Zala\":\"HU-ZA\"},\"YT\":{\"Bandraboua\":\"\",\"Bandrele\":\"\",\"Mamoudzou\":\"\",\"Ouangani\":\"\",\"Pamandzi\":\"\",\"Sada\":\"\"},\"ID\":{\"Aceh\":\"ID-AC\",\"Bali\":\"ID-BA\",\"Banten\":\"ID-BT\",\"Bengkulu\":\"ID-BE\",\"Gorontalo\":\"ID-GO\",\"Jakarta Raya\":\"ID-JK\",\"Jambi\":\"ID-JA\",\"Jawa Barat\":\"ID-JB\",\"Jawa Tengah\":\"ID-JT\",\"Jawa Timur\":\"ID-JI\",\"Kalimantan Barat\":\"ID-KB\",\"Kalimantan Selatan\":\"ID-KS\",\"Kalimantan Tengah\":\"ID-KT\",\"Kalimantan Timur\":\"ID-KI\",\"Kalimantan Utara\":\"ID-KU\",\"Kepulauan Bangka Belitung\":\"ID-BB\",\"Kepulauan Riau\":\"ID-KR\",\"Lampung\":\"ID-LA\",\"Maluku\":\"ID-ML\",\"Maluku Utara\":\"ID-MU\",\"Nusa Tenggara Barat\":\"ID-NB\",\"Nusa Tenggara Timur\":\"ID-NT\",\"Papua\":\"ID-PP\",\"Papua Barat\":\"ID-PB\",\"Riau\":\"ID-RI\",\"Sulawesi Barat\":\"ID-SR\",\"Sulawesi Selatan\":\"ID-SN\",\"Sulawesi Tengah\":\"ID-ST\",\"Sulawesi Tenggara\":\"ID-SG\",\"Sulawesi Utara\":\"ID-SA\",\"Sumatera Barat\":\"ID-SB\",\"Sumatera Selatan\":\"ID-SS\",\"Sumatera Utara\":\"ID-SU\",\"Yogyakarta\":\"ID-YO\"},\"IE\":{\"Carlow\":\"IE-CW\",\"Cavan\":\"IE-CN\",\"Clare\":\"IE-CE\",\"Cork\":\"IE-CO\",\"Donegal\":\"IE-DL\",\"Dublin\":\"IE-D\",\"Galway\":\"IE-G\",\"Kerry\":\"IE-KY\",\"Kildare\":\"IE-KE\",\"Kilkenny\":\"IE-KK\",\"Laois\":\"IE-LS\",\"Leitrim\":\"IE-LM\",\"Limerick\":\"IE-LK\",\"Longford\":\"IE-LD\",\"Louth\":\"IE-LH\",\"Mayo\":\"IE-MO\",\"Meath\":\"IE-MH\",\"Monaghan\":\"IE-MN\",\"Offaly\":\"IE-OY\",\"Roscommon\":\"IE-RN\",\"Sligo\":\"IE-SO\",\"Tipperary\":\"IE-TA\",\"Waterford\":\"IE-WD\",\"Westmeath\":\"IE-WH\",\"Wexford\":\"IE-WX\",\"Wicklow\":\"IE-WW\"},\"IL\":{\"HaDarom\":\"IL-D\",\"HaMerkaz\":\"IL-M\",\"HaTsafon\":\"IL-Z\",\"Hefa\":\"IL-HA\",\"Tel Aviv\":\"IL-TA\",\"Yerushalayim\":\"IL-JM\"},\"IM\":{\"Isle of Man\":\"\"},\"IN\":{\"Andaman and Nicobar Islands\":\"IN-AN\",\"Andhra Pradesh\":\"IN-AP\",\"Arunachal Pradesh\":\"IN-AR\",\"Assam\":\"IN-AS\",\"Bihar\":\"IN-BR\",\"Chandigarh\":\"IN-CH\",\"Chhattisgarh\":\"IN-CT\",\"Dadra and Nagar Haveli\":\"IN-DN\",\"Dadra and Nagar Haveli and Daman and Diu\":\"IN-DH\",\"Delhi\":\"IN-DL\",\"Goa\":\"IN-GA\",\"Gujarat\":\"IN-GJ\",\"Haryana\":\"IN-HR\",\"Himachal Pradesh\":\"IN-HP\",\"Jammu and Kashmir\":\"IN-JK\",\"Jharkhand\":\"IN-JH\",\"Karnataka\":\"IN-KA\",\"Kerala\":\"IN-KL\",\"Lakshadweep\":\"IN-LD\",\"Madhya Pradesh\":\"IN-MP\",\"Maharashtra\":\"IN-MH\",\"Manipur\":\"IN-MN\",\"Meghalaya\":\"IN-ML\",\"Mizoram\":\"IN-MZ\",\"Nagaland\":\"IN-NL\",\"Odisha\":\"IN-OR\",\"Puducherry\":\"IN-PY\",\"Punjab\":\"IN-PB\",\"Rajasthan\":\"IN-RJ\",\"Sikkim\":\"IN-SK\",\"Tamil Nadu\":\"IN-TN\",\"Telangana\":\"IN-TG\",\"Tripura\":\"IN-TR\",\"Uttar Pradesh\":\"IN-UP\",\"Uttarakhand\":\"IN-UT\",\"West Bengal\":\"IN-WB\"},\"IO\":{\"British Indian Ocean Territory\":\"\"},\"ZA\":{\"Eastern Cape\":\"ZA-EC\",\"Free State\":\"ZA-FS\",\"Gauteng\":\"ZA-GP\",\"Kwazulu-Natal\":\"ZA-KZN\",\"Limpopo\":\"ZA-LP\",\"Mpumalanga\":\"ZA-MP\",\"North-West\":\"ZA-NW\",\"Northern Cape\":\"ZA-NC\",\"Western Cape\":\"ZA-WC\"},\"IQ\":{\"Al Anbar\":\"IQ-AN\",\"Al Basrah\":\"IQ-BA\",\"Al Muthanna\":\"IQ-MU\",\"Al Qadisiyah\":\"IQ-QA\",\"An Najaf\":\"IQ-NA\",\"Arbil\":\"IQ-AR\",\"As Sulaymaniyah\":\"IQ-SU\",\"Babil\":\"IQ-BB\",\"Baghdad\":\"IQ-BG\",\"Dahuk\":\"IQ-DA\",\"Dhi Qar\":\"IQ-DQ\",\"Diyala\":\"IQ-DI\",\"Karbala\'\":\"IQ-KA\",\"Kirkuk\":\"IQ-KI\",\"Maysan\":\"IQ-MA\",\"Ninawa\":\"IQ-NI\",\"Salah ad Din\":\"IQ-SD\",\"Wasit\":\"IQ-WA\"},\"IR\":{\"Alborz\":\"IR-30\",\"Ardabil\":\"IR-24\",\"Azarbayjan-e Gharbi\":\"IR-04\",\"Azarbayjan-e Sharqi\":\"IR-03\",\"Bushehr\":\"IR-18\",\"Chahar Mahal va Bakhtiari\":\"IR-14\",\"Esfahan\":\"IR-10\",\"Fars\":\"IR-07\",\"Gilan\":\"IR-01\",\"Golestan\":\"IR-27\",\"Hamadan\":\"IR-13\",\"Hormozgan\":\"IR-22\",\"Ilam\":\"IR-16\",\"Kerman\":\"IR-08\",\"Kermanshah\":\"IR-05\",\"Khorasan-e Jonubi\":\"IR-29\",\"Khorasan-e Razavi\":\"IR-09\",\"Khorasan-e Shomali\":\"IR-28\",\"Khuzestan\":\"IR-06\",\"Kohgiluyeh va Bowyer Ahmad\":\"IR-17\",\"Kordestan\":\"IR-12\",\"Lorestan\":\"IR-15\",\"Markazi\":\"IR-00\",\"Mazandaran\":\"IR-02\",\"Qazvin\":\"IR-26\",\"Qom\":\"IR-25\",\"Semnan\":\"IR-20\",\"Sistan va Baluchestan\":\"IR-11\",\"Tehran\":\"IR-23\",\"Yazd\":\"IR-21\",\"Zanjan\":\"IR-19\"},\"IS\":{\"Austurland\":\"IS-7\",\"Hofudborgarsvaedi\":\"IS-1\",\"Nordurland eystra\":\"IS-6\",\"Nordurland vestra\":\"IS-5\",\"Sudurland\":\"IS-8\",\"Sudurnes\":\"IS-2\",\"Vestfirdir\":\"IS-4\",\"Vesturland\":\"IS-3\"},\"IT\":{\"Abruzzo\":\"IT-65\",\"Basilicata\":\"IT-77\",\"Calabria\":\"IT-78\",\"Campania\":\"IT-72\",\"Emilia-Romagna\":\"IT-45\",\"Friuli-Venezia Giulia\":\"IT-36\",\"Lazio\":\"IT-62\",\"Liguria\":\"IT-42\",\"Lombardia\":\"IT-25\",\"Marche\":\"IT-57\",\"Molise\":\"IT-67\",\"Piemonte\":\"IT-21\",\"Puglia\":\"IT-75\",\"Sardegna\":\"IT-88\",\"Sicilia\":\"IT-82\",\"Toscana\":\"IT-52\",\"Trentino-Alto Adige\":\"IT-32\",\"Umbria\":\"IT-55\",\"Valle d\'Aosta\":\"IT-23\",\"Veneto\":\"IT-34\"},\"ZM\":{\"Central\":\"ZM-02\",\"Copperbelt\":\"ZM-08\",\"Eastern\":\"ZM-03\",\"Luapula\":\"ZM-04\",\"Lusaka\":\"ZM-09\",\"Muchinga\":\"ZM-10\",\"North-Western\":\"ZM-06\",\"Northern\":\"ZM-05\",\"Southern\":\"ZM-07\",\"Western\":\"ZM-01\"},\"JE\":{\"Jersey\":\"\"},\"ZW\":{\"Bulawayo\":\"ZW-BU\",\"Harare\":\"ZW-HA\",\"Manicaland\":\"ZW-MA\",\"Mashonaland Central\":\"ZW-MC\",\"Mashonaland East\":\"ZW-ME\",\"Mashonaland West\":\"ZW-MW\",\"Masvingo\":\"ZW-MV\",\"Matabeleland North\":\"ZW-MN\",\"Matabeleland South\":\"ZW-MS\",\"Midlands\":\"ZW-MI\"},\"JM\":{\"Clarendon\":\"JM-13\",\"Hanover\":\"JM-09\",\"Kingston\":\"JM-01\",\"Manchester\":\"JM-12\",\"Portland\":\"JM-04\",\"Saint Andrew\":\"JM-02\",\"Saint Ann\":\"JM-06\",\"Saint Catherine\":\"JM-14\",\"Saint Elizabeth\":\"JM-11\",\"Saint James\":\"JM-08\",\"Saint Mary\":\"JM-05\",\"Saint Thomas\":\"JM-03\",\"Trelawny\":\"JM-07\",\"Westmoreland\":\"JM-10\"},\"JO\":{\"\'Ajlun\":\"JO-AJ\",\"Al \'Aqabah\":\"JO-AQ\",\"Al \'Asimah\":\"JO-AM\",\"Al Balqa\'\":\"JO-BA\",\"Al Karak\":\"JO-KA\",\"Al Mafraq\":\"JO-MA\",\"At Tafilah\":\"JO-AT\",\"Az Zarqa\'\":\"JO-AZ\",\"Irbid\":\"JO-IR\",\"Jarash\":\"JO-JA\",\"Ma\'an\":\"JO-MN\",\"Madaba\":\"JO-MD\"},\"JP\":{\"Aichi\":\"JP-23\",\"Akita\":\"JP-05\",\"Aomori\":\"JP-02\",\"Chiba\":\"JP-12\",\"Ehime\":\"JP-38\",\"Fukui\":\"JP-18\",\"Fukuoka\":\"JP-40\",\"Fukushima\":\"JP-07\",\"Gifu\":\"JP-21\",\"Gunma\":\"JP-10\",\"Hiroshima\":\"JP-34\",\"Hokkaido\":\"JP-01\",\"Hyogo\":\"JP-28\",\"Ibaraki\":\"JP-08\",\"Ishikawa\":\"JP-17\",\"Iwate\":\"JP-03\",\"Kagawa\":\"JP-37\",\"Kagoshima\":\"JP-46\",\"Kanagawa\":\"JP-14\",\"Kochi\":\"JP-39\",\"Kumamoto\":\"JP-43\",\"Kyoto\":\"JP-26\",\"Mie\":\"JP-24\",\"Miyagi\":\"JP-04\",\"Miyazaki\":\"JP-45\",\"Nagano\":\"JP-20\",\"Nagasaki\":\"JP-42\",\"Nara\":\"JP-29\",\"Niigata\":\"JP-15\",\"Oita\":\"JP-44\",\"Okayama\":\"JP-33\",\"Okinawa\":\"JP-47\",\"Osaka\":\"JP-27\",\"Saga\":\"JP-41\",\"Saitama\":\"JP-11\",\"Shiga\":\"JP-25\",\"Shimane\":\"JP-32\",\"Shizuoka\":\"JP-22\",\"Tochigi\":\"JP-09\",\"Tokushima\":\"JP-36\",\"Tokyo\":\"JP-13\",\"Tottori\":\"JP-31\",\"Toyama\":\"JP-16\",\"Wakayama\":\"JP-30\",\"Yamagata\":\"JP-06\",\"Yamaguchi\":\"JP-35\",\"Yamanashi\":\"JP-19\"},\"KE\":{\"Baringo\":\"KE-01\",\"Bomet\":\"KE-02\",\"Bungoma\":\"KE-03\",\"Busia\":\"KE-04\",\"Elgeyo/Marakwet\":\"KE-05\",\"Embu\":\"KE-06\",\"Garissa\":\"KE-07\",\"Homa Bay\":\"KE-08\",\"Isiolo\":\"KE-09\",\"Kajiado\":\"KE-10\",\"Kakamega\":\"KE-11\",\"Kericho\":\"KE-12\",\"Kiambu\":\"KE-13\",\"Kilifi\":\"KE-14\",\"Kirinyaga\":\"KE-15\",\"Kisii\":\"KE-16\",\"Kisumu\":\"KE-17\",\"Kitui\":\"KE-18\",\"Kwale\":\"KE-19\",\"Laikipia\":\"KE-20\",\"Lamu\":\"KE-21\",\"Machakos\":\"KE-22\",\"Makueni\":\"KE-23\",\"Mandera\":\"KE-24\",\"Marsabit\":\"KE-25\",\"Meru\":\"KE-26\",\"Migori\":\"KE-27\",\"Mombasa\":\"KE-28\",\"Murang\'a\":\"KE-29\",\"Nairobi City\":\"KE-30\",\"Nakuru\":\"KE-31\",\"Nandi\":\"KE-32\",\"Narok\":\"KE-33\",\"Nyamira\":\"KE-34\",\"Nyandarua\":\"KE-35\",\"Nyeri\":\"KE-36\",\"Siaya\":\"KE-38\",\"Taita/Taveta\":\"KE-39\",\"Tharaka-Nithi\":\"KE-41\",\"Trans Nzoia\":\"KE-42\",\"Turkana\":\"KE-43\",\"Uasin Gishu\":\"KE-44\",\"Wajir\":\"KE-46\"},\"KG\":{\"Batken\":\"KG-B\",\"Bishkek Shaary\":\"KG-GB\",\"Chuy\":\"KG-C\",\"Jalal-Abad\":\"KG-J\",\"Naryn\":\"KG-N\",\"Osh Shaary\":\"KG-GO\",\"Talas\":\"KG-T\",\"Ysyk-Kol\":\"KG-Y\"},\"KH\":{\"Baat Dambang\":\"KH-2\",\"Banteay Mean Choay\":\"KH-1\",\"Kampong Chaam\":\"KH-3\",\"Kampong Chhnang\":\"KH-4\",\"Kampong Spueu\":\"KH-5\",\"Kampong Thum\":\"KH-6\",\"Kampot\":\"KH-7\",\"Kandaal\":\"KH-8\",\"Kaoh Kong\":\"KH-9\",\"Kracheh\":\"KH-10\",\"Krong Kaeb\":\"KH-23\",\"Krong Pailin\":\"KH-24\",\"Mondol Kiri\":\"KH-11\",\"Phnom Penh\":\"KH-12\",\"Pousaat\":\"KH-15\",\"Preah Sihanouk\":\"KH-18\",\"Prey Veaeng\":\"KH-14\",\"Rotanak Kiri\":\"KH-16\",\"Siem Reab\":\"KH-17\",\"Stueng Traeng\":\"KH-19\",\"Svaay Rieng\":\"KH-20\",\"Taakaev\":\"KH-21\"},\"KI\":{\"Gilbert Islands\":\"KI-G\"},\"KM\":{\"Grande Comore\":\"KM-G\"},\"KN\":{\"Saint Anne Sandy Point\":\"KN-02\",\"Saint George Basseterre\":\"KN-03\",\"Saint James Windward\":\"KN-05\",\"Saint John Capisterre\":\"KN-06\",\"Saint John Figtree\":\"KN-07\",\"Saint Mary Cayon\":\"KN-08\",\"Saint Paul Capisterre\":\"KN-09\",\"Saint Paul Charlestown\":\"KN-10\",\"Saint Peter Basseterre\":\"KN-11\",\"Saint Thomas Lowland\":\"KN-12\",\"Saint Thomas Middle Island\":\"KN-13\"},\"KP\":{\"P\'yongyang\":\"KP-01\"},\"KR\":{\"Busan-gwangyeoksi\":\"KR-26\",\"Chungcheongbuk-do\":\"KR-43\",\"Chungcheongnam-do\":\"KR-44\",\"Daegu-gwangyeoksi\":\"KR-27\",\"Daejeon-gwangyeoksi\":\"KR-30\",\"Gangwon-do\":\"KR-42\",\"Gwangju-gwangyeoksi\":\"KR-29\",\"Gyeonggi-do\":\"KR-41\",\"Gyeongsangbuk-do\":\"KR-47\",\"Gyeongsangnam-do\":\"KR-48\",\"Incheon-gwangyeoksi\":\"KR-28\",\"Jeju-teukbyeoljachido\":\"KR-49\",\"Jeollabuk-do\":\"KR-45\",\"Jeollanam-do\":\"KR-46\",\"Seoul-teukbyeolsi\":\"KR-11\",\"Ulsan-gwangyeoksi\":\"KR-31\"},\"KW\":{\"Al \'Asimah\":\"KW-KU\",\"Al Ahmadi\":\"KW-AH\",\"Al Farwaniyah\":\"KW-FA\",\"Al Jahra\'\":\"KW-JA\",\"Hawalli\":\"KW-HA\",\"Mubarak al Kabir\":\"KW-MU\"},\"KY\":{\"Cayman Islands\":\"\"},\"KZ\":{\"Almaty\":\"KZ-ALA\",\"Almaty oblysy\":\"KZ-ALM\",\"Aqmola oblysy\":\"KZ-AKM\",\"Aqtobe oblysy\":\"KZ-AKT\",\"Atyrau oblysy\":\"KZ-ATY\",\"Batys Qazaqstan oblysy\":\"KZ-ZAP\",\"Mangghystau oblysy\":\"KZ-MAN\",\"Nur-Sultan\":\"KZ-AST\",\"Ongtustik Qazaqstan oblysy\":\"KZ-YUZ\",\"Pavlodar oblysy\":\"KZ-PAV\",\"Qaraghandy oblysy\":\"KZ-KAR\",\"Qostanay oblysy\":\"KZ-KUS\",\"Qyzylorda oblysy\":\"KZ-KZY\",\"Shyghys Qazaqstan oblysy\":\"KZ-VOS\",\"Shymkent\":\"KZ-SHY\",\"Soltustik Qazaqstan oblysy\":\"KZ-SEV\",\"Zhambyl oblysy\":\"KZ-ZHA\"},\"LA\":{\"Bolikhamxai\":\"LA-BL\",\"Champasak\":\"LA-CH\",\"Houaphan\":\"LA-HO\",\"Khammouan\":\"LA-KH\",\"Louangphabang\":\"LA-LP\",\"Oudomxai\":\"LA-OU\",\"Phongsali\":\"LA-PH\",\"Savannakhet\":\"LA-SV\",\"Viangchan\":\"LA-VI\",\"Xaignabouli\":\"LA-XA\",\"Xekong\":\"LA-XE\",\"Xiangkhouang\":\"LA-XI\"},\"LB\":{\"Aakkar\":\"LB-AK\",\"Baalbek-Hermel\":\"LB-BH\",\"Beqaa\":\"LB-BI\",\"Beyrouth\":\"LB-BA\",\"Liban-Nord\":\"LB-AS\",\"Liban-Sud\":\"LB-JA\",\"Mont-Liban\":\"LB-JL\",\"Nabatiye\":\"LB-NA\"},\"LC\":{\"Anse la Raye\":\"LC-01\",\"Castries\":\"LC-02\",\"Dennery\":\"LC-05\",\"Gros Islet\":\"LC-06\",\"Laborie\":\"LC-07\",\"Soufriere\":\"LC-10\",\"Vieux Fort\":\"LC-11\"},\"LI\":{\"Balzers\":\"LI-01\",\"Eschen\":\"LI-02\",\"Gamprin\":\"LI-03\",\"Mauren\":\"LI-04\",\"Planken\":\"LI-05\",\"Ruggell\":\"LI-06\",\"Schaan\":\"LI-07\",\"Triesen\":\"LI-09\",\"Triesenberg\":\"LI-10\",\"Vaduz\":\"LI-11\"},\"LK\":{\"Central Province\":\"LK-2\",\"Eastern Province\":\"LK-5\",\"North Central Province\":\"LK-7\",\"North Western Province\":\"LK-6\",\"Northern Province\":\"LK-4\",\"Sabaragamuwa Province\":\"LK-9\",\"Southern Province\":\"LK-3\",\"Uva Province\":\"LK-8\",\"Western Province\":\"LK-1\"},\"LR\":{\"Bomi\":\"LR-BM\",\"Grand Bassa\":\"LR-GB\",\"Grand Gedeh\":\"LR-GG\",\"Margibi\":\"LR-MG\",\"Montserrado\":\"LR-MO\",\"Sinoe\":\"LR-SI\"},\"LS\":{\"Leribe\":\"LS-C\",\"Mafeteng\":\"LS-E\",\"Maseru\":\"LS-A\",\"Mokhotlong\":\"LS-J\",\"Quthing\":\"LS-G\",\"Thaba-Tseka\":\"LS-K\"},\"LT\":{\"Alytaus apskritis\":\"LT-AL\",\"Kauno apskritis\":\"LT-KU\",\"Klaipedos apskritis\":\"LT-KL\",\"Marijampoles apskritis\":\"LT-MR\",\"Panevezio apskritis\":\"LT-PN\",\"Siauliu apskritis\":\"LT-SA\",\"Taurages apskritis\":\"LT-TA\",\"Telsiu apskritis\":\"LT-TE\",\"Utenos apskritis\":\"LT-UT\",\"Vilniaus apskritis\":\"LT-VL\"},\"LU\":{\"Capellen\":\"LU-CA\",\"Clervaux\":\"LU-CL\",\"Diekirch\":\"LU-DI\",\"Echternach\":\"LU-EC\",\"Esch-sur-Alzette\":\"LU-ES\",\"Grevenmacher\":\"LU-GR\",\"Luxembourg\":\"LU-LU\",\"Mersch\":\"LU-ME\",\"Redange\":\"LU-RD\",\"Remich\":\"LU-RM\",\"Vianden\":\"LU-VD\",\"Wiltz\":\"LU-WI\"},\"LV\":{\"Adazu novads\":\"LV-011\",\"Aglonas novads\":\"LV-001\",\"Aizkraukles novads\":\"LV-002\",\"Aizputes novads\":\"LV-003\",\"Alojas novads\":\"LV-005\",\"Aluksnes novads\":\"LV-007\",\"Auces novads\":\"LV-010\",\"Babites novads\":\"LV-012\",\"Baldones novads\":\"LV-013\",\"Balvu novads\":\"LV-015\",\"Bauskas novads\":\"LV-016\",\"Beverinas novads\":\"LV-017\",\"Brocenu novads\":\"LV-018\",\"Carnikavas novads\":\"LV-020\",\"Cesu novads\":\"LV-022\",\"Cesvaines novads\":\"LV-021\",\"Dagdas novads\":\"LV-024\",\"Daugavpils novads\":\"LV-025\",\"Dobeles novads\":\"LV-026\",\"Dundagas novads\":\"LV-027\",\"Engures novads\":\"LV-029\",\"Erglu novads\":\"LV-030\",\"Gulbenes novads\":\"LV-033\",\"Iecavas novads\":\"LV-034\",\"Ikskiles novads\":\"LV-035\",\"Incukalna novads\":\"LV-037\",\"Jaunjelgavas novads\":\"LV-038\",\"Jaunpiebalgas novads\":\"LV-039\",\"Jaunpils novads\":\"LV-040\",\"Jekabpils novads\":\"LV-042\",\"Jelgava\":\"LV-JEL\",\"Jelgavas novads\":\"LV-041\",\"Jurmala\":\"LV-JUR\",\"Kandavas novads\":\"LV-043\",\"Kekavas novads\":\"LV-052\",\"Kokneses novads\":\"LV-046\",\"Kraslavas novads\":\"LV-047\",\"Kuldigas novads\":\"LV-050\",\"Lielvardes novads\":\"LV-053\",\"Liepaja\":\"LV-LPX\",\"Limbazu novads\":\"LV-054\",\"Livanu novads\":\"LV-056\",\"Lubanas novads\":\"LV-057\",\"Ludzas novads\":\"LV-058\",\"Madonas novads\":\"LV-059\",\"Malpils novads\":\"LV-061\",\"Nauksenu novads\":\"LV-064\",\"Ogres novads\":\"LV-067\",\"Olaines novads\":\"LV-068\",\"Ozolnieku novads\":\"LV-069\",\"Preilu novads\":\"LV-073\",\"Priekules novads\":\"LV-075\",\"Rezeknes novads\":\"LV-077\",\"Riebinu novads\":\"LV-078\",\"Riga\":\"LV-RIX\",\"Ropazu novads\":\"LV-080\",\"Rundales novads\":\"LV-083\",\"Salaspils novads\":\"LV-087\",\"Saldus novads\":\"LV-088\",\"Saulkrastu novads\":\"LV-089\",\"Sejas novads\":\"LV-090\",\"Siguldas novads\":\"LV-091\",\"Skrundas novads\":\"LV-093\",\"Smiltenes novads\":\"LV-094\",\"Stopinu novads\":\"LV-095\",\"Talsu novads\":\"LV-097\",\"Tukuma novads\":\"LV-099\",\"Vainodes novads\":\"LV-100\",\"Valkas novads\":\"LV-101\",\"Valmiera\":\"LV-VMR\",\"Varkavas novads\":\"LV-103\",\"Vecumnieku novads\":\"LV-105\",\"Ventspils novads\":\"LV-106\",\"Zilupes novads\":\"LV-110\"},\"LY\":{\"Al Butnan\":\"LY-BU\",\"Al Jabal al Akhdar\":\"LY-JA\",\"Al Jabal al Gharbi\":\"LY-JG\",\"Al Jafarah\":\"LY-JI\",\"Al Jufrah\":\"LY-JU\",\"Al Marj\":\"LY-MJ\",\"Al Marqab\":\"LY-MB\",\"Al Wahat\":\"LY-WA\",\"An Nuqat al Khams\":\"LY-NQ\",\"Az Zawiyah\":\"LY-ZA\",\"Banghazi\":\"LY-BA\",\"Darnah\":\"LY-DR\",\"Misratah\":\"LY-MI\",\"Murzuq\":\"LY-MQ\",\"Nalut\":\"LY-NL\",\"Sabha\":\"LY-SB\",\"Surt\":\"LY-SR\",\"Tarabulus\":\"LY-TB\"},\"MA\":{\"Beni-Mellal-Khenifra\":\"MA-05\",\"Casablanca-Settat\":\"MA-06\",\"Draa-Tafilalet\":\"MA-08\",\"Fes- Meknes\":\"MA-03\",\"Guelmim-Oued Noun (EH-partial)\":\"MA-10\",\"L\'Oriental\":\"MA-02\",\"Laayoune-Sakia El Hamra (EH-partial)\":\"MA-11\",\"Marrakech-Safi\":\"MA-07\",\"Rabat-Sale-Kenitra\":\"MA-04\",\"Souss-Massa\":\"MA-09\",\"Tanger-Tetouan-Al Hoceima\":\"MA-01\"},\"MC\":{\"Fontvieille\":\"MC-FO\",\"La Condamine\":\"MC-CO\",\"Monaco-Ville\":\"MC-MO\",\"Monte-Carlo\":\"MC-MC\",\"Saint-Roman\":\"MC-SR\"},\"MD\":{\"Anenii Noi\":\"MD-AN\",\"Balti\":\"MD-BA\",\"Basarabeasca\":\"MD-BS\",\"Bender\":\"MD-BD\",\"Briceni\":\"MD-BR\",\"Cahul\":\"MD-CA\",\"Calarasi\":\"MD-CL\",\"Cantemir\":\"MD-CT\",\"Causeni\":\"MD-CS\",\"Chisinau\":\"MD-CU\",\"Cimislia\":\"MD-CM\",\"Criuleni\":\"MD-CR\",\"Donduseni\":\"MD-DO\",\"Drochia\":\"MD-DR\",\"Dubasari\":\"MD-DU\",\"Edinet\":\"MD-ED\",\"Falesti\":\"MD-FA\",\"Floresti\":\"MD-FL\",\"Gagauzia, Unitatea teritoriala autonoma\":\"MD-GA\",\"Glodeni\":\"MD-GL\",\"Hincesti\":\"MD-HI\",\"Ialoveni\":\"MD-IA\",\"Leova\":\"MD-LE\",\"Nisporeni\":\"MD-NI\",\"Ocnita\":\"MD-OC\",\"Orhei\":\"MD-OR\",\"Rezina\":\"MD-RE\",\"Riscani\":\"MD-RI\",\"Singerei\":\"MD-SI\",\"Soldanesti\":\"MD-SD\",\"Soroca\":\"MD-SO\",\"Stefan Voda\":\"MD-SV\",\"Stinga Nistrului, unitatea teritoriala din\":\"MD-SN\",\"Straseni\":\"MD-ST\",\"Taraclia\":\"MD-TA\",\"Telenesti\":\"MD-TE\",\"Ungheni\":\"MD-UN\"},\"ME\":{\"Bar\":\"ME-02\",\"Berane\":\"ME-03\",\"Bijelo Polje\":\"ME-04\",\"Budva\":\"ME-05\",\"Cetinje\":\"ME-06\",\"Danilovgrad\":\"ME-07\",\"Herceg-Novi\":\"ME-08\",\"Kolasin\":\"ME-09\",\"Kotor\":\"ME-10\",\"Niksic\":\"ME-12\",\"Plav\":\"ME-13\",\"Pljevlja\":\"ME-14\",\"Pluzine\":\"ME-15\",\"Podgorica\":\"ME-16\",\"Rozaje\":\"ME-17\",\"Tivat\":\"ME-19\",\"Tuzi\":\"ME-24\",\"Ulcinj\":\"ME-20\",\"Zabljak\":\"ME-21\"},\"MF\":{\"Saint Martin (French Part)\":\"\"},\"MG\":{\"Antananarivo\":\"MG-T\",\"Antsiranana\":\"MG-D\",\"Fianarantsoa\":\"MG-F\",\"Mahajanga\":\"MG-M\",\"Toamasina\":\"MG-A\",\"Toliara\":\"MG-U\"},\"MH\":{\"Kwajalein\":\"MH-KWA\",\"Majuro\":\"MH-MAJ\"},\"MK\":{\"Aracinovo\":\"MK-802\",\"Berovo\":\"MK-201\",\"Bitola\":\"MK-501\",\"Bogdanci\":\"MK-401\",\"Bogovinje\":\"MK-601\",\"Bosilovo\":\"MK-402\",\"Brvenica\":\"MK-602\",\"Butel\":\"MK-803\",\"Caska\":\"MK-109\",\"Centar\":\"MK-814\",\"Centar Zupa\":\"MK-313\",\"Cesinovo-Oblesevo\":\"MK-210\",\"Cucer Sandevo\":\"MK-816\",\"Debar\":\"MK-303\",\"Delcevo\":\"MK-203\",\"Dojran\":\"MK-406\",\"Dolneni\":\"MK-503\",\"Gazi Baba\":\"MK-804\",\"Gevgelija\":\"MK-405\",\"Gostivar\":\"MK-604\",\"Ilinden\":\"MK-807\",\"Jegunovce\":\"MK-606\",\"Karbinci\":\"MK-205\",\"Kavadarci\":\"MK-104\",\"Kicevo\":\"MK-307\",\"Kisela Voda\":\"MK-809\",\"Kocani\":\"MK-206\",\"Kratovo\":\"MK-701\",\"Kriva Palanka\":\"MK-702\",\"Krusevo\":\"MK-505\",\"Kumanovo\":\"MK-703\",\"Lipkovo\":\"MK-704\",\"Makedonska Kamenica\":\"MK-207\",\"Mavrovo i Rostusa\":\"MK-607\",\"Mogila\":\"MK-506\",\"Negotino\":\"MK-106\",\"Novaci\":\"MK-507\",\"Novo Selo\":\"MK-408\",\"Ohrid\":\"MK-310\",\"Pehcevo\":\"MK-208\",\"Petrovec\":\"MK-810\",\"Plasnica\":\"MK-311\",\"Prilep\":\"MK-508\",\"Probistip\":\"MK-209\",\"Radovis\":\"MK-409\",\"Rankovce\":\"MK-705\",\"Resen\":\"MK-509\",\"Rosoman\":\"MK-107\",\"Saraj\":\"MK-811\",\"Sopiste\":\"MK-812\",\"Stip\":\"MK-211\",\"Struga\":\"MK-312\",\"Strumica\":\"MK-410\",\"Studenicani\":\"MK-813\",\"Suto Orizari\":\"MK-817\",\"Sveti Nikole\":\"MK-108\",\"Tearce\":\"MK-608\",\"Tetovo\":\"MK-609\",\"Valandovo\":\"MK-403\",\"Vasilevo\":\"MK-404\",\"Veles\":\"MK-101\",\"Vinica\":\"MK-202\",\"Vrapciste\":\"MK-603\",\"Zelenikovo\":\"MK-806\",\"Zelino\":\"MK-605\"},\"ML\":{\"Bamako\":\"ML-BKO\",\"Gao\":\"ML-7\",\"Kayes\":\"ML-1\",\"Kidal\":\"ML-8\",\"Koulikoro\":\"ML-2\",\"Mopti\":\"ML-5\",\"Segou\":\"ML-4\",\"Sikasso\":\"ML-3\",\"Tombouctou\":\"ML-6\"},\"MM\":{\"Ayeyarwady\":\"MM-07\",\"Bago\":\"MM-02\",\"Chin\":\"MM-14\",\"Kachin\":\"MM-11\",\"Kayah\":\"MM-12\",\"Kayin\":\"MM-13\",\"Magway\":\"MM-03\",\"Mandalay\":\"MM-04\",\"Mon\":\"MM-15\",\"Nay Pyi Taw\":\"MM-18\",\"Rakhine\":\"MM-16\",\"Sagaing\":\"MM-01\",\"Shan\":\"MM-17\",\"Tanintharyi\":\"MM-05\",\"Yangon\":\"MM-06\"},\"MN\":{\"Bayan-Olgiy\":\"MN-071\",\"Darhan uul\":\"MN-037\",\"Dornod\":\"MN-061\",\"Govi-Altay\":\"MN-065\",\"Hovd\":\"MN-043\",\"Omnogovi\":\"MN-053\",\"Orhon\":\"MN-035\",\"Selenge\":\"MN-049\",\"Tov\":\"MN-047\",\"Ulaanbaatar\":\"MN-1\"},\"MO\":{\"Macao\":\"\"},\"MP\":{\"Northern Mariana Islands\":\"\"},\"MQ\":{\"Martinique\":\"\"},\"MR\":{\"Dakhlet Nouadhibou\":\"MR-08\",\"Gorgol\":\"MR-04\",\"Inchiri\":\"MR-12\",\"Nouakchott Ouest\":\"MR-13\",\"Tiris Zemmour\":\"MR-11\",\"Trarza\":\"MR-06\"},\"MS\":{\"Saint Anthony\":\"\",\"Saint Peter\":\"\"},\"MT\":{\"Attard\":\"MT-01\",\"Balzan\":\"MT-02\",\"Birgu\":\"MT-03\",\"Birkirkara\":\"MT-04\",\"Birzebbuga\":\"MT-05\",\"Bormla\":\"MT-06\",\"Dingli\":\"MT-07\",\"Fgura\":\"MT-08\",\"Floriana\":\"MT-09\",\"Fontana\":\"MT-10\",\"Gharb\":\"MT-14\",\"Gharghur\":\"MT-15\",\"Ghasri\":\"MT-16\",\"Ghaxaq\":\"MT-17\",\"Gudja\":\"MT-11\",\"Gzira\":\"MT-12\",\"Hamrun\":\"MT-18\",\"Iklin\":\"MT-19\",\"Isla\":\"MT-20\",\"Kalkara\":\"MT-21\",\"Kercem\":\"MT-22\",\"Kirkop\":\"MT-23\",\"Lija\":\"MT-24\",\"Luqa\":\"MT-25\",\"Marsa\":\"MT-26\",\"Marsaskala\":\"MT-27\",\"Marsaxlokk\":\"MT-28\",\"Mdina\":\"MT-29\",\"Mellieha\":\"MT-30\",\"Mgarr\":\"MT-31\",\"Mosta\":\"MT-32\",\"Mqabba\":\"MT-33\",\"Msida\":\"MT-34\",\"Mtarfa\":\"MT-35\",\"Munxar\":\"MT-36\",\"Nadur\":\"MT-37\",\"Naxxar\":\"MT-38\",\"Paola\":\"MT-39\",\"Pembroke\":\"MT-40\",\"Pieta\":\"MT-41\",\"Qala\":\"MT-42\",\"Qormi\":\"MT-43\",\"Rabat Gozo\":\"MT-45\",\"Rabat Malta\":\"MT-46\",\"Safi\":\"MT-47\",\"Saint John\":\"MT-49\",\"Saint Julian\'s\":\"MT-48\",\"Saint Lucia\'s\":\"MT-53\",\"Saint Paul\'s Bay\":\"MT-51\",\"Sannat\":\"MT-52\",\"Santa Venera\":\"MT-54\",\"Siggiewi\":\"MT-55\",\"Sliema\":\"MT-56\",\"Swieqi\":\"MT-57\",\"Ta\' Xbiex\":\"MT-58\",\"Tarxien\":\"MT-59\",\"Valletta\":\"MT-60\",\"Xaghra\":\"MT-61\",\"Xewkija\":\"MT-62\",\"Xghajra\":\"MT-63\",\"Zabbar\":\"MT-64\",\"Zebbug Gozo\":\"MT-65\",\"Zejtun\":\"MT-67\",\"Zurrieq\":\"MT-68\"},\"MU\":{\"Black River\":\"MU-BL\",\"Flacq\":\"MU-FL\",\"Grand Port\":\"MU-GP\",\"Moka\":\"MU-MO\",\"Pamplemousses\":\"MU-PA\",\"Plaines Wilhems\":\"MU-PW\",\"Port Louis\":\"MU-PL\",\"Riviere du Rempart\":\"MU-RR\",\"Rodrigues Islands\":\"MU-RO\",\"Savanne\":\"MU-SA\"},\"MV\":{\"Addu City\":\"MV-01\",\"Faadhippolhu\":\"MV-03\",\"Felidhu Atoll\":\"MV-04\",\"Hahdhunmathi\":\"MV-05\",\"Male\":\"MV-MLE\",\"Mulaku Atoll\":\"MV-12\",\"North Maalhosmadulu\":\"MV-13\",\"North Thiladhunmathi\":\"MV-07\",\"South Ari Atoll\":\"MV-00\",\"South Huvadhu Atoll\":\"MV-28\",\"South Maalhosmadulu\":\"MV-20\",\"South Miladhunmadulu\":\"MV-25\",\"South Nilandhe Atoll\":\"MV-17\",\"South Thiladhunmathi\":\"MV-23\"},\"MW\":{\"Balaka\":\"MW-BA\",\"Blantyre\":\"MW-BL\",\"Chiradzulu\":\"MW-CR\",\"Dedza\":\"MW-DE\",\"Dowa\":\"MW-DO\",\"Karonga\":\"MW-KR\",\"Lilongwe\":\"MW-LI\",\"Machinga\":\"MW-MH\",\"Mangochi\":\"MW-MG\",\"Mchinji\":\"MW-MC\",\"Mzimba\":\"MW-MZ\",\"Nkhotakota\":\"MW-NK\",\"Salima\":\"MW-SA\",\"Zomba\":\"MW-ZO\"},\"MX\":{\"Aguascalientes\":\"MX-AGU\",\"Baja California\":\"MX-BCN\",\"Baja California Sur\":\"MX-BCS\",\"Campeche\":\"MX-CAM\",\"Chiapas\":\"MX-CHP\",\"Chihuahua\":\"MX-CHH\",\"Ciudad de Mexico\":\"MX-CMX\",\"Coahuila de Zaragoza\":\"MX-COA\",\"Colima\":\"MX-COL\",\"Durango\":\"MX-DUR\",\"Guanajuato\":\"MX-GUA\",\"Guerrero\":\"MX-GRO\",\"Hidalgo\":\"MX-HID\",\"Jalisco\":\"MX-JAL\",\"Mexico\":\"MX-MEX\",\"Michoacan de Ocampo\":\"MX-MIC\",\"Morelos\":\"MX-MOR\",\"Nayarit\":\"MX-NAY\",\"Nuevo Leon\":\"MX-NLE\",\"Oaxaca\":\"MX-OAX\",\"Puebla\":\"MX-PUE\",\"Queretaro\":\"MX-QUE\",\"Quintana Roo\":\"MX-ROO\",\"San Luis Potosi\":\"MX-SLP\",\"Sinaloa\":\"MX-SIN\",\"Sonora\":\"MX-SON\",\"Tabasco\":\"MX-TAB\",\"Tamaulipas\":\"MX-TAM\",\"Tlaxcala\":\"MX-TLA\",\"Veracruz de Ignacio de la Llave\":\"MX-VER\",\"Yucatan\":\"MX-YUC\",\"Zacatecas\":\"MX-ZAC\"},\"MY\":{\"Johor\":\"MY-01\",\"Kedah\":\"MY-02\",\"Kelantan\":\"MY-03\",\"Melaka\":\"MY-04\",\"Negeri Sembilan\":\"MY-05\",\"Pahang\":\"MY-06\",\"Perak\":\"MY-08\",\"Perlis\":\"MY-09\",\"Pulau Pinang\":\"MY-07\",\"Sabah\":\"MY-12\",\"Sarawak\":\"MY-13\",\"Selangor\":\"MY-10\",\"Terengganu\":\"MY-11\",\"Wilayah Persekutuan Kuala Lumpur\":\"MY-14\",\"Wilayah Persekutuan Labuan\":\"MY-15\",\"Wilayah Persekutuan Putrajaya\":\"MY-16\"},\"MZ\":{\"Cabo Delgado\":\"MZ-P\",\"Gaza\":\"MZ-G\",\"Inhambane\":\"MZ-I\",\"Manica\":\"MZ-B\",\"Maputo\":\"MZ-L\",\"Nampula\":\"MZ-N\",\"Niassa\":\"MZ-A\",\"Sofala\":\"MZ-S\",\"Tete\":\"MZ-T\",\"Zambezia\":\"MZ-Q\"},\"NA\":{\"Erongo\":\"NA-ER\",\"Hardap\":\"NA-HA\",\"Karas\":\"NA-KA\",\"Kavango East\":\"NA-KE\",\"Khomas\":\"NA-KH\",\"Kunene\":\"NA-KU\",\"Ohangwena\":\"NA-OW\",\"Omaheke\":\"NA-OH\",\"Omusati\":\"NA-OS\",\"Oshana\":\"NA-ON\",\"Oshikoto\":\"NA-OT\",\"Otjozondjupa\":\"NA-OD\",\"Zambezi\":\"NA-CA\"},\"NC\":{\"Province Nord\":\"\",\"Province Sud\":\"\"},\"NE\":{\"Agadez\":\"NE-1\",\"Diffa\":\"NE-2\",\"Dosso\":\"NE-3\",\"Niamey\":\"NE-8\",\"Tahoua\":\"NE-5\",\"Zinder\":\"NE-7\"},\"NF\":{\"Norfolk Island\":\"\"},\"NG\":{\"Abia\":\"NG-AB\",\"Abuja Federal Capital Territory\":\"NG-FC\",\"Adamawa\":\"NG-AD\",\"Akwa Ibom\":\"NG-AK\",\"Anambra\":\"NG-AN\",\"Bauchi\":\"NG-BA\",\"Bayelsa\":\"NG-BY\",\"Benue\":\"NG-BE\",\"Borno\":\"NG-BO\",\"Cross River\":\"NG-CR\",\"Delta\":\"NG-DE\",\"Edo\":\"NG-ED\",\"Ekiti\":\"NG-EK\",\"Enugu\":\"NG-EN\",\"Gombe\":\"NG-GO\",\"Imo\":\"NG-IM\",\"Jigawa\":\"NG-JI\",\"Kaduna\":\"NG-KD\",\"Kano\":\"NG-KN\",\"Katsina\":\"NG-KT\",\"Kebbi\":\"NG-KE\",\"Kogi\":\"NG-KO\",\"Kwara\":\"NG-KW\",\"Lagos\":\"NG-LA\",\"Nasarawa\":\"NG-NA\",\"Niger\":\"NG-NI\",\"Ogun\":\"NG-OG\",\"Ondo\":\"NG-ON\",\"Osun\":\"NG-OS\",\"Oyo\":\"NG-OY\",\"Plateau\":\"NG-PL\",\"Rivers\":\"NG-RI\",\"Sokoto\":\"NG-SO\",\"Taraba\":\"NG-TA\",\"Yobe\":\"NG-YO\",\"Zamfara\":\"NG-ZA\"},\"NI\":{\"Boaco\":\"NI-BO\",\"Carazo\":\"NI-CA\",\"Chinandega\":\"NI-CI\",\"Chontales\":\"NI-CO\",\"Costa Caribe Norte\":\"NI-AN\",\"Costa Caribe Sur\":\"NI-AS\",\"Esteli\":\"NI-ES\",\"Granada\":\"NI-GR\",\"Jinotega\":\"NI-JI\",\"Leon\":\"NI-LE\",\"Madriz\":\"NI-MD\",\"Managua\":\"NI-MN\",\"Masaya\":\"NI-MS\",\"Matagalpa\":\"NI-MT\",\"Nueva Segovia\":\"NI-NS\",\"Rio San Juan\":\"NI-SJ\",\"Rivas\":\"NI-RI\"},\"NL\":{\"Drenthe\":\"NL-DR\",\"Flevoland\":\"NL-FL\",\"Fryslan\":\"NL-FR\",\"Gelderland\":\"NL-GE\",\"Groningen\":\"NL-GR\",\"Limburg\":\"NL-LI\",\"Noord-Brabant\":\"NL-NB\",\"Noord-Holland\":\"NL-NH\",\"Overijssel\":\"NL-OV\",\"Utrecht\":\"NL-UT\",\"Zeeland\":\"NL-ZE\",\"Zuid-Holland\":\"NL-ZH\"},\"NO\":{\"Agder\":\"NO-42\",\"Innlandet\":\"NO-34\",\"More og Romsdal\":\"NO-15\",\"Nordland\":\"NO-18\",\"Oslo\":\"NO-03\",\"Rogaland\":\"NO-11\",\"Troms og Finnmark\":\"NO-54\",\"Trondelag\":\"NO-50\",\"Vestfold og Telemark\":\"NO-38\",\"Vestland\":\"NO-46\",\"Viken\":\"NO-30\"},\"NP\":{\"Bagmati\":\"NP-BA\",\"Bheri\":\"NP-BH\",\"Dhawalagiri\":\"NP-DH\",\"Gandaki\":\"NP-GA\",\"Janakpur\":\"NP-JA\",\"Karnali\":\"NP-KA\",\"Kosi\":\"NP-KO\",\"Lumbini\":\"NP-LU\",\"Mahakali\":\"NP-MA\",\"Mechi\":\"NP-ME\",\"Narayani\":\"NP-NA\",\"Rapti\":\"NP-RA\",\"Sagarmatha\":\"NP-SA\",\"Seti\":\"NP-SE\"},\"NR\":{\"Yaren\":\"NR-14\"},\"NU\":{\"Niue\":\"\"},\"NZ\":{\"Auckland\":\"NZ-AUK\",\"Bay of Plenty\":\"NZ-BOP\",\"Canterbury\":\"NZ-CAN\",\"Chatham Islands Territory\":\"NZ-CIT\",\"Gisborne\":\"NZ-GIS\",\"Hawke\'s Bay\":\"NZ-HKB\",\"Manawatu-Wanganui\":\"NZ-MWT\",\"Marlborough\":\"NZ-MBH\",\"Nelson\":\"NZ-NSN\",\"Northland\":\"NZ-NTL\",\"Otago\":\"NZ-OTA\",\"Southland\":\"NZ-STL\",\"Taranaki\":\"NZ-TKI\",\"Tasman\":\"NZ-TAS\",\"Waikato\":\"NZ-WKO\",\"Wellington\":\"NZ-WGN\",\"West Coast\":\"NZ-WTC\"},\"OM\":{\"Ad Dakhiliyah\":\"OM-DA\",\"Al Buraymi\":\"OM-BU\",\"Al Wusta\":\"OM-WU\",\"Az Zahirah\":\"OM-ZA\",\"Janub al Batinah\":\"OM-BJ\",\"Janub ash Sharqiyah\":\"OM-SJ\",\"Masqat\":\"OM-MA\",\"Musandam\":\"OM-MU\",\"Shamal al Batinah\":\"OM-BS\",\"Shamal ash Sharqiyah\":\"OM-SS\",\"Zufar\":\"OM-ZU\"},\"PA\":{\"Bocas del Toro\":\"PA-1\",\"Chiriqui\":\"PA-4\",\"Cocle\":\"PA-2\",\"Colon\":\"PA-3\",\"Darien\":\"PA-5\",\"Herrera\":\"PA-6\",\"Los Santos\":\"PA-7\",\"Ngobe-Bugle\":\"PA-NB\",\"Panama\":\"PA-8\",\"Veraguas\":\"PA-9\"},\"PE\":{\"Amazonas\":\"PE-AMA\",\"Ancash\":\"PE-ANC\",\"Apurimac\":\"PE-APU\",\"Arequipa\":\"PE-ARE\",\"Ayacucho\":\"PE-AYA\",\"Cajamarca\":\"PE-CAJ\",\"Cusco\":\"PE-CUS\",\"El Callao\":\"PE-CAL\",\"Huancavelica\":\"PE-HUV\",\"Huanuco\":\"PE-HUC\",\"Ica\":\"PE-ICA\",\"Junin\":\"PE-JUN\",\"La Libertad\":\"PE-LAL\",\"Lambayeque\":\"PE-LAM\",\"Lima\":\"PE-LIM\",\"Loreto\":\"PE-LOR\",\"Madre de Dios\":\"PE-MDD\",\"Moquegua\":\"PE-MOQ\",\"Pasco\":\"PE-PAS\",\"Piura\":\"PE-PIU\",\"Puno\":\"PE-PUN\",\"San Martin\":\"PE-SAM\",\"Tacna\":\"PE-TAC\",\"Tumbes\":\"PE-TUM\",\"Ucayali\":\"PE-UCA\"},\"PF\":{\"Iles Australes\":\"\",\"Iles Marquises\":\"\",\"Iles Sous-le-Vent\":\"\",\"Iles Tuamotu-Gambier\":\"\",\"Iles du Vent\":\"\"},\"PG\":{\"Bougainville\":\"PG-NSB\",\"Central\":\"PG-CPM\",\"East New Britain\":\"PG-EBR\",\"East Sepik\":\"PG-ESW\",\"Eastern Highlands\":\"PG-EHG\",\"Madang\":\"PG-MPM\",\"Manus\":\"PG-MRL\",\"Milne Bay\":\"PG-MBA\",\"Morobe\":\"PG-MPL\",\"National Capital District (Port Moresby)\":\"PG-NCD\",\"New Ireland\":\"PG-NIK\",\"Southern Highlands\":\"PG-SHM\",\"West New Britain\":\"PG-WBK\",\"West Sepik\":\"PG-SAN\",\"Western\":\"PG-WPD\",\"Western Highlands\":\"PG-WHM\"},\"PH\":{\"Abra\":\"PH-ABR\",\"Agusan del Norte\":\"PH-AGN\",\"Agusan del Sur\":\"PH-AGS\",\"Aklan\":\"PH-AKL\",\"Albay\":\"PH-ALB\",\"Antique\":\"PH-ANT\",\"Apayao\":\"PH-APA\",\"Aurora\":\"PH-AUR\",\"Basilan\":\"PH-BAS\",\"Bataan\":\"PH-BAN\",\"Batanes\":\"PH-BTN\",\"Batangas\":\"PH-BTG\",\"Benguet\":\"PH-BEN\",\"Biliran\":\"PH-BIL\",\"Bohol\":\"PH-BOH\",\"Bukidnon\":\"PH-BUK\",\"Bulacan\":\"PH-BUL\",\"Cagayan\":\"PH-CAG\",\"Camarines Norte\":\"PH-CAN\",\"Camarines Sur\":\"PH-CAS\",\"Camiguin\":\"PH-CAM\",\"Capiz\":\"PH-CAP\",\"Catanduanes\":\"PH-CAT\",\"Cavite\":\"PH-CAV\",\"Cebu\":\"PH-CEB\",\"Cotabato\":\"PH-NCO\",\"Davao Oriental\":\"PH-DAO\",\"Davao de Oro\":\"PH-COM\",\"Davao del Norte\":\"PH-DAV\",\"Davao del Sur\":\"PH-DAS\",\"Dinagat Islands\":\"PH-DIN\",\"Eastern Samar\":\"PH-EAS\",\"Guimaras\":\"PH-GUI\",\"Ifugao\":\"PH-IFU\",\"Ilocos Norte\":\"PH-ILN\",\"Ilocos Sur\":\"PH-ILS\",\"Iloilo\":\"PH-ILI\",\"Isabela\":\"PH-ISA\",\"Kalinga\":\"PH-KAL\",\"La Union\":\"PH-LUN\",\"Laguna\":\"PH-LAG\",\"Lanao del Norte\":\"PH-LAN\",\"Lanao del Sur\":\"PH-LAS\",\"Leyte\":\"PH-LEY\",\"Maguindanao\":\"PH-MAG\",\"Marinduque\":\"PH-MAD\",\"Masbate\":\"PH-MAS\",\"Mindoro Occidental\":\"PH-MDC\",\"Mindoro Oriental\":\"PH-MDR\",\"Misamis Occidental\":\"PH-MSC\",\"Misamis Oriental\":\"PH-MSR\",\"Mountain Province\":\"PH-MOU\",\"National Capital Region\":\"PH-00\",\"Negros Occidental\":\"PH-NEC\",\"Negros Oriental\":\"PH-NER\",\"Northern Samar\":\"PH-NSA\",\"Nueva Ecija\":\"PH-NUE\",\"Nueva Vizcaya\":\"PH-NUV\",\"Palawan\":\"PH-PLW\",\"Pampanga\":\"PH-PAM\",\"Pangasinan\":\"PH-PAN\",\"Quezon\":\"PH-QUE\",\"Quirino\":\"PH-QUI\",\"Rizal\":\"PH-RIZ\",\"Romblon\":\"PH-ROM\",\"Samar\":\"PH-WSA\",\"Sarangani\":\"PH-SAR\",\"Siquijor\":\"PH-SIG\",\"Sorsogon\":\"PH-SOR\",\"South Cotabato\":\"PH-SCO\",\"Southern Leyte\":\"PH-SLE\",\"Sultan Kudarat\":\"PH-SUK\",\"Sulu\":\"PH-SLU\",\"Surigao del Norte\":\"PH-SUN\",\"Surigao del Sur\":\"PH-SUR\",\"Tarlac\":\"PH-TAR\",\"Tawi-Tawi\":\"PH-TAW\",\"Zambales\":\"PH-ZMB\",\"Zamboanga Sibugay\":\"PH-ZSI\",\"Zamboanga del Norte\":\"PH-ZAN\",\"Zamboanga del Sur\":\"PH-ZAS\"},\"PK\":{\"Azad Jammu and Kashmir\":\"PK-JK\",\"Balochistan\":\"PK-BA\",\"Gilgit-Baltistan\":\"PK-GB\",\"Islamabad\":\"PK-IS\",\"Khyber Pakhtunkhwa\":\"PK-KP\",\"Punjab\":\"PK-PB\",\"Sindh\":\"PK-SD\"},\"PL\":{\"Dolnoslaskie\":\"PL-02\",\"Kujawsko-pomorskie\":\"PL-04\",\"Lodzkie\":\"PL-10\",\"Lubelskie\":\"PL-06\",\"Lubuskie\":\"PL-08\",\"Malopolskie\":\"PL-12\",\"Mazowieckie\":\"PL-14\",\"Opolskie\":\"PL-16\",\"Podkarpackie\":\"PL-18\",\"Podlaskie\":\"PL-20\",\"Pomorskie\":\"PL-22\",\"Slaskie\":\"PL-24\",\"Swietokrzyskie\":\"PL-26\",\"Warminsko-mazurskie\":\"PL-28\",\"Wielkopolskie\":\"PL-30\",\"Zachodniopomorskie\":\"PL-32\"},\"PM\":{\"Saint Pierre and Miquelon\":\"\"},\"PN\":{\"Pitcairn\":\"\"}};\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n \r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n tempObj.serverId = countryCodeMap[tempObj.country];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.province){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.province];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (530, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsWorldTcpSessionDelay', '/application/performance/overview/drilldown/dimension/clientLocations/world/tcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_country IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n \r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (531, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsWorldHttpResponseDelay', '/application/performance/overview/drilldown/dimension/clientLocations/world/httpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND client_country IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (532, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsWorldSslConDelay', '/application/performance/overview/drilldown/dimension/clientLocations/world/sslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND client_country IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n \r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (533, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsWorldTcpLostlenPercent', '/application/performance/overview/drilldown/dimension/clientLocations/world/tcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM session_record_cn WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) AND country IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND side = \'client\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country ORDER BY tcp_lostlen_percent DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (534, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsWorldPacketRetransPercent', '/application/performance/overview/drilldown/dimension/clientLocations/world/packetRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_ratio FROM session_record_cn WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) AND country IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND side = \'client\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country ORDER BY pkt_retrans_ratio DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (535, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsCountryTrafficAnalysis', '/application/performance/overview/drilldown/dimension/clientLocations/country/trafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS total_packets, SUM(common_sessions) AS sessions, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS through_bytes, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS through_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(client_province) AND client_country = \'${parameter.country}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,client_zone,server_zone <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'var countryCodeMap = {\"Private IP\":\"CN\",\"Afghanistan\":\"AF\",\"Albania\":\"AL\",\"Algeria\":\"DZ\",\"American Samoa\":\"AS\",\"Andorra\":\"AD\",\"Angola\":\"AO\",\"Anguilla\":\"AI\",\"Antarctica\":\"AQ\",\"Antigua and Barbuda\":\"AG\",\"Argentina\":\"AR\",\"Armenia\":\"AM\",\"Aruba\":\"AW\",\"Australia\":\"AU\",\"Austria\":\"AT\",\"Azerbaijan\":\"AZ\",\"Bahamas (the)\":\"BS\",\"Bahrain\":\"BH\",\"Bangladesh\":\"BD\",\"Barbados\":\"BB\",\"Belarus\":\"BY\",\"Belgium\":\"BE\",\"Belize\":\"BZ\",\"Benin\":\"BJ\",\"Bermuda\":\"BM\",\"Åland Islands\":\"AX\",\"Bhutan\":\"BT\",\"Bolivia (Plurinational State of)\":\"BO\",\"Bonaire, Sint Eustatius and Saba\":\"BQ\",\"Bosnia and Herzegovina\":\"BA\",\"Botswana\":\"BW\",\"Bouvet Island\":\"BV\",\"Brazil\":\"BR\",\"British Indian Ocean Territory (the)\":\"IO\",\"Brunei Darussalam\":\"BN\",\"Bulgaria\":\"BG\",\"Burkina Faso\":\"BF\",\"Burundi\":\"BI\",\"Cabo Verde\":\"CV\",\"Cambodia\":\"KH\",\"Cameroon\":\"CM\",\"Canada\":\"CA\",\"Cayman Islands (the)\":\"KY\",\"Central African Republic (the)\":\"CF\",\"Chad\":\"TD\",\"Chile\":\"CL\",\"China\":\"CN\",\"Christmas Island\":\"CX\",\"Cocos (Keeling) Islands (the)\":\"CC\",\"Colombia\":\"CO\",\"Comoros (the)\":\"KM\",\"Congo (the Democratic Republic of the)\":\"CD\",\"Congo (the)\":\"CG\",\"Cook Islands (the)\":\"CK\",\"Costa Rica\":\"CR\",\"Croatia\":\"HR\",\"Cuba\":\"CU\",\"Curaçao\":\"CW\",\"Cyprus\":\"CY\",\"Czech Republic\":\"CZ\",\"Côte d\'Ivoire\":\"CI\",\"Denmark\":\"DK\",\"Djibouti\":\"DJ\",\"Dominica\":\"DM\",\"Dominican Republic (the)\":\"DO\",\"Ecuador\":\"EC\",\"Egypt\":\"EG\",\"El Salvador\":\"SV\",\"Equatorial Guinea\":\"GQ\",\"Eritrea\":\"ER\",\"Estonia\":\"EE\",\"Eswatini\":\"SZ\",\"Ethiopia\":\"ET\",\"Falkland Islands (the) [Malvinas]\":\"FK\",\"Faroe Islands (the)\":\"FO\",\"Fiji\":\"FJ\",\"Finland\":\"FI\",\"France\":\"FR\",\"French Guiana\":\"GF\",\"French Polynesia\":\"PF\",\"French Southern Territories (the)\":\"TF\",\"Gabon\":\"GA\",\"Gambia (the)\":\"GM\",\"Georgia\":\"GE\",\"Germany\":\"DE\",\"Ghana\":\"GH\",\"Gibraltar\":\"GI\",\"Greece\":\"GR\",\"Greenland\":\"GL\",\"Grenada\":\"GD\",\"Guadeloupe\":\"GP\",\"Guam\":\"GU\",\"Guatemala\":\"GT\",\"Guernsey\":\"GG\",\"Guinea\":\"GN\",\"Guinea-Bissau\":\"GW\",\"Guyana\":\"GY\",\"Haiti\":\"HT\",\"Heard Island and McDonald Islands\":\"HM\",\"Holy See (the)\":\"VA\",\"Honduras\":\"HN\",\"Hong Kong\":\"HK\",\"Hungary\":\"HU\",\"Iceland\":\"IS\",\"India\":\"IN\",\"Indonesia\":\"ID\",\"Iran (Islamic Republic of)\":\"IR\",\"Iraq\":\"IQ\",\"Ireland\":\"IE\",\"Isle of Man\":\"IM\",\"Israel\":\"IL\",\"Italy\":\"IT\",\"Jamaica\":\"JM\",\"Japan\":\"JP\",\"Jersey\":\"JE\",\"Jordan\":\"JO\",\"Kazakhstan\":\"KZ\",\"Kenya\":\"KE\",\"Kiribati\":\"KI\",\"Korea\":\"KR\",\"Kuwait\":\"KW\",\"Kyrgyzstan\":\"KG\",\"Lao People\'s Democratic Republic (the)\":\"LA\",\"Latvia\":\"LV\",\"Lebanon\":\"LB\",\"Lesotho\":\"LS\",\"Liberia\":\"LR\",\"Libya\":\"LY\",\"Liechtenstein\":\"LI\",\"Lithuania\":\"LT\",\"Luxembourg\":\"LU\",\"Macao\":\"MO\",\"Madagascar\":\"MG\",\"Malawi\":\"MW\",\"Malaysia\":\"MY\",\"Maldives\":\"MV\",\"Mali\":\"ML\",\"Malta\":\"MT\",\"Marshall Islands (the)\":\"MH\",\"Martinique\":\"MQ\",\"Mauritania\":\"MR\",\"Mauritius\":\"MU\",\"Mayotte\":\"YT\",\"Mexico\":\"MX\",\"Micronesia (Federated States of)\":\"FM\",\"Moldova (the Republic of)\":\"MD\",\"Monaco\":\"MC\",\"Mongolia\":\"MN\",\"Montenegro\":\"ME\",\"Montserrat\":\"MS\",\"Morocco\":\"MA\",\"Mozambique\":\"MZ\",\"Myanmar\":\"MM\",\"Namibia\":\"NA\",\"Nauru\":\"NR\",\"Nepal\":\"NP\",\"Netherlands\":\"NL\",\"New Caledonia\":\"NC\",\"New Zealand\":\"NZ\",\"Nicaragua\":\"NI\",\"Niger\":\"NE\",\"Nigeria\":\"NG\",\"Niue\":\"NU\",\"Norfolk Island\":\"NF\",\"North Macedonia\":\"MK\",\"Northern Mariana Islands (the)\":\"MP\",\"Norway\":\"NO\",\"Oman\":\"OM\",\"Pakistan\":\"PK\",\"Palau\":\"PW\",\"Palestine, State of\":\"PS\",\"Panama\":\"PA\",\"Papua New Guinea\":\"PG\",\"Paraguay\":\"PY\",\"Peru\":\"PE\",\"Philippines\":\"PH\",\"Pitcairn\":\"PN\",\"Poland\":\"PL\",\"Portugal\":\"PT\",\"Puerto Rico\":\"PR\",\"Qatar\":\"QA\",\"Romania\":\"RO\",\"Russian Federation\":\"RU\",\"Rwanda\":\"RW\",\"Réunion\":\"RE\",\"Saint Barthélemy\":\"BL\",\"Saint Helena, Ascension and Tristan da Cunha\":\"SH\",\"Saint Kitts and Nevis\":\"KN\",\"Saint Lucia\":\"LC\",\"Saint Martin\":\"MF\",\"Saint Pierre and Miquelon\":\"PM\",\"Saint Vincent and the Grenadines\":\"VC\",\"Samoa\":\"WS\",\"San Marino\":\"SM\",\"Sao Tome and Principe\":\"ST\",\"Saudi Arabia\":\"SA\",\"Senegal\":\"SN\",\"Serbia\":\"RS\",\"Seychelles\":\"SC\",\"Sierra Leone\":\"SL\",\"Singapore\":\"SG\",\"Sint Maarten\":\"SX\",\"Slovakia\":\"SK\",\"Slovenia\":\"SI\",\"Solomon Islands\":\"SB\",\"Somalia\":\"SO\",\"South Africa\":\"ZA\",\"South Georgia and the South Sandwich Islands\":\"GS\",\"South Sudan\":\"SS\",\"Spain\":\"ES\",\"Sri Lanka\":\"LK\",\"Sudan\":\"SD\",\"Suriname\":\"SR\",\"Svalbard and Jan Mayen\":\"SJ\",\"Sweden\":\"SE\",\"Switzerland\":\"CH\",\"Syrian Arab Republic\":\"SY\",\"Taiwan\":\"TW\",\"Tajikistan\":\"TJ\",\"Tanzania, the United Republic of\":\"TZ\",\"Thailand\":\"TH\",\"Timor-Leste\":\"TL\",\"Togo\":\"TG\",\"Tokelau\":\"TK\",\"Tonga\":\"TO\",\"Trinidad and Tobago\":\"TT\",\"Tunisia\":\"TN\",\"Turkey\":\"TR\",\"Turkmenistan\":\"TM\",\"Turks and Caicos Islands\":\"TC\",\"Tuvalu\":\"TV\",\"Uganda\":\"UG\",\"Ukraine\":\"UA\",\"United Arab Emirates\":\"AE\",\"United Kingdom of Great Britain and Northern Ireland\":\"GB\",\"United States Minor Outlying Islands\":\"UM\",\"United States\":\"US\",\"Uruguay\":\"UY\",\"Uzbekistan\":\"UZ\",\"Vanuatu\":\"VU\",\"Venezuela (Bolivarian Republic of)\":\"VE\",\"Viet Nam\":\"VN\",\"Virgin Islands (British)\":\"VG\",\"Virgin Islands (U.S.)\":\"VI\",\"Wallis and Futuna\":\"WF\",\"Western Sahara*\":\"EH\",\"Yemen\":\"YE\",\"Zambia\":\"ZM\",\"Zimbabwe\":\"ZW\"};\r\nvar countCityMap = {\"PR\":{\"Adjuntas\":\"\",\"Aguada\":\"\",\"Aguadilla\":\"\",\"Aguas Buenas\":\"\",\"Aibonito\":\"\",\"Anasco\":\"\",\"Arecibo\":\"\",\"Arroyo\":\"\",\"Barceloneta\":\"\",\"Barranquitas\":\"\",\"Bayamon\":\"\",\"Cabo Rojo\":\"\",\"Caguas\":\"\",\"Camuy\":\"\",\"Canovanas\":\"\",\"Carolina\":\"\",\"Catano\":\"\",\"Cayey\":\"\",\"Ceiba\":\"\",\"Ciales\":\"\",\"Cidra\":\"\",\"Coamo\":\"\",\"Comerio\":\"\",\"Corozal\":\"\",\"Culebra\":\"\",\"Dorado\":\"\",\"Fajardo\":\"\",\"Florida\":\"\",\"Guanica\":\"\",\"Guayama\":\"\",\"Guayanilla\":\"\",\"Guaynabo\":\"\",\"Gurabo\":\"\",\"Hatillo\":\"\",\"Hormigueros\":\"\",\"Humacao\":\"\",\"Isabela\":\"\",\"Juana Diaz\":\"\",\"Lajas\":\"\",\"Lares\":\"\",\"Las Marias\":\"\",\"Las Piedras\":\"\",\"Loiza\":\"\",\"Luquillo\":\"\",\"Manati\":\"\",\"Mayaguez\":\"\",\"Moca\":\"\",\"Morovis\":\"\",\"Municipio de Jayuya\":\"\",\"Municipio de Juncos\":\"\",\"Naguabo\":\"\",\"Naranjito\":\"\",\"Patillas\":\"\",\"Penuelas\":\"\",\"Ponce\":\"\",\"Quebradillas\":\"\",\"Rincon\":\"\",\"Rio Grande\":\"\",\"Sabana Grande\":\"\",\"Salinas\":\"\",\"San German\":\"\",\"San Juan\":\"\",\"San Lorenzo\":\"\",\"San Sebastian\":\"\",\"Santa Isabel Municipio\":\"\",\"Toa Alta\":\"\",\"Toa Baja\":\"\",\"Trujillo Alto\":\"\",\"Utuado\":\"\",\"Vega Alta\":\"\",\"Vega Baja\":\"\",\"Vieques\":\"\",\"Villalba\":\"\",\"Yabucoa\":\"\",\"Yauco\":\"\"},\"PS\":{\"Bethlehem\":\"PS-BTH\",\"Deir El Balah\":\"PS-DEB\",\"Gaza\":\"PS-GZA\",\"Hebron\":\"PS-HBN\",\"Jenin\":\"PS-JEN\",\"Jericho and Al Aghwar\":\"PS-JRH\",\"Jerusalem\":\"PS-JEM\",\"Khan Yunis\":\"PS-KYS\",\"Nablus\":\"PS-NBS\",\"Qalqilya\":\"PS-QQA\",\"Rafah\":\"PS-RFH\",\"Ramallah\":\"PS-RBH\",\"Salfit\":\"PS-SLT\",\"Tubas\":\"PS-TBS\",\"Tulkarm\":\"PS-TKM\"},\"PT\":{\"Aveiro\":\"PT-01\",\"Beja\":\"PT-02\",\"Braga\":\"PT-03\",\"Braganca\":\"PT-04\",\"Castelo Branco\":\"PT-05\",\"Coimbra\":\"PT-06\",\"Evora\":\"PT-07\",\"Faro\":\"PT-08\",\"Guarda\":\"PT-09\",\"Leiria\":\"PT-10\",\"Lisboa\":\"PT-11\",\"Portalegre\":\"PT-12\",\"Porto\":\"PT-13\",\"Regiao Autonoma da Madeira\":\"PT-30\",\"Regiao Autonoma dos Acores\":\"PT-20\",\"Santarem\":\"PT-14\",\"Setubal\":\"PT-15\",\"Viana do Castelo\":\"PT-16\",\"Vila Real\":\"PT-17\",\"Viseu\":\"PT-18\"},\"PW\":{\"Airai\":\"PW-004\",\"Kayangel\":\"PW-100\",\"Koror\":\"PW-150\",\"Melekeok\":\"PW-212\",\"Ngaraard\":\"PW-214\",\"Ngardmau\":\"PW-222\"},\"PY\":{\"Alto Parana\":\"PY-10\",\"Amambay\":\"PY-13\",\"Asuncion\":\"PY-ASU\",\"Boqueron\":\"PY-19\",\"Caaguazu\":\"PY-5\",\"Caazapa\":\"PY-6\",\"Canindeyu\":\"PY-14\",\"Central\":\"PY-11\",\"Concepcion\":\"PY-1\",\"Cordillera\":\"PY-3\",\"Guaira\":\"PY-4\",\"Itapua\":\"PY-7\",\"Misiones\":\"PY-8\",\"Neembucu\":\"PY-12\",\"Paraguari\":\"PY-9\",\"Presidente Hayes\":\"PY-15\",\"San Pedro\":\"PY-2\"},\"QA\":{\"Ad Dawhah\":\"QA-DA\",\"Al Khawr wa adh Dhakhirah\":\"QA-KH\",\"Al Wakrah\":\"QA-WA\",\"Ar Rayyan\":\"QA-RA\",\"Ash Shamal\":\"QA-MS\",\"Az Za\'ayin\":\"QA-ZA\",\"Umm Salal\":\"QA-US\"},\"AD\":{\"Andorra la Vella\":\"AD-07\",\"Canillo\":\"AD-02\",\"Encamp\":\"AD-03\",\"Escaldes-Engordany\":\"AD-08\",\"La Massana\":\"AD-04\",\"Ordino\":\"AD-05\",\"Sant Julia de Loria\":\"AD-06\"},\"AE\":{\"\'Ajman\":\"AE-AJ\",\"Abu Zaby\":\"AE-AZ\",\"Al Fujayrah\":\"AE-FU\",\"Ash Shariqah\":\"AE-SH\",\"Dubayy\":\"AE-DU\",\"Ra\'s al Khaymah\":\"AE-RK\",\"Umm al Qaywayn\":\"AE-UQ\"},\"AF\":{\"Badakhshan\":\"AF-BDS\",\"Badghis\":\"AF-BDG\",\"Baghlan\":\"AF-BGL\",\"Balkh\":\"AF-BAL\",\"Bamyan\":\"AF-BAM\",\"Daykundi\":\"AF-DAY\",\"Farah\":\"AF-FRA\",\"Faryab\":\"AF-FYB\",\"Ghazni\":\"AF-GHA\",\"Ghor\":\"AF-GHO\",\"Helmand\":\"AF-HEL\",\"Herat\":\"AF-HER\",\"Jowzjan\":\"AF-JOW\",\"Kabul\":\"AF-KAB\",\"Kandahar\":\"AF-KAN\",\"Khost\":\"AF-KHO\",\"Kunduz\":\"AF-KDZ\",\"Laghman\":\"AF-LAG\",\"Logar\":\"AF-LOG\",\"Nangarhar\":\"AF-NAN\",\"Nimroz\":\"AF-NIM\",\"Paktika\":\"AF-PKA\",\"Paktiya\":\"AF-PIA\",\"Parwan\":\"AF-PAR\",\"Takhar\":\"AF-TAK\",\"Uruzgan\":\"AF-URU\"},\"AG\":{\"Redonda\":\"AG-11\",\"Saint George\":\"AG-03\",\"Saint John\":\"AG-04\",\"Saint Mary\":\"AG-05\",\"Saint Paul\":\"AG-06\",\"Saint Peter\":\"AG-07\",\"Saint Philip\":\"AG-08\"},\"AI\":{\"Anguilla\":\"\"},\"AL\":{\"Berat\":\"AL-01\",\"Diber\":\"AL-09\",\"Durres\":\"AL-02\",\"Elbasan\":\"AL-03\",\"Fier\":\"AL-04\",\"Gjirokaster\":\"AL-05\",\"Korce\":\"AL-06\",\"Kukes\":\"AL-07\",\"Lezhe\":\"AL-08\",\"Shkoder\":\"AL-10\",\"Tirane\":\"AL-11\",\"Vlore\":\"AL-12\"},\"AM\":{\"Aragacotn\":\"AM-AG\",\"Ararat\":\"AM-AR\",\"Armavir\":\"AM-AV\",\"Erevan\":\"AM-ER\",\"Gegark\'unik\'\":\"AM-GR\",\"Kotayk\'\":\"AM-KT\",\"Lori\":\"AM-LO\",\"Sirak\":\"AM-SH\",\"Syunik\'\":\"AM-SU\",\"Tavus\":\"AM-TV\",\"Vayoc Jor\":\"AM-VD\"},\"AO\":{\"Bengo\":\"AO-BGO\",\"Benguela\":\"AO-BGU\",\"Bie\":\"AO-BIE\",\"Cabinda\":\"AO-CAB\",\"Cuando Cubango\":\"AO-CCU\",\"Cuanza-Norte\":\"AO-CNO\",\"Cuanza-Sul\":\"AO-CUS\",\"Cunene\":\"AO-CNN\",\"Huambo\":\"AO-HUA\",\"Huila\":\"AO-HUI\",\"Luanda\":\"AO-LUA\",\"Lunda-Norte\":\"AO-LNO\",\"Lunda-Sul\":\"AO-LSU\",\"Malange\":\"AO-MAL\",\"Moxico\":\"AO-MOX\",\"Namibe\":\"AO-NAM\",\"Uige\":\"AO-UIG\",\"Zaire\":\"AO-ZAI\"},\"AR\":{\"Buenos Aires\":\"AR-B\",\"Catamarca\":\"AR-K\",\"Chaco\":\"AR-H\",\"Chubut\":\"AR-U\",\"Ciudad Autonoma de Buenos Aires\":\"AR-C\",\"Cordoba\":\"AR-X\",\"Corrientes\":\"AR-W\",\"Entre Rios\":\"AR-E\",\"Formosa\":\"AR-P\",\"Jujuy\":\"AR-Y\",\"La Pampa\":\"AR-L\",\"La Rioja\":\"AR-F\",\"Mendoza\":\"AR-M\",\"Misiones\":\"AR-N\",\"Neuquen\":\"AR-Q\",\"Rio Negro\":\"AR-R\",\"Salta\":\"AR-A\",\"San Juan\":\"AR-J\",\"San Luis\":\"AR-D\",\"Santa Cruz\":\"AR-Z\",\"Santa Fe\":\"AR-S\",\"Santiago del Estero\":\"AR-G\",\"Tierra del Fuego\":\"AR-V\",\"Tucuman\":\"AR-T\"},\"AS\":{\"Eastern District\":\"\",\"Western District\":\"\"},\"RE\":{\"Reunion\":\"\"},\"AT\":{\"Burgenland\":\"AT-1\",\"Karnten\":\"AT-2\",\"Niederosterreich\":\"AT-3\",\"Oberosterreich\":\"AT-4\",\"Salzburg\":\"AT-5\",\"Steiermark\":\"AT-6\",\"Tirol\":\"AT-7\",\"Vorarlberg\":\"AT-8\",\"Wien\":\"AT-9\"},\"AU\":{\"Australian Capital Territory\":\"AU-ACT\",\"New South Wales\":\"AU-NSW\",\"Northern Territory\":\"AU-NT\",\"Queensland\":\"AU-QLD\",\"South Australia\":\"AU-SA\",\"Tasmania\":\"AU-TAS\",\"Victoria\":\"AU-VIC\",\"Western Australia\":\"AU-WA\"},\"AW\":{\"Aruba\":\"\"},\"AX\":{\"Eckeroe\":\"\",\"Finstroem\":\"\",\"Hammarland\":\"\",\"Jomala\":\"\",\"Lemland\":\"\",\"Mariehamn\":\"\",\"Saltvik\":\"\",\"Sund\":\"\"},\"AZ\":{\"Abseron\":\"AZ-ABS\",\"Agcabadi\":\"AZ-AGC\",\"Agdas\":\"AZ-AGS\",\"Astara\":\"AZ-AST\",\"Baki\":\"AZ-BA\",\"Balakan\":\"AZ-BAL\",\"Barda\":\"AZ-BAR\",\"Beylaqan\":\"AZ-BEY\",\"Bilasuvar\":\"AZ-BIL\",\"Calilabad\":\"AZ-CAL\",\"Fuzuli\":\"AZ-FUZ\",\"Gadabay\":\"AZ-GAD\",\"Ganca\":\"AZ-GA\",\"Goranboy\":\"AZ-GOR\",\"Goycay\":\"AZ-GOY\",\"Goygol\":\"AZ-GYG\",\"Imisli\":\"AZ-IMI\",\"Ismayilli\":\"AZ-ISM\",\"Kurdamir\":\"AZ-KUR\",\"Lankaran\":\"AZ-LA\",\"Masalli\":\"AZ-MAS\",\"Mingacevir\":\"AZ-MI\",\"Naxcivan\":\"AZ-NX\",\"Neftcala\":\"AZ-NEF\",\"Oguz\":\"AZ-OGU\",\"Qabala\":\"AZ-QAB\",\"Qax\":\"AZ-QAX\",\"Quba\":\"AZ-QBA\",\"Qusar\":\"AZ-QUS\",\"Saatli\":\"AZ-SAT\",\"Sabirabad\":\"AZ-SAB\",\"Saki\":\"AZ-SAK\",\"Salyan\":\"AZ-SAL\",\"Samaxi\":\"AZ-SMI\",\"Samkir\":\"AZ-SKR\",\"Samux\":\"AZ-SMX\",\"Sirvan\":\"AZ-SR\",\"Siyazan\":\"AZ-SIY\",\"Sumqayit\":\"AZ-SM\",\"Tartar\":\"AZ-TAR\",\"Xacmaz\":\"AZ-XAC\",\"Xizi\":\"AZ-XIZ\",\"Yardimli\":\"AZ-YAR\",\"Yevlax\":\"AZ-YEV\",\"Zaqatala\":\"AZ-ZAQ\",\"Zardab\":\"AZ-ZAR\"},\"RO\":{\"Alba\":\"RO-AB\",\"Arad\":\"RO-AR\",\"Arges\":\"RO-AG\",\"Bacau\":\"RO-BC\",\"Bihor\":\"RO-BH\",\"Bistrita-Nasaud\":\"RO-BN\",\"Botosani\":\"RO-BT\",\"Braila\":\"RO-BR\",\"Brasov\":\"RO-BV\",\"Bucuresti\":\"RO-B\",\"Buzau\":\"RO-BZ\",\"Calarasi\":\"RO-CL\",\"Caras-Severin\":\"RO-CS\",\"Cluj\":\"RO-CJ\",\"Constanta\":\"RO-CT\",\"Covasna\":\"RO-CV\",\"Dambovita\":\"RO-DB\",\"Dolj\":\"RO-DJ\",\"Galati\":\"RO-GL\",\"Giurgiu\":\"RO-GR\",\"Gorj\":\"RO-GJ\",\"Harghita\":\"RO-HR\",\"Hunedoara\":\"RO-HD\",\"Ialomita\":\"RO-IL\",\"Iasi\":\"RO-IS\",\"Ilfov\":\"RO-IF\",\"Maramures\":\"RO-MM\",\"Mehedinti\":\"RO-MH\",\"Mures\":\"RO-MS\",\"Neamt\":\"RO-NT\",\"Olt\":\"RO-OT\",\"Prahova\":\"RO-PH\",\"Salaj\":\"RO-SJ\",\"Satu Mare\":\"RO-SM\",\"Sibiu\":\"RO-SB\",\"Suceava\":\"RO-SV\",\"Teleorman\":\"RO-TR\",\"Timis\":\"RO-TM\",\"Tulcea\":\"RO-TL\",\"Valcea\":\"RO-VL\",\"Vaslui\":\"RO-VS\",\"Vrancea\":\"RO-VN\"},\"BA\":{\"Brcko distrikt\":\"BA-BRC\",\"Federacija Bosne i Hercegovine\":\"BA-BIH\",\"Republika Srpska\":\"BA-SRP\"},\"BB\":{\"Christ Church\":\"BB-01\",\"Saint Andrew\":\"BB-02\",\"Saint George\":\"BB-03\",\"Saint James\":\"BB-04\",\"Saint John\":\"BB-05\",\"Saint Lucy\":\"BB-07\",\"Saint Michael\":\"BB-08\",\"Saint Peter\":\"BB-09\",\"Saint Philip\":\"BB-10\",\"Saint Thomas\":\"BB-11\"},\"RS\":{\"Beograd\":\"RS-00\",\"Borski okrug\":\"RS-14\",\"Branicevski okrug\":\"RS-11\",\"Jablanicki okrug\":\"RS-23\",\"Juznobacki okrug\":\"RS-06\",\"Juznobanatski okrug\":\"RS-04\",\"Kolubarski okrug\":\"RS-09\",\"Kosovsko-Mitrovacki okrug\":\"RS-28\",\"Macvanski okrug\":\"RS-08\",\"Moravicki okrug\":\"RS-17\",\"Nisavski okrug\":\"RS-20\",\"Pcinjski okrug\":\"RS-24\",\"Pecki okrug\":\"RS-26\",\"Pirotski okrug\":\"RS-22\",\"Podunavski okrug\":\"RS-10\",\"Pomoravski okrug\":\"RS-13\",\"Prizrenski okrug\":\"RS-27\",\"Rasinski okrug\":\"RS-19\",\"Raski okrug\":\"RS-18\",\"Severnobacki okrug\":\"RS-01\",\"Severnobanatski okrug\":\"RS-03\",\"Srednjebanatski okrug\":\"RS-02\",\"Sremski okrug\":\"RS-07\",\"Sumadijski okrug\":\"RS-12\",\"Toplicki okrug\":\"RS-21\",\"Zajecarski okrug\":\"RS-15\",\"Zapadnobacki okrug\":\"RS-05\",\"Zlatiborski okrug\":\"RS-16\"},\"BD\":{\"Barishal\":\"BD-A\",\"Chattogram\":\"BD-B\",\"Dhaka\":\"BD-C\",\"Khulna\":\"BD-D\",\"Rajshahi\":\"BD-E\",\"Rangpur\":\"BD-F\",\"Sylhet\":\"BD-G\"},\"RU\":{\"Adygeya, Respublika\":\"RU-AD\",\"Altay, Respublika\":\"RU-AL\",\"Altayskiy kray\":\"RU-ALT\",\"Amurskaya oblast\'\":\"RU-AMU\",\"Arkhangel\'skaya oblast\'\":\"RU-ARK\",\"Astrakhanskaya oblast\'\":\"RU-AST\",\"Bashkortostan, Respublika\":\"RU-BA\",\"Belgorodskaya oblast\'\":\"RU-BEL\",\"Bryanskaya oblast\'\":\"RU-BRY\",\"Buryatiya, Respublika\":\"RU-BU\",\"Chechenskaya Respublika\":\"RU-CE\",\"Chelyabinskaya oblast\'\":\"RU-CHE\",\"Chukotskiy avtonomnyy okrug\":\"RU-CHU\",\"Chuvashskaya Respublika\":\"RU-CU\",\"Dagestan, Respublika\":\"RU-DA\",\"Ingushetiya, Respublika\":\"RU-IN\",\"Irkutskaya oblast\'\":\"RU-IRK\",\"Ivanovskaya oblast\'\":\"RU-IVA\",\"Kabardino-Balkarskaya Respublika\":\"RU-KB\",\"Kaliningradskaya oblast\'\":\"RU-KGD\",\"Kalmykiya, Respublika\":\"RU-KL\",\"Kaluzhskaya oblast\'\":\"RU-KLU\",\"Kamchatskiy kray\":\"RU-KAM\",\"Karachayevo-Cherkesskaya Respublika\":\"RU-KC\",\"Kareliya, Respublika\":\"RU-KR\",\"Kemerovskaya oblast\'\":\"RU-KEM\",\"Khabarovskiy kray\":\"RU-KHA\",\"Khakasiya, Respublika\":\"RU-KK\",\"Khanty-Mansiyskiy avtonomnyy okrug\":\"RU-KHM\",\"Kirovskaya oblast\'\":\"RU-KIR\",\"Komi, Respublika\":\"RU-KO\",\"Kostromskaya oblast\'\":\"RU-KOS\",\"Krasnodarskiy kray\":\"RU-KDA\",\"Krasnoyarskiy kray\":\"RU-KYA\",\"Kurganskaya oblast\'\":\"RU-KGN\",\"Kurskaya oblast\'\":\"RU-KRS\",\"Leningradskaya oblast\'\":\"RU-LEN\",\"Lipetskaya oblast\'\":\"RU-LIP\",\"Magadanskaya oblast\'\":\"RU-MAG\",\"Mariy El, Respublika\":\"RU-ME\",\"Mordoviya, Respublika\":\"RU-MO\",\"Moskovskaya oblast\'\":\"RU-MOS\",\"Moskva\":\"RU-MOW\",\"Murmanskaya oblast\'\":\"RU-MUR\",\"Nenetskiy avtonomnyy okrug\":\"RU-NEN\",\"Nizhegorodskaya oblast\'\":\"RU-NIZ\",\"Novgorodskaya oblast\'\":\"RU-NGR\",\"Novosibirskaya oblast\'\":\"RU-NVS\",\"Omskaya oblast\'\":\"RU-OMS\",\"Orenburgskaya oblast\'\":\"RU-ORE\",\"Orlovskaya oblast\'\":\"RU-ORL\",\"Penzenskaya oblast\'\":\"RU-PNZ\",\"Permskiy kray\":\"RU-PER\",\"Primorskiy kray\":\"RU-PRI\",\"Pskovskaya oblast\'\":\"RU-PSK\",\"Rostovskaya oblast\'\":\"RU-ROS\",\"Ryazanskaya oblast\'\":\"RU-RYA\",\"Saha, Respublika\":\"RU-SA\",\"Sakhalinskaya oblast\'\":\"RU-SAK\",\"Samarskaya oblast\'\":\"RU-SAM\",\"Sankt-Peterburg\":\"RU-SPE\",\"Saratovskaya oblast\'\":\"RU-SAR\",\"Severnaya Osetiya, Respublika\":\"RU-SE\",\"Smolenskaya oblast\'\":\"RU-SMO\",\"Stavropol\'skiy kray\":\"RU-STA\",\"Sverdlovskaya oblast\'\":\"RU-SVE\",\"Tambovskaya oblast\'\":\"RU-TAM\",\"Tatarstan, Respublika\":\"RU-TA\",\"Tomskaya oblast\'\":\"RU-TOM\",\"Tul\'skaya oblast\'\":\"RU-TUL\",\"Tverskaya oblast\'\":\"RU-TVE\",\"Tyumenskaya oblast\'\":\"RU-TYU\",\"Tyva, Respublika\":\"RU-TY\",\"Udmurtskaya Respublika\":\"RU-UD\",\"Ul\'yanovskaya oblast\'\":\"RU-ULY\",\"Vladimirskaya oblast\'\":\"RU-VLA\",\"Volgogradskaya oblast\'\":\"RU-VGG\",\"Vologodskaya oblast\'\":\"RU-VLG\",\"Voronezhskaya oblast\'\":\"RU-VOR\",\"Yamalo-Nenetskiy avtonomnyy okrug\":\"RU-YAN\",\"Yaroslavskaya oblast\'\":\"RU-YAR\",\"Yevreyskaya avtonomnaya oblast\'\":\"RU-YEV\",\"Zabaykal\'skiy kray\":\"RU-ZAB\"},\"BE\":{\"Antwerpen\":\"BE-VAN\",\"Brabant wallon\":\"BE-WBR\",\"Brussels Hoofdstedelijk Gewest\":\"BE-BRU\",\"Hainaut\":\"BE-WHT\",\"Liege\":\"BE-WLG\",\"Limburg\":\"BE-VLI\",\"Luxembourg\":\"BE-WLX\",\"Namur\":\"BE-WNA\",\"Oost-Vlaanderen\":\"BE-VOV\",\"Vlaams-Brabant\":\"BE-VBR\",\"West-Vlaanderen\":\"BE-VWV\"},\"BF\":{\"Bam\":\"BF-BAM\",\"Bazega\":\"BF-BAZ\",\"Boulgou\":\"BF-BLG\",\"Boulkiemde\":\"BF-BLK\",\"Ganzourgou\":\"BF-GAN\",\"Gnagna\":\"BF-GNA\",\"Gourma\":\"BF-GOU\",\"Houet\":\"BF-HOU\",\"Kadiogo\":\"BF-KAD\",\"Komondjari\":\"BF-KMD\",\"Kompienga\":\"BF-KMP\",\"Koulpelogo\":\"BF-KOP\",\"Kouritenga\":\"BF-KOT\",\"Kourweogo\":\"BF-KOW\",\"Leraba\":\"BF-LER\",\"Loroum\":\"BF-LOR\",\"Nahouri\":\"BF-NAO\",\"Namentenga\":\"BF-NAM\",\"Nayala\":\"BF-NAY\",\"Oubritenga\":\"BF-OUB\",\"Oudalan\":\"BF-OUD\",\"Passore\":\"BF-PAS\",\"Poni\":\"BF-PON\",\"Sanmatenga\":\"BF-SMT\",\"Seno\":\"BF-SEN\",\"Sissili\":\"BF-SIS\",\"Soum\":\"BF-SOM\",\"Sourou\":\"BF-SOR\",\"Tapoa\":\"BF-TAP\",\"Tuy\":\"BF-TUI\",\"Yatenga\":\"BF-YAT\",\"Ziro\":\"BF-ZIR\",\"Zondoma\":\"BF-ZON\",\"Zoundweogo\":\"BF-ZOU\"},\"RW\":{\"Est\":\"RW-02\",\"Nord\":\"RW-03\",\"Ouest\":\"RW-04\",\"Sud\":\"RW-05\",\"Ville de Kigali\":\"RW-01\"},\"BG\":{\"Blagoevgrad\":\"BG-01\",\"Burgas\":\"BG-02\",\"Dobrich\":\"BG-08\",\"Gabrovo\":\"BG-07\",\"Haskovo\":\"BG-26\",\"Kardzhali\":\"BG-09\",\"Kyustendil\":\"BG-10\",\"Lovech\":\"BG-11\",\"Montana\":\"BG-12\",\"Pazardzhik\":\"BG-13\",\"Pernik\":\"BG-14\",\"Pleven\":\"BG-15\",\"Plovdiv\":\"BG-16\",\"Razgrad\":\"BG-17\",\"Ruse\":\"BG-18\",\"Shumen\":\"BG-27\",\"Silistra\":\"BG-19\",\"Sliven\":\"BG-20\",\"Smolyan\":\"BG-21\",\"Sofia\":\"BG-23\",\"Sofia (stolitsa)\":\"BG-22\",\"Stara Zagora\":\"BG-24\",\"Targovishte\":\"BG-25\",\"Varna\":\"BG-03\",\"Veliko Tarnovo\":\"BG-04\",\"Vidin\":\"BG-05\",\"Vratsa\":\"BG-06\",\"Yambol\":\"BG-28\"},\"BH\":{\"Al \'Asimah\":\"BH-13\",\"Al Janubiyah\":\"BH-14\",\"Al Muharraq\":\"BH-15\",\"Ash Shamaliyah\":\"BH-17\"},\"BI\":{\"Bujumbura Mairie\":\"BI-BM\",\"Cibitoke\":\"BI-CI\",\"Gitega\":\"BI-GI\",\"Kirundo\":\"BI-KI\",\"Mwaro\":\"BI-MW\",\"Ngozi\":\"BI-NG\",\"Rumonge\":\"BI-RM\",\"Rutana\":\"BI-RT\",\"Ruyigi\":\"BI-RY\"},\"BJ\":{\"Alibori\":\"BJ-AL\",\"Atacora\":\"BJ-AK\",\"Atlantique\":\"BJ-AQ\",\"Borgou\":\"BJ-BO\",\"Donga\":\"BJ-DO\",\"Littoral\":\"BJ-LI\",\"Mono\":\"BJ-MO\",\"Oueme\":\"BJ-OU\",\"Plateau\":\"BJ-PL\",\"Zou\":\"BJ-ZO\"},\"BL\":{\"Saint Barthelemy\":\"\"},\"BM\":{\"Hamilton\":\"\",\"Saint George\":\"\"},\"BN\":{\"Belait\":\"BN-BE\",\"Brunei-Muara\":\"BN-BM\",\"Temburong\":\"BN-TE\",\"Tutong\":\"BN-TU\"},\"BO\":{\"Chuquisaca\":\"BO-H\",\"Cochabamba\":\"BO-C\",\"El Beni\":\"BO-B\",\"La Paz\":\"BO-L\",\"Oruro\":\"BO-O\",\"Pando\":\"BO-N\",\"Potosi\":\"BO-P\",\"Santa Cruz\":\"BO-S\",\"Tarija\":\"BO-T\"},\"SA\":{\"\'Asir\":\"SA-14\",\"Al Bahah\":\"SA-11\",\"Al Hudud ash Shamaliyah\":\"SA-08\",\"Al Jawf\":\"SA-12\",\"Al Madinah al Munawwarah\":\"SA-03\",\"Al Qasim\":\"SA-05\",\"Ar Riyad\":\"SA-01\",\"Ash Sharqiyah\":\"SA-04\",\"Ha\'il\":\"SA-06\",\"Jazan\":\"SA-09\",\"Makkah al Mukarramah\":\"SA-02\",\"Najran\":\"SA-10\",\"Tabuk\":\"SA-07\"},\"SB\":{\"Choiseul\":\"SB-CH\",\"Guadalcanal\":\"SB-GU\",\"Western\":\"SB-WE\"},\"BQ\":{\"Bonaire\":\"BQ-BO\",\"Saba\":\"BQ-SA\",\"Sint Eustatius\":\"BQ-SE\"},\"SC\":{\"Anse Boileau\":\"SC-02\",\"Anse aux Pins\":\"SC-01\",\"Baie Lazare\":\"SC-06\",\"Baie Sainte Anne\":\"SC-07\",\"Beau Vallon\":\"SC-08\",\"Bel Ombre\":\"SC-10\",\"Cascade\":\"SC-11\",\"English River\":\"SC-16\",\"Grand Anse Mahe\":\"SC-13\",\"Grand Anse Praslin\":\"SC-14\",\"La Digue\":\"SC-15\",\"Pointe Larue\":\"SC-20\",\"Takamaka\":\"SC-23\"},\"BR\":{\"Acre\":\"BR-AC\",\"Alagoas\":\"BR-AL\",\"Amapa\":\"BR-AP\",\"Amazonas\":\"BR-AM\",\"Bahia\":\"BR-BA\",\"Ceara\":\"BR-CE\",\"Distrito Federal\":\"BR-DF\",\"Espirito Santo\":\"BR-ES\",\"Goias\":\"BR-GO\",\"Maranhao\":\"BR-MA\",\"Mato Grosso\":\"BR-MT\",\"Mato Grosso do Sul\":\"BR-MS\",\"Minas Gerais\":\"BR-MG\",\"Para\":\"BR-PA\",\"Paraiba\":\"BR-PB\",\"Parana\":\"BR-PR\",\"Pernambuco\":\"BR-PE\",\"Piaui\":\"BR-PI\",\"Rio Grande do Norte\":\"BR-RN\",\"Rio Grande do Sul\":\"BR-RS\",\"Rio de Janeiro\":\"BR-RJ\",\"Rondonia\":\"BR-RO\",\"Roraima\":\"BR-RR\",\"Santa Catarina\":\"BR-SC\",\"Sao Paulo\":\"BR-SP\",\"Sergipe\":\"BR-SE\",\"Tocantins\":\"BR-TO\"},\"SD\":{\"Blue Nile\":\"SD-NB\",\"Central Darfur\":\"SD-DC\",\"Gedaref\":\"SD-GD\",\"Gezira\":\"SD-GZ\",\"Kassala\":\"SD-KA\",\"Khartoum\":\"SD-KH\",\"North Darfur\":\"SD-DN\",\"North Kordofan\":\"SD-KN\",\"Northern\":\"SD-NO\",\"Red Sea\":\"SD-RS\",\"River Nile\":\"SD-NR\",\"Sennar\":\"SD-SI\",\"South Darfur\":\"SD-DS\",\"South Kordofan\":\"SD-KS\",\"West Darfur\":\"SD-DW\",\"West Kordofan\":\"SD-GK\",\"White Nile\":\"SD-NW\"},\"BS\":{\"Central Abaco\":\"BS-CO\",\"City of Freeport\":\"BS-FP\",\"Long Island\":\"BS-LI\",\"New Providence\":\"BS-NP\",\"North Abaco\":\"BS-NO\",\"North Andros\":\"BS-NS\",\"South Eleuthera\":\"BS-SE\"},\"SE\":{\"Blekinge lan\":\"SE-K\",\"Dalarnas lan\":\"SE-W\",\"Gavleborgs lan\":\"SE-X\",\"Gotlands lan\":\"SE-I\",\"Hallands lan\":\"SE-N\",\"Jamtlands lan\":\"SE-Z\",\"Jonkopings lan\":\"SE-F\",\"Kalmar lan\":\"SE-H\",\"Kronobergs lan\":\"SE-G\",\"Norrbottens lan\":\"SE-BD\",\"Orebro lan\":\"SE-T\",\"Ostergotlands lan\":\"SE-E\",\"Skane lan\":\"SE-M\",\"Sodermanlands lan\":\"SE-D\",\"Stockholms lan\":\"SE-AB\",\"Uppsala lan\":\"SE-C\",\"Varmlands lan\":\"SE-S\",\"Vasterbottens lan\":\"SE-AC\",\"Vasternorrlands lan\":\"SE-Y\",\"Vastmanlands lan\":\"SE-U\",\"Vastra Gotalands lan\":\"SE-O\"},\"BT\":{\"Bumthang\":\"BT-33\",\"Chhukha\":\"BT-12\",\"Gasa\":\"BT-GA\",\"Haa\":\"BT-13\",\"Lhuentse\":\"BT-44\",\"Monggar\":\"BT-42\",\"Paro\":\"BT-11\",\"Pema Gatshel\":\"BT-43\",\"Punakha\":\"BT-23\",\"Samdrup Jongkhar\":\"BT-45\",\"Samtse\":\"BT-14\",\"Thimphu\":\"BT-15\",\"Trashigang\":\"BT-41\",\"Trongsa\":\"BT-32\",\"Tsirang\":\"BT-21\",\"Wangdue Phodrang\":\"BT-24\"},\"SG\":{\"Singapore\":\"\"},\"BV\":{\"Bouvet Island\":\"\"},\"SH\":{\"Saint Helena\":\"SH-HL\"},\"BW\":{\"Central\":\"BW-CE\",\"Chobe\":\"BW-CH\",\"Kgalagadi\":\"BW-KG\",\"Kgatleng\":\"BW-KL\",\"Kweneng\":\"BW-KW\",\"North East\":\"BW-NE\",\"North West\":\"BW-NW\",\"South East\":\"BW-SE\",\"Southern\":\"BW-SO\"},\"SI\":{\"Ajdovscina\":\"SI-001\",\"Ankaran\":\"SI-213\",\"Apace\":\"SI-195\",\"Beltinci\":\"SI-002\",\"Benedikt\":\"SI-148\",\"Bistrica ob Sotli\":\"SI-149\",\"Bled\":\"SI-003\",\"Bloke\":\"SI-150\",\"Bohinj\":\"SI-004\",\"Borovnica\":\"SI-005\",\"Bovec\":\"SI-006\",\"Braslovce\":\"SI-151\",\"Brda\":\"SI-007\",\"Brezice\":\"SI-009\",\"Brezovica\":\"SI-008\",\"Cankova\":\"SI-152\",\"Celje\":\"SI-011\",\"Cerklje na Gorenjskem\":\"SI-012\",\"Cerknica\":\"SI-013\",\"Cerkno\":\"SI-014\",\"Cirkulane\":\"SI-196\",\"Crensovci\":\"SI-015\",\"Crnomelj\":\"SI-017\",\"Destrnik\":\"SI-018\",\"Divaca\":\"SI-019\",\"Dobje\":\"SI-154\",\"Dobrepolje\":\"SI-020\",\"Dobrna\":\"SI-155\",\"Dobrova-Polhov Gradec\":\"SI-021\",\"Dobrovnik\":\"SI-156\",\"Domzale\":\"SI-023\",\"Dornava\":\"SI-024\",\"Dravograd\":\"SI-025\",\"Duplek\":\"SI-026\",\"Gorje\":\"SI-207\",\"Gornja Radgona\":\"SI-029\",\"Gornji Petrovci\":\"SI-031\",\"Grad\":\"SI-158\",\"Grosuplje\":\"SI-032\",\"Hajdina\":\"SI-159\",\"Hoce-Slivnica\":\"SI-160\",\"Hodos\":\"SI-161\",\"Horjul\":\"SI-162\",\"Hrastnik\":\"SI-034\",\"Hrpelje-Kozina\":\"SI-035\",\"Idrija\":\"SI-036\",\"Ig\":\"SI-037\",\"Ilirska Bistrica\":\"SI-038\",\"Ivancna Gorica\":\"SI-039\",\"Izola\":\"SI-040\",\"Jesenice\":\"SI-041\",\"Jursinci\":\"SI-042\",\"Kamnik\":\"SI-043\",\"Kanal\":\"SI-044\",\"Kidricevo\":\"SI-045\",\"Kobarid\":\"SI-046\",\"Kobilje\":\"SI-047\",\"Kocevje\":\"SI-048\",\"Komen\":\"SI-049\",\"Komenda\":\"SI-164\",\"Koper\":\"SI-050\",\"Kosanjevica na Krki\":\"SI-197\",\"Kostel\":\"SI-165\",\"Kranj\":\"SI-052\",\"Kranjska Gora\":\"SI-053\",\"Krizevci\":\"SI-166\",\"Krsko\":\"SI-054\",\"Kungota\":\"SI-055\",\"Kuzma\":\"SI-056\",\"Lasko\":\"SI-057\",\"Lenart\":\"SI-058\",\"Lendava\":\"SI-059\",\"Litija\":\"SI-060\",\"Ljubljana\":\"SI-061\",\"Ljutomer\":\"SI-063\",\"Log-Dragomer\":\"SI-208\",\"Logatec\":\"SI-064\",\"Loska dolina\":\"SI-065\",\"Loski Potok\":\"SI-066\",\"Lovrenc na Pohorju\":\"SI-167\",\"Luce\":\"SI-067\",\"Lukovica\":\"SI-068\",\"Majsperk\":\"SI-069\",\"Makole\":\"SI-198\",\"Maribor\":\"SI-070\",\"Markovci\":\"SI-168\",\"Medvode\":\"SI-071\",\"Menges\":\"SI-072\",\"Metlika\":\"SI-073\",\"Mezica\":\"SI-074\",\"Miklavz na Dravskem polju\":\"SI-169\",\"Miren-Kostanjevica\":\"SI-075\",\"Mirna\":\"SI-212\",\"Mirna Pec\":\"SI-170\",\"Mislinja\":\"SI-076\",\"Mokronog-Trebelno\":\"SI-199\",\"Moravce\":\"SI-077\",\"Mozirje\":\"SI-079\",\"Murska Sobota\":\"SI-080\",\"Muta\":\"SI-081\",\"Naklo\":\"SI-082\",\"Nazarje\":\"SI-083\",\"Nova Gorica\":\"SI-084\",\"Novo Mesto\":\"SI-085\",\"Odranci\":\"SI-086\",\"Oplotnica\":\"SI-171\",\"Ormoz\":\"SI-087\",\"Piran\":\"SI-090\",\"Pivka\":\"SI-091\",\"Podcetrtek\":\"SI-092\",\"Podlehnik\":\"SI-172\",\"Poljcane\":\"SI-200\",\"Polzela\":\"SI-173\",\"Postojna\":\"SI-094\",\"Prebold\":\"SI-174\",\"Preddvor\":\"SI-095\",\"Prevalje\":\"SI-175\",\"Ptuj\":\"SI-096\",\"Puconci\":\"SI-097\",\"Race-Fram\":\"SI-098\",\"Radece\":\"SI-099\",\"Radenci\":\"SI-100\",\"Radlje ob Dravi\":\"SI-101\",\"Radovljica\":\"SI-102\",\"Ravne na Koroskem\":\"SI-103\",\"Razkrizje\":\"SI-176\",\"Recica ob Savinji\":\"SI-209\",\"Rence-Vogrsko\":\"SI-201\",\"Ribnica\":\"SI-104\",\"Rogaska Slatina\":\"SI-106\",\"Rogasovci\":\"SI-105\",\"Ruse\":\"SI-108\",\"Salovci\":\"SI-033\",\"Semic\":\"SI-109\",\"Sempeter-Vrtojba\":\"SI-183\",\"Sencur\":\"SI-117\",\"Sentilj\":\"SI-118\",\"Sentjernej\":\"SI-119\",\"Sentjur\":\"SI-120\",\"Sentrupert\":\"SI-211\",\"Sevnica\":\"SI-110\",\"Sezana\":\"SI-111\",\"Skocjan\":\"SI-121\",\"Skofja Loka\":\"SI-122\",\"Skofljica\":\"SI-123\",\"Slovenj Gradec\":\"SI-112\",\"Slovenska Bistrica\":\"SI-113\",\"Slovenske Konjice\":\"SI-114\",\"Smarje pri Jelsah\":\"SI-124\",\"Smarjeske Toplice\":\"SI-206\",\"Smartno ob Paki\":\"SI-125\",\"Smartno pri Litiji\":\"SI-194\",\"Sodrazica\":\"SI-179\",\"Solcava\":\"SI-180\",\"Sostanj\":\"SI-126\",\"Starse\":\"SI-115\",\"Store\":\"SI-127\",\"Straza\":\"SI-203\",\"Sveta Trojica v Slovenskih goricah\":\"SI-204\",\"Sveti Andraz v Slovenskih Goricah\":\"SI-182\",\"Sveti Jurij ob Scavnici\":\"SI-116\",\"Sveti Jurij v Slovenskih goricah\":\"SI-210\",\"Sveti Tomaz\":\"SI-205\",\"Tabor\":\"SI-184\",\"Tisina\":\"SI-010\",\"Tolmin\":\"SI-128\",\"Trbovlje\":\"SI-129\",\"Trebnje\":\"SI-130\",\"Trnovska Vas\":\"SI-185\",\"Trzic\":\"SI-131\",\"Trzin\":\"SI-186\",\"Turnisce\":\"SI-132\",\"Velenje\":\"SI-133\",\"Velika Polana\":\"SI-187\",\"Velike Lasce\":\"SI-134\",\"Verzej\":\"SI-188\",\"Videm\":\"SI-135\",\"Vipava\":\"SI-136\",\"Vitanje\":\"SI-137\",\"Vodice\":\"SI-138\",\"Vojnik\":\"SI-139\",\"Vransko\":\"SI-189\",\"Vrhnika\":\"SI-140\",\"Vuzenica\":\"SI-141\",\"Zagorje ob Savi\":\"SI-142\",\"Zalec\":\"SI-190\",\"Zavrc\":\"SI-143\",\"Zelezniki\":\"SI-146\",\"Zetale\":\"SI-191\",\"Ziri\":\"SI-147\",\"Zrece\":\"SI-144\",\"Zuzemberk\":\"SI-193\"},\"BY\":{\"Brestskaya voblasts\'\":\"BY-BR\",\"Homyel\'skaya voblasts\'\":\"BY-HO\",\"Horad Minsk\":\"BY-HM\",\"Hrodzyenskaya voblasts\'\":\"BY-HR\",\"Mahilyowskaya voblasts\'\":\"BY-MA\",\"Minskaya voblasts\'\":\"BY-MI\",\"Vitsyebskaya voblasts\'\":\"BY-VI\"},\"SK\":{\"Banskobystricky kraj\":\"SK-BC\",\"Bratislavsky kraj\":\"SK-BL\",\"Kosicky kraj\":\"SK-KI\",\"Nitriansky kraj\":\"SK-NI\",\"Presovsky kraj\":\"SK-PV\",\"Trenciansky kraj\":\"SK-TC\",\"Trnavsky kraj\":\"SK-TA\",\"Zilinsky kraj\":\"SK-ZI\"},\"BZ\":{\"Belize\":\"BZ-BZ\",\"Cayo\":\"BZ-CY\",\"Corozal\":\"BZ-CZL\",\"Orange Walk\":\"BZ-OW\",\"Stann Creek\":\"BZ-SC\",\"Toledo\":\"BZ-TOL\"},\"SL\":{\"Eastern\":\"SL-E\",\"Northern\":\"SL-N\",\"Southern\":\"SL-S\",\"Western Area\":\"SL-W\"},\"SM\":{\"Citta di San Marino\":\"SM-07\",\"Domagnano\":\"SM-03\",\"Serravalle\":\"SM-09\"},\"SN\":{\"Dakar\":\"SN-DK\",\"Diourbel\":\"SN-DB\",\"Fatick\":\"SN-FK\",\"Kaffrine\":\"SN-KA\",\"Kaolack\":\"SN-KL\",\"Kolda\":\"SN-KD\",\"Louga\":\"SN-LG\",\"Matam\":\"SN-MT\",\"Saint-Louis\":\"SN-SL\",\"Tambacounda\":\"SN-TC\",\"Thies\":\"SN-TH\",\"Ziguinchor\":\"SN-ZG\"},\"SO\":{\"Awdal\":\"SO-AW\",\"Banaadir\":\"SO-BN\",\"Hiiraan\":\"SO-HI\",\"Mudug\":\"SO-MU\",\"Nugaal\":\"SO-NU\",\"Shabeellaha Hoose\":\"SO-SH\",\"Sool\":\"SO-SO\",\"Togdheer\":\"SO-TO\",\"Woqooyi Galbeed\":\"SO-WO\"},\"CA\":{\"Alberta\":\"CA-AB\",\"British Columbia\":\"CA-BC\",\"Manitoba\":\"CA-MB\",\"New Brunswick\":\"CA-NB\",\"Newfoundland and Labrador\":\"CA-NL\",\"Northwest Territories\":\"CA-NT\",\"Nova Scotia\":\"CA-NS\",\"Nunavut\":\"CA-NU\",\"Ontario\":\"CA-ON\",\"Prince Edward Island\":\"CA-PE\",\"Quebec\":\"CA-QC\",\"Saskatchewan\":\"CA-SK\",\"Yukon\":\"CA-YT\"},\"SR\":{\"Commewijne\":\"SR-CM\",\"Nickerie\":\"SR-NI\",\"Para\":\"SR-PR\",\"Paramaribo\":\"SR-PM\",\"Sipaliwini\":\"SR-SI\",\"Wanica\":\"SR-WA\"},\"SS\":{\"Central Equatoria\":\"SS-EC\",\"Eastern Equatoria\":\"SS-EE\",\"Northern Bahr el Ghazal\":\"SS-BN\",\"Upper Nile\":\"SS-NU\",\"Western Equatoria\":\"SS-EW\"},\"CC\":{\"Cocos (Keeling) Islands\":\"\"},\"ST\":{\"Agua Grande\":\"ST-01\"},\"CD\":{\"Equateur\":\"CD-EQ\",\"Haut-Katanga\":\"CD-HK\",\"Ituri\":\"CD-IT\",\"Kasai Central\":\"CD-KC\",\"Kasai Oriental\":\"CD-KE\",\"Kinshasa\":\"CD-KN\",\"Kwilu\":\"CD-KL\",\"Lualaba\":\"CD-LU\",\"Mai-Ndombe\":\"CD-MN\",\"Nord-Kivu\":\"CD-NK\",\"Sankuru\":\"CD-SA\",\"Sud-Kivu\":\"CD-SK\",\"Tanganyika\":\"CD-TA\",\"Tshopo\":\"CD-TO\"},\"SV\":{\"Ahuachapan\":\"SV-AH\",\"Cabanas\":\"SV-CA\",\"Chalatenango\":\"SV-CH\",\"Cuscatlan\":\"SV-CU\",\"La Libertad\":\"SV-LI\",\"La Paz\":\"SV-PA\",\"La Union\":\"SV-UN\",\"Morazan\":\"SV-MO\",\"San Miguel\":\"SV-SM\",\"San Salvador\":\"SV-SS\",\"San Vicente\":\"SV-SV\",\"Santa Ana\":\"SV-SA\",\"Sonsonate\":\"SV-SO\",\"Usulutan\":\"SV-US\"},\"CF\":{\"Bangui\":\"CF-BGF\",\"Nana-Mambere\":\"CF-NM\",\"Ouham\":\"CF-AC\",\"Ouham-Pende\":\"CF-OP\"},\"CG\":{\"Brazzaville\":\"CG-BZV\",\"Cuvette\":\"CG-8\",\"Pointe-Noire\":\"CG-16\",\"Sangha\":\"CG-13\"},\"SX\":{\"Sint Maarten (Dutch Part)\":\"\"},\"CH\":{\"Aargau\":\"CH-AG\",\"Appenzell Ausserrhoden\":\"CH-AR\",\"Appenzell Innerrhoden\":\"CH-AI\",\"Basel-Landschaft\":\"CH-BL\",\"Basel-Stadt\":\"CH-BS\",\"Bern\":\"CH-BE\",\"Fribourg\":\"CH-FR\",\"Geneve\":\"CH-GE\",\"Glarus\":\"CH-GL\",\"Graubunden\":\"CH-GR\",\"Jura\":\"CH-JU\",\"Luzern\":\"CH-LU\",\"Neuchatel\":\"CH-NE\",\"Nidwalden\":\"CH-NW\",\"Obwalden\":\"CH-OW\",\"Sankt Gallen\":\"CH-SG\",\"Schaffhausen\":\"CH-SH\",\"Schwyz\":\"CH-SZ\",\"Solothurn\":\"CH-SO\",\"Thurgau\":\"CH-TG\",\"Ticino\":\"CH-TI\",\"Uri\":\"CH-UR\",\"Valais\":\"CH-VS\",\"Vaud\":\"CH-VD\",\"Zug\":\"CH-ZG\",\"Zurich\":\"CH-ZH\"},\"SY\":{\"Al Hasakah\":\"SY-HA\",\"Al Ladhiqiyah\":\"SY-LA\",\"Al Qunaytirah\":\"SY-QU\",\"Ar Raqqah\":\"SY-RA\",\"As Suwayda\'\":\"SY-SU\",\"Dar\'a\":\"SY-DR\",\"Dayr az Zawr\":\"SY-DY\",\"Dimashq\":\"SY-DI\",\"Halab\":\"SY-HL\",\"Hamah\":\"SY-HM\",\"Hims\":\"SY-HI\",\"Idlib\":\"SY-ID\",\"Rif Dimashq\":\"SY-RD\",\"Tartus\":\"SY-TA\"},\"CI\":{\"Abidjan\":\"CI-AB\",\"Bas-Sassandra\":\"CI-BS\",\"Comoe\":\"CI-CM\",\"Denguele\":\"CI-DN\",\"Goh-Djiboua\":\"CI-GD\",\"Lacs\":\"CI-LC\",\"Lagunes\":\"CI-LG\",\"Montagnes\":\"CI-MG\",\"Sassandra-Marahoue\":\"CI-SM\",\"Savanes\":\"CI-SV\",\"Vallee du Bandama\":\"CI-VB\",\"Woroba\":\"CI-WR\",\"Yamoussoukro\":\"CI-YM\",\"Zanzan\":\"CI-ZZ\"},\"SZ\":{\"Hhohho\":\"SZ-HH\",\"Lubombo\":\"SZ-LU\",\"Manzini\":\"SZ-MA\"},\"CK\":{\"Cook Islands\":\"\"},\"CL\":{\"Aisen del General Carlos Ibanez del Campo\":\"CL-AI\",\"Antofagasta\":\"CL-AN\",\"Arica y Parinacota\":\"CL-AP\",\"Atacama\":\"CL-AT\",\"Biobio\":\"CL-BI\",\"Coquimbo\":\"CL-CO\",\"La Araucania\":\"CL-AR\",\"Libertador General Bernardo O\'Higgins\":\"CL-LI\",\"Los Lagos\":\"CL-LL\",\"Los Rios\":\"CL-LR\",\"Magallanes\":\"CL-MA\",\"Maule\":\"CL-ML\",\"Nuble\":\"CL-NB\",\"Region Metropolitana de Santiago\":\"CL-RM\",\"Tarapaca\":\"CL-TA\",\"Valparaiso\":\"CL-VS\"},\"CM\":{\"Adamaoua\":\"CM-AD\",\"Centre\":\"CM-CE\",\"Est\":\"CM-ES\",\"Extreme-Nord\":\"CM-EN\",\"Littoral\":\"CM-LT\",\"Nord\":\"CM-NO\",\"Nord-Ouest\":\"CM-NW\",\"Ouest\":\"CM-OU\",\"Sud\":\"CM-SU\",\"Sud-Ouest\":\"CM-SW\"},\"CN\":{\"Anhui\":\"CN-AH\",\"Beijing\":\"CN-BJ\",\"Chongqing\":\"CN-CQ\",\"Fujian\":\"CN-FJ\",\"Gansu\":\"CN-GS\",\"Guangdong\":\"CN-GD\",\"Guangxi\":\"CN-GX\",\"Guizhou\":\"CN-GZ\",\"Hainan\":\"CN-HI\",\"Hebei\":\"CN-HE\",\"Heilongjiang\":\"CN-HL\",\"Henan\":\"CN-HA\",\"Hubei\":\"CN-HB\",\"Hunan\":\"CN-HN\",\"Jiangsu\":\"CN-JS\",\"Jiangxi\":\"CN-JX\",\"Jilin\":\"CN-JL\",\"Liaoning\":\"CN-LN\",\"Nei Mongol\":\"CN-NM\",\"Ningxia\":\"CN-NX\",\"Qinghai\":\"CN-QH\",\"Shaanxi\":\"CN-SN\",\"Shandong\":\"CN-SD\",\"Shanghai\":\"CN-SH\",\"Shanxi\":\"CN-SX\",\"Sichuan\":\"CN-SC\",\"Tianjin\":\"CN-TJ\",\"Xinjiang\":\"CN-XJ\",\"Xizang\":\"CN-XZ\",\"Yunnan\":\"CN-YN\",\"Zhejiang\":\"CN-ZJ\"},\"CO\":{\"Amazonas\":\"CO-AMA\",\"Antioquia\":\"CO-ANT\",\"Arauca\":\"CO-ARA\",\"Atlantico\":\"CO-ATL\",\"Bolivar\":\"CO-BOL\",\"Boyaca\":\"CO-BOY\",\"Caldas\":\"CO-CAL\",\"Caqueta\":\"CO-CAQ\",\"Casanare\":\"CO-CAS\",\"Cauca\":\"CO-CAU\",\"Cesar\":\"CO-CES\",\"Choco\":\"CO-CHO\",\"Cordoba\":\"CO-COR\",\"Cundinamarca\":\"CO-CUN\",\"Distrito Capital de Bogota\":\"CO-DC\",\"Guainia\":\"CO-GUA\",\"Guaviare\":\"CO-GUV\",\"Huila\":\"CO-HUI\",\"La Guajira\":\"CO-LAG\",\"Magdalena\":\"CO-MAG\",\"Meta\":\"CO-MET\",\"Narino\":\"CO-NAR\",\"Norte de Santander\":\"CO-NSA\",\"Putumayo\":\"CO-PUT\",\"Quindio\":\"CO-QUI\",\"Risaralda\":\"CO-RIS\",\"San Andres, Providencia y Santa Catalina\":\"CO-SAP\",\"Santander\":\"CO-SAN\",\"Sucre\":\"CO-SUC\",\"Tolima\":\"CO-TOL\",\"Valle del Cauca\":\"CO-VAC\",\"Vichada\":\"CO-VID\"},\"TC\":{\"Turks and Caicos Islands\":\"\"},\"CR\":{\"Alajuela\":\"CR-A\",\"Cartago\":\"CR-C\",\"Guanacaste\":\"CR-G\",\"Heredia\":\"CR-H\",\"Limon\":\"CR-L\",\"Puntarenas\":\"CR-P\",\"San Jose\":\"CR-SJ\"},\"TD\":{\"Guera\":\"TD-GR\",\"Logone-Occidental\":\"TD-LO\",\"Mayo-Kebbi-Est\":\"TD-ME\",\"Ouaddai\":\"TD-OD\",\"Ville de Ndjamena\":\"TD-ND\",\"Wadi Fira\":\"TD-WF\"},\"TF\":{\"French Southern Territories\":\"\"},\"CU\":{\"Artemisa\":\"CU-15\",\"Camaguey\":\"CU-09\",\"Ciego de Avila\":\"CU-08\",\"Cienfuegos\":\"CU-06\",\"Granma\":\"CU-12\",\"Guantanamo\":\"CU-14\",\"Holguin\":\"CU-11\",\"La Habana\":\"CU-03\",\"Las Tunas\":\"CU-10\",\"Matanzas\":\"CU-04\",\"Mayabeque\":\"CU-16\",\"Pinar del Rio\":\"CU-01\",\"Sancti Spiritus\":\"CU-07\",\"Santiago de Cuba\":\"CU-13\",\"Villa Clara\":\"CU-05\"},\"TG\":{\"Centrale\":\"TG-C\",\"Kara\":\"TG-K\",\"Maritime\":\"TG-M\",\"Plateaux\":\"TG-P\"},\"CV\":{\"Boa Vista\":\"CV-BV\",\"Brava\":\"CV-BR\",\"Maio\":\"CV-MA\",\"Porto Novo\":\"CV-PN\",\"Praia\":\"CV-PR\",\"Ribeira Grande\":\"CV-RG\",\"Ribeira Grande de Santiago\":\"CV-RS\",\"Sal\":\"CV-SL\",\"Santa Cruz\":\"CV-CR\",\"Sao Vicente\":\"CV-SV\",\"Tarrafal\":\"CV-TA\"},\"TH\":{\"Amnat Charoen\":\"TH-37\",\"Ang Thong\":\"TH-15\",\"Bueng Kan\":\"TH-38\",\"Buri Ram\":\"TH-31\",\"Chachoengsao\":\"TH-24\",\"Chai Nat\":\"TH-18\",\"Chaiyaphum\":\"TH-36\",\"Chanthaburi\":\"TH-22\",\"Chiang Mai\":\"TH-50\",\"Chiang Rai\":\"TH-57\",\"Chon Buri\":\"TH-20\",\"Chumphon\":\"TH-86\",\"Kalasin\":\"TH-46\",\"Kamphaeng Phet\":\"TH-62\",\"Kanchanaburi\":\"TH-71\",\"Khon Kaen\":\"TH-40\",\"Krabi\":\"TH-81\",\"Krung Thep Maha Nakhon\":\"TH-10\",\"Lampang\":\"TH-52\",\"Lamphun\":\"TH-51\",\"Loei\":\"TH-42\",\"Lop Buri\":\"TH-16\",\"Mae Hong Son\":\"TH-58\",\"Maha Sarakham\":\"TH-44\",\"Mukdahan\":\"TH-49\",\"Nakhon Nayok\":\"TH-26\",\"Nakhon Pathom\":\"TH-73\",\"Nakhon Phanom\":\"TH-48\",\"Nakhon Ratchasima\":\"TH-30\",\"Nakhon Sawan\":\"TH-60\",\"Nakhon Si Thammarat\":\"TH-80\",\"Nan\":\"TH-55\",\"Narathiwat\":\"TH-96\",\"Nong Bua Lam Phu\":\"TH-39\",\"Nong Khai\":\"TH-43\",\"Nonthaburi\":\"TH-12\",\"Pathum Thani\":\"TH-13\",\"Pattani\":\"TH-94\",\"Phangnga\":\"TH-82\",\"Phatthalung\":\"TH-93\",\"Phayao\":\"TH-56\",\"Phetchabun\":\"TH-67\",\"Phetchaburi\":\"TH-76\",\"Phichit\":\"TH-66\",\"Phitsanulok\":\"TH-65\",\"Phra Nakhon Si Ayutthaya\":\"TH-14\",\"Phrae\":\"TH-54\",\"Phuket\":\"TH-83\",\"Prachin Buri\":\"TH-25\",\"Prachuap Khiri Khan\":\"TH-77\",\"Ranong\":\"TH-85\",\"Ratchaburi\":\"TH-70\",\"Rayong\":\"TH-21\",\"Roi Et\":\"TH-45\",\"Sa Kaeo\":\"TH-27\",\"Sakon Nakhon\":\"TH-47\",\"Samut Prakan\":\"TH-11\",\"Samut Sakhon\":\"TH-74\",\"Samut Songkhram\":\"TH-75\",\"Saraburi\":\"TH-19\",\"Satun\":\"TH-91\",\"Si Sa Ket\":\"TH-33\",\"Sing Buri\":\"TH-17\",\"Songkhla\":\"TH-90\",\"Sukhothai\":\"TH-64\",\"Suphan Buri\":\"TH-72\",\"Surat Thani\":\"TH-84\",\"Surin\":\"TH-32\",\"Tak\":\"TH-63\",\"Trang\":\"TH-92\",\"Trat\":\"TH-23\",\"Ubon Ratchathani\":\"TH-34\",\"Udon Thani\":\"TH-41\",\"Uthai Thani\":\"TH-61\",\"Uttaradit\":\"TH-53\",\"Yala\":\"TH-95\",\"Yasothon\":\"TH-35\"},\"CW\":{\"Curacao\":\"\"},\"CX\":{\"Christmas Island\":\"\"},\"TJ\":{\"Dushanbe\":\"TJ-DU\",\"Khatlon\":\"TJ-KT\",\"Nohiyahoi Tobei Jumhuri\":\"TJ-RA\",\"Sughd\":\"TJ-SU\"},\"CY\":{\"Ammochostos\":\"CY-04\",\"Keryneia\":\"CY-06\",\"Larnaka\":\"CY-03\",\"Lefkosia\":\"CY-01\",\"Lemesos\":\"CY-02\",\"Pafos\":\"CY-05\"},\"TK\":{\"Tokelau\":\"\"},\"CZ\":{\"Jihocesky kraj\":\"CZ-31\",\"Jihomoravsky kraj\":\"CZ-64\",\"Karlovarsky kraj\":\"CZ-41\",\"Kraj Vysocina\":\"CZ-63\",\"Kralovehradecky kraj\":\"CZ-52\",\"Liberecky kraj\":\"CZ-51\",\"Moravskoslezsky kraj\":\"CZ-80\",\"Olomoucky kraj\":\"CZ-71\",\"Pardubicky kraj\":\"CZ-53\",\"Plzensky kraj\":\"CZ-32\",\"Praha, Hlavni mesto\":\"CZ-10\",\"Stredocesky kraj\":\"CZ-20\",\"Ustecky kraj\":\"CZ-42\",\"Zlinsky kraj\":\"CZ-72\"},\"TL\":{\"Ainaro\":\"TL-AN\",\"Cova Lima\":\"TL-CO\",\"Dili\":\"TL-DI\"},\"TM\":{\"Ahal\":\"TM-A\",\"Balkan\":\"TM-B\",\"Dasoguz\":\"TM-D\",\"Lebap\":\"TM-L\",\"Mary\":\"TM-M\"},\"TN\":{\"Beja\":\"TN-31\",\"Ben Arous\":\"TN-13\",\"Bizerte\":\"TN-23\",\"Gabes\":\"TN-81\",\"Gafsa\":\"TN-71\",\"Jendouba\":\"TN-32\",\"Kairouan\":\"TN-41\",\"Kasserine\":\"TN-42\",\"Kebili\":\"TN-73\",\"L\'Ariana\":\"TN-12\",\"La Manouba\":\"TN-14\",\"Le Kef\":\"TN-33\",\"Mahdia\":\"TN-53\",\"Medenine\":\"TN-82\",\"Monastir\":\"TN-52\",\"Nabeul\":\"TN-21\",\"Sfax\":\"TN-61\",\"Sidi Bouzid\":\"TN-43\",\"Siliana\":\"TN-34\",\"Sousse\":\"TN-51\",\"Tataouine\":\"TN-83\",\"Tozeur\":\"TN-72\",\"Tunis\":\"TN-11\",\"Zaghouan\":\"TN-22\"},\"TO\":{\"Niuas\":\"TO-03\",\"Tongatapu\":\"TO-04\"},\"TR\":{\"Adana\":\"TR-01\",\"Adiyaman\":\"TR-02\",\"Afyonkarahisar\":\"TR-03\",\"Agri\":\"TR-04\",\"Aksaray\":\"TR-68\",\"Amasya\":\"TR-05\",\"Ankara\":\"TR-06\",\"Antalya\":\"TR-07\",\"Ardahan\":\"TR-75\",\"Artvin\":\"TR-08\",\"Aydin\":\"TR-09\",\"Balikesir\":\"TR-10\",\"Bartin\":\"TR-74\",\"Batman\":\"TR-72\",\"Bayburt\":\"TR-69\",\"Bilecik\":\"TR-11\",\"Bingol\":\"TR-12\",\"Bitlis\":\"TR-13\",\"Bolu\":\"TR-14\",\"Burdur\":\"TR-15\",\"Bursa\":\"TR-16\",\"Canakkale\":\"TR-17\",\"Cankiri\":\"TR-18\",\"Corum\":\"TR-19\",\"Denizli\":\"TR-20\",\"Diyarbakir\":\"TR-21\",\"Duzce\":\"TR-81\",\"Edirne\":\"TR-22\",\"Elazig\":\"TR-23\",\"Erzincan\":\"TR-24\",\"Erzurum\":\"TR-25\",\"Eskisehir\":\"TR-26\",\"Gaziantep\":\"TR-27\",\"Giresun\":\"TR-28\",\"Gumushane\":\"TR-29\",\"Hakkari\":\"TR-30\",\"Hatay\":\"TR-31\",\"Igdir\":\"TR-76\",\"Isparta\":\"TR-32\",\"Istanbul\":\"TR-34\",\"Izmir\":\"TR-35\",\"Kahramanmaras\":\"TR-46\",\"Karabuk\":\"TR-78\",\"Karaman\":\"TR-70\",\"Kars\":\"TR-36\",\"Kastamonu\":\"TR-37\",\"Kayseri\":\"TR-38\",\"Kilis\":\"TR-79\",\"Kirikkale\":\"TR-71\",\"Kirklareli\":\"TR-39\",\"Kirsehir\":\"TR-40\",\"Kocaeli\":\"TR-41\",\"Konya\":\"TR-42\",\"Kutahya\":\"TR-43\",\"Malatya\":\"TR-44\",\"Manisa\":\"TR-45\",\"Mardin\":\"TR-47\",\"Mersin\":\"TR-33\",\"Mugla\":\"TR-48\",\"Mus\":\"TR-49\",\"Nevsehir\":\"TR-50\",\"Nigde\":\"TR-51\",\"Ordu\":\"TR-52\",\"Osmaniye\":\"TR-80\",\"Rize\":\"TR-53\",\"Sakarya\":\"TR-54\",\"Samsun\":\"TR-55\",\"Sanliurfa\":\"TR-63\",\"Siirt\":\"TR-56\",\"Sinop\":\"TR-57\",\"Sirnak\":\"TR-73\",\"Sivas\":\"TR-58\",\"Tekirdag\":\"TR-59\",\"Tokat\":\"TR-60\",\"Trabzon\":\"TR-61\",\"Tunceli\":\"TR-62\",\"Usak\":\"TR-64\",\"Van\":\"TR-65\",\"Yalova\":\"TR-77\",\"Yozgat\":\"TR-66\",\"Zonguldak\":\"TR-67\"},\"TT\":{\"Arima\":\"TT-ARI\",\"Chaguanas\":\"TT-CHA\",\"Couva-Tabaquite-Talparo\":\"TT-CTT\",\"Diego Martin\":\"TT-DMN\",\"Mayaro-Rio Claro\":\"TT-MRC\",\"Penal-Debe\":\"TT-PED\",\"Point Fortin\":\"TT-PTF\",\"Port of Spain\":\"TT-POS\",\"Princes Town\":\"TT-PRT\",\"San Fernando\":\"TT-SFO\",\"San Juan-Laventille\":\"TT-SJL\",\"Sangre Grande\":\"TT-SGE\",\"Siparia\":\"TT-SIP\",\"Tobago\":\"TT-TOB\",\"Tunapuna-Piarco\":\"TT-TUP\"},\"DE\":{\"Baden-Wurttemberg\":\"DE-BW\",\"Bayern\":\"DE-BY\",\"Berlin\":\"DE-BE\",\"Brandenburg\":\"DE-BB\",\"Bremen\":\"DE-HB\",\"Hamburg\":\"DE-HH\",\"Hessen\":\"DE-HE\",\"Mecklenburg-Vorpommern\":\"DE-MV\",\"Niedersachsen\":\"DE-NI\",\"Nordrhein-Westfalen\":\"DE-NW\",\"Rheinland-Pfalz\":\"DE-RP\",\"Saarland\":\"DE-SL\",\"Sachsen\":\"DE-SN\",\"Sachsen-Anhalt\":\"DE-ST\",\"Schleswig-Holstein\":\"DE-SH\",\"Thuringen\":\"DE-TH\"},\"TV\":{\"Funafuti\":\"TV-FUN\"},\"TW\":{\"Changhua\":\"TW-CHA\",\"Chiayi\":\"TW-CYQ\",\"Hsinchu\":\"TW-HSQ\",\"Hualien\":\"TW-HUA\",\"Kaohsiung\":\"TW-KHH\",\"Keelung\":\"TW-KEE\",\"Kinmen\":\"TW-KIN\",\"Lienchiang\":\"TW-LIE\",\"Miaoli\":\"TW-MIA\",\"Nantou\":\"TW-NAN\",\"New Taipei\":\"TW-NWT\",\"Penghu\":\"TW-PEN\",\"Pingtung\":\"TW-PIF\",\"Taichung\":\"TW-TXG\",\"Tainan\":\"TW-TNN\",\"Taipei\":\"TW-TPE\",\"Taitung\":\"TW-TTT\",\"Taoyuan\":\"TW-TAO\",\"Yilan\":\"TW-ILA\",\"Yunlin\":\"TW-YUN\"},\"TZ\":{\"Arusha\":\"TZ-01\",\"Dar es Salaam\":\"TZ-02\",\"Dodoma\":\"TZ-03\",\"Geita\":\"TZ-27\",\"Iringa\":\"TZ-04\",\"Kagera\":\"TZ-05\",\"Kaskazini Unguja\":\"TZ-07\",\"Katavi\":\"TZ-28\",\"Kigoma\":\"TZ-08\",\"Kilimanjaro\":\"TZ-09\",\"Kusini Unguja\":\"TZ-11\",\"Lindi\":\"TZ-12\",\"Manyara\":\"TZ-26\",\"Mara\":\"TZ-13\",\"Mbeya\":\"TZ-14\",\"Mjini Magharibi\":\"TZ-15\",\"Morogoro\":\"TZ-16\",\"Mtwara\":\"TZ-17\",\"Mwanza\":\"TZ-18\",\"Njombe\":\"TZ-29\",\"Pwani\":\"TZ-19\",\"Rukwa\":\"TZ-20\",\"Ruvuma\":\"TZ-21\",\"Shinyanga\":\"TZ-22\",\"Simiyu\":\"TZ-30\",\"Singida\":\"TZ-23\",\"Songwe\":\"TZ-31\",\"Tabora\":\"TZ-24\",\"Tanga\":\"TZ-25\"},\"DJ\":{\"Djibouti\":\"DJ-DJ\"},\"DK\":{\"Hovedstaden\":\"DK-84\",\"Midtjylland\":\"DK-82\",\"Nordjylland\":\"DK-81\",\"Sjaelland\":\"DK-85\",\"Syddanmark\":\"DK-83\"},\"DM\":{\"Saint Andrew\":\"DM-02\",\"Saint George\":\"DM-04\",\"Saint John\":\"DM-05\",\"Saint Patrick\":\"DM-09\",\"Saint Paul\":\"DM-10\"},\"DO\":{\"Azua\":\"DO-02\",\"Baoruco\":\"DO-03\",\"Barahona\":\"DO-04\",\"Dajabon\":\"DO-05\",\"Distrito Nacional (Santo Domingo)\":\"DO-01\",\"Duarte\":\"DO-06\",\"El Seibo\":\"DO-08\",\"Elias Pina\":\"DO-07\",\"Espaillat\":\"DO-09\",\"Hato Mayor\":\"DO-30\",\"Hermanas Mirabal\":\"DO-19\",\"Independencia\":\"DO-10\",\"La Altagracia\":\"DO-11\",\"La Romana\":\"DO-12\",\"La Vega\":\"DO-13\",\"Maria Trinidad Sanchez\":\"DO-14\",\"Monsenor Nouel\":\"DO-28\",\"Monte Cristi\":\"DO-15\",\"Monte Plata\":\"DO-29\",\"Peravia\":\"DO-17\",\"Puerto Plata\":\"DO-18\",\"Samana\":\"DO-20\",\"San Cristobal\":\"DO-21\",\"San Jose de Ocoa\":\"DO-31\",\"San Juan\":\"DO-22\",\"San Pedro de Macoris\":\"DO-23\",\"Sanchez Ramirez\":\"DO-24\",\"Santiago\":\"DO-25\",\"Santiago Rodriguez\":\"DO-26\",\"Valverde\":\"DO-27\"},\"UA\":{\"Avtonomna Respublika Krym\":\"UA-43\",\"Cherkaska oblast\":\"UA-71\",\"Chernihivska oblast\":\"UA-74\",\"Chernivetska oblast\":\"UA-77\",\"Dnipropetrovska oblast\":\"UA-12\",\"Donetska oblast\":\"UA-14\",\"Ivano-Frankivska oblast\":\"UA-26\",\"Kharkivska oblast\":\"UA-63\",\"Khersonska oblast\":\"UA-65\",\"Khmelnytska oblast\":\"UA-68\",\"Kirovohradska oblast\":\"UA-35\",\"Kyiv\":\"UA-30\",\"Kyivska oblast\":\"UA-32\",\"Luhanska oblast\":\"UA-09\",\"Lvivska oblast\":\"UA-46\",\"Mykolaivska oblast\":\"UA-48\",\"Odeska oblast\":\"UA-51\",\"Poltavska oblast\":\"UA-53\",\"Rivnenska oblast\":\"UA-56\",\"Sevastopol\":\"UA-40\",\"Sumska oblast\":\"UA-59\",\"Ternopilska oblast\":\"UA-61\",\"Vinnytska oblast\":\"UA-05\",\"Volynska oblast\":\"UA-07\",\"Zakarpatska oblast\":\"UA-21\",\"Zaporizka oblast\":\"UA-23\",\"Zhytomyrska oblast\":\"UA-18\"},\"UG\":{\"Alebtong\":\"UG-323\",\"Amuru\":\"UG-316\",\"Arua\":\"UG-303\",\"Bugiri\":\"UG-201\",\"Buikwe\":\"UG-117\",\"Bukedea\":\"UG-219\",\"Buvuma\":\"UG-120\",\"Gulu\":\"UG-304\",\"Hoima\":\"UG-403\",\"Iganga\":\"UG-203\",\"Jinja\":\"UG-204\",\"Kabale\":\"UG-404\",\"Kabarole\":\"UG-405\",\"Kalangala\":\"UG-101\",\"Kaliro\":\"UG-222\",\"Kalungu\":\"UG-122\",\"Kampala\":\"UG-102\",\"Kamuli\":\"UG-205\",\"Kamwenge\":\"UG-413\",\"Kapchorwa\":\"UG-206\",\"Kasese\":\"UG-406\",\"Kayunga\":\"UG-112\",\"Kibaale\":\"UG-407\",\"Kiboga\":\"UG-103\",\"Kiruhura\":\"UG-419\",\"Kisoro\":\"UG-408\",\"Kitgum\":\"UG-305\",\"Kyenjojo\":\"UG-415\",\"Lira\":\"UG-307\",\"Luwero\":\"UG-104\",\"Masaka\":\"UG-105\",\"Masindi\":\"UG-409\",\"Mayuge\":\"UG-214\",\"Mbale\":\"UG-209\",\"Mbarara\":\"UG-410\",\"Mitooma\":\"UG-423\",\"Mityana\":\"UG-115\",\"Mpigi\":\"UG-106\",\"Mubende\":\"UG-107\",\"Mukono\":\"UG-108\",\"Nakaseke\":\"UG-116\",\"Nakasongola\":\"UG-109\",\"Ntungamo\":\"UG-411\",\"Oyam\":\"UG-321\",\"Pallisa\":\"UG-210\",\"Rukungiri\":\"UG-412\",\"Sironko\":\"UG-215\",\"Soroti\":\"UG-211\",\"Wakiso\":\"UG-113\"},\"DZ\":{\"Adrar\":\"DZ-01\",\"Ain Defla\":\"DZ-44\",\"Ain Temouchent\":\"DZ-46\",\"Alger\":\"DZ-16\",\"Annaba\":\"DZ-23\",\"Batna\":\"DZ-05\",\"Bechar\":\"DZ-08\",\"Bejaia\":\"DZ-06\",\"Biskra\":\"DZ-07\",\"Blida\":\"DZ-09\",\"Bordj Bou Arreridj\":\"DZ-34\",\"Bouira\":\"DZ-10\",\"Boumerdes\":\"DZ-35\",\"Chlef\":\"DZ-02\",\"Constantine\":\"DZ-25\",\"Djelfa\":\"DZ-17\",\"El Bayadh\":\"DZ-32\",\"El Oued\":\"DZ-39\",\"El Tarf\":\"DZ-36\",\"Ghardaia\":\"DZ-47\",\"Guelma\":\"DZ-24\",\"Illizi\":\"DZ-33\",\"Jijel\":\"DZ-18\",\"Khenchela\":\"DZ-40\",\"Laghouat\":\"DZ-03\",\"M\'sila\":\"DZ-28\",\"Mascara\":\"DZ-29\",\"Medea\":\"DZ-26\",\"Mila\":\"DZ-43\",\"Mostaganem\":\"DZ-27\",\"Naama\":\"DZ-45\",\"Oran\":\"DZ-31\",\"Ouargla\":\"DZ-30\",\"Oum el Bouaghi\":\"DZ-04\",\"Relizane\":\"DZ-48\",\"Saida\":\"DZ-20\",\"Setif\":\"DZ-19\",\"Sidi Bel Abbes\":\"DZ-22\",\"Skikda\":\"DZ-21\",\"Souk Ahras\":\"DZ-41\",\"Tamanrasset\":\"DZ-11\",\"Tebessa\":\"DZ-12\",\"Tiaret\":\"DZ-14\",\"Tindouf\":\"DZ-37\",\"Tipaza\":\"DZ-42\",\"Tissemsilt\":\"DZ-38\",\"Tizi Ouzou\":\"DZ-15\",\"Tlemcen\":\"DZ-13\"},\"UM\":{\"Palmyra Atoll\":\"UM-95\"},\"US\":{\"Alabama\":\"US-AL\",\"Alaska\":\"US-AK\",\"Arizona\":\"US-AZ\",\"Arkansas\":\"US-AR\",\"California\":\"US-CA\",\"Colorado\":\"US-CO\",\"Connecticut\":\"US-CT\",\"Delaware\":\"US-DE\",\"District of Columbia\":\"US-DC\",\"Florida\":\"US-FL\",\"Georgia\":\"US-GA\",\"Hawaii\":\"US-HI\",\"Idaho\":\"US-ID\",\"Illinois\":\"US-IL\",\"Indiana\":\"US-IN\",\"Iowa\":\"US-IA\",\"Kansas\":\"US-KS\",\"Kentucky\":\"US-KY\",\"Louisiana\":\"US-LA\",\"Maine\":\"US-ME\",\"Maryland\":\"US-MD\",\"Massachusetts\":\"US-MA\",\"Michigan\":\"US-MI\",\"Minnesota\":\"US-MN\",\"Mississippi\":\"US-MS\",\"Missouri\":\"US-MO\",\"Montana\":\"US-MT\",\"Nebraska\":\"US-NE\",\"Nevada\":\"US-NV\",\"New Hampshire\":\"US-NH\",\"New Jersey\":\"US-NJ\",\"New Mexico\":\"US-NM\",\"New York\":\"US-NY\",\"North Carolina\":\"US-NC\",\"North Dakota\":\"US-ND\",\"Ohio\":\"US-OH\",\"Oklahoma\":\"US-OK\",\"Oregon\":\"US-OR\",\"Pennsylvania\":\"US-PA\",\"Rhode Island\":\"US-RI\",\"South Carolina\":\"US-SC\",\"South Dakota\":\"US-SD\",\"Tennessee\":\"US-TN\",\"Texas\":\"US-TX\",\"Utah\":\"US-UT\",\"Vermont\":\"US-VT\",\"Virginia\":\"US-VA\",\"Washington\":\"US-WA\",\"West Virginia\":\"US-WV\",\"Wisconsin\":\"US-WI\",\"Wyoming\":\"US-WY\"},\"EC\":{\"Azuay\":\"EC-A\",\"Bolivar\":\"EC-B\",\"Canar\":\"EC-F\",\"Carchi\":\"EC-C\",\"Chimborazo\":\"EC-H\",\"Cotopaxi\":\"EC-X\",\"El Oro\":\"EC-O\",\"Esmeraldas\":\"EC-E\",\"Galapagos\":\"EC-W\",\"Guayas\":\"EC-G\",\"Imbabura\":\"EC-I\",\"Loja\":\"EC-L\",\"Los Rios\":\"EC-R\",\"Manabi\":\"EC-M\",\"Morona Santiago\":\"EC-S\",\"Napo\":\"EC-N\",\"Orellana\":\"EC-D\",\"Pastaza\":\"EC-Y\",\"Pichincha\":\"EC-P\",\"Santa Elena\":\"EC-SE\",\"Santo Domingo de los Tsachilas\":\"EC-SD\",\"Sucumbios\":\"EC-U\",\"Tungurahua\":\"EC-T\",\"Zamora Chinchipe\":\"EC-Z\"},\"EE\":{\"Harjumaa\":\"EE-37\",\"Hiiumaa\":\"EE-39\",\"Ida-Virumaa\":\"EE-45\",\"Jarvamaa\":\"EE-52\",\"Jogevamaa\":\"EE-50\",\"Laane-Virumaa\":\"EE-60\",\"Laanemaa\":\"EE-56\",\"Parnumaa\":\"EE-68\",\"Polvamaa\":\"EE-64\",\"Raplamaa\":\"EE-71\",\"Saaremaa\":\"EE-74\",\"Tartumaa\":\"EE-79\",\"Valgamaa\":\"EE-81\",\"Viljandimaa\":\"EE-84\",\"Vorumaa\":\"EE-87\"},\"EG\":{\"Ad Daqahliyah\":\"EG-DK\",\"Al Bahr al Ahmar\":\"EG-BA\",\"Al Buhayrah\":\"EG-BH\",\"Al Fayyum\":\"EG-FYM\",\"Al Gharbiyah\":\"EG-GH\",\"Al Iskandariyah\":\"EG-ALX\",\"Al Isma\'iliyah\":\"EG-IS\",\"Al Jizah\":\"EG-GZ\",\"Al Minufiyah\":\"EG-MNF\",\"Al Minya\":\"EG-MN\",\"Al Qahirah\":\"EG-C\",\"Al Qalyubiyah\":\"EG-KB\",\"Al Uqsur\":\"EG-LX\",\"Al Wadi al Jadid\":\"EG-WAD\",\"As Suways\":\"EG-SUZ\",\"Ash Sharqiyah\":\"EG-SHR\",\"Aswan\":\"EG-ASN\",\"Asyut\":\"EG-AST\",\"Bani Suwayf\":\"EG-BNS\",\"Bur Sa\'id\":\"EG-PTS\",\"Dumyat\":\"EG-DT\",\"Janub Sina\'\":\"EG-JS\",\"Kafr ash Shaykh\":\"EG-KFS\",\"Matruh\":\"EG-MT\",\"Qina\":\"EG-KN\",\"Shamal Sina\'\":\"EG-SIN\",\"Suhaj\":\"EG-SHG\"},\"UY\":{\"Artigas\":\"UY-AR\",\"Canelones\":\"UY-CA\",\"Cerro Largo\":\"UY-CL\",\"Colonia\":\"UY-CO\",\"Durazno\":\"UY-DU\",\"Flores\":\"UY-FS\",\"Florida\":\"UY-FD\",\"Lavalleja\":\"UY-LA\",\"Maldonado\":\"UY-MA\",\"Montevideo\":\"UY-MO\",\"Paysandu\":\"UY-PA\",\"Rio Negro\":\"UY-RN\",\"Rivera\":\"UY-RV\",\"Rocha\":\"UY-RO\",\"Salto\":\"UY-SA\",\"San Jose\":\"UY-SJ\",\"Soriano\":\"UY-SO\",\"Tacuarembo\":\"UY-TA\",\"Treinta y Tres\":\"UY-TT\"},\"UZ\":{\"Andijon\":\"UZ-AN\",\"Buxoro\":\"UZ-BU\",\"Farg\'ona\":\"UZ-FA\",\"Jizzax\":\"UZ-JI\",\"Namangan\":\"UZ-NG\",\"Navoiy\":\"UZ-NW\",\"Qashqadaryo\":\"UZ-QA\",\"Qoraqalpog\'iston Respublikasi\":\"UZ-QR\",\"Samarqand\":\"UZ-SA\",\"Sirdaryo\":\"UZ-SI\",\"Surxondaryo\":\"UZ-SU\",\"Toshkent\":\"UZ-TK\",\"Xorazm\":\"UZ-XO\"},\"VA\":{\"Vatican City\":\"\"},\"VC\":{\"Charlotte\":\"VC-01\",\"Grenadines\":\"VC-06\",\"Saint George\":\"VC-04\",\"Saint Patrick\":\"VC-05\"},\"ER\":{\"Al Awsat\":\"ER-MA\"},\"ES\":{\"Andalucia\":\"ES-AN\",\"Aragon\":\"ES-AR\",\"Asturias, Principado de\":\"ES-AS\",\"Canarias\":\"ES-CN\",\"Cantabria\":\"ES-CB\",\"Castilla y Leon\":\"ES-CL\",\"Castilla-La Mancha\":\"ES-CM\",\"Catalunya\":\"ES-CT\",\"Ceuta\":\"ES-CE\",\"Extremadura\":\"ES-EX\",\"Galicia\":\"ES-GA\",\"Illes Balears\":\"ES-IB\",\"La Rioja\":\"ES-RI\",\"Madrid, Comunidad de\":\"ES-MD\",\"Melilla\":\"ES-ML\",\"Murcia, Region de\":\"ES-MC\",\"Navarra, Comunidad Foral de\":\"ES-NC\",\"Pais Vasco\":\"ES-PV\",\"Valenciana, Comunidad\":\"ES-VC\"},\"VE\":{\"Amazonas\":\"VE-Z\",\"Anzoategui\":\"VE-B\",\"Apure\":\"VE-C\",\"Aragua\":\"VE-D\",\"Barinas\":\"VE-E\",\"Bolivar\":\"VE-F\",\"Carabobo\":\"VE-G\",\"Cojedes\":\"VE-H\",\"Delta Amacuro\":\"VE-Y\",\"Distrito Capital\":\"VE-A\",\"Falcon\":\"VE-I\",\"Guarico\":\"VE-J\",\"La Guaira\":\"VE-X\",\"Lara\":\"VE-K\",\"Merida\":\"VE-L\",\"Miranda\":\"VE-M\",\"Monagas\":\"VE-N\",\"Nueva Esparta\":\"VE-O\",\"Portuguesa\":\"VE-P\",\"Sucre\":\"VE-R\",\"Tachira\":\"VE-S\",\"Trujillo\":\"VE-T\",\"Yaracuy\":\"VE-U\",\"Zulia\":\"VE-V\"},\"ET\":{\"Adis Abeba\":\"ET-AA\",\"Afar\":\"ET-AF\",\"Amara\":\"ET-AM\",\"Binshangul Gumuz\":\"ET-BE\",\"Dire Dawa\":\"ET-DD\",\"Hareri Hizb\":\"ET-HA\",\"Oromiya\":\"ET-OR\",\"Sumale\":\"ET-SO\",\"Tigray\":\"ET-TI\",\"YeDebub Biheroch Bihereseboch na Hizboch\":\"ET-SN\"},\"VG\":{\"Virgin Islands, British\":\"\"},\"VI\":{\"Virgin Islands, U.S.\":\"\"},\"VN\":{\"An Giang\":\"VN-44\",\"Ba Ria - Vung Tau\":\"VN-43\",\"Bac Giang\":\"VN-54\",\"Bac Kan\":\"VN-53\",\"Bac Lieu\":\"VN-55\",\"Bac Ninh\":\"VN-56\",\"Ben Tre\":\"VN-50\",\"Binh Dinh\":\"VN-31\",\"Binh Duong\":\"VN-57\",\"Binh Phuoc\":\"VN-58\",\"Binh Thuan\":\"VN-40\",\"Ca Mau\":\"VN-59\",\"Can Tho\":\"VN-CT\",\"Cao Bang\":\"VN-04\",\"Da Nang\":\"VN-DN\",\"Dak Lak\":\"VN-33\",\"Dak Nong\":\"VN-72\",\"Dien Bien\":\"VN-71\",\"Dong Nai\":\"VN-39\",\"Dong Thap\":\"VN-45\",\"Gia Lai\":\"VN-30\",\"Ha Giang\":\"VN-03\",\"Ha Nam\":\"VN-63\",\"Ha Noi\":\"VN-HN\",\"Ha Tinh\":\"VN-23\",\"Hai Duong\":\"VN-61\",\"Hai Phong\":\"VN-HP\",\"Ho Chi Minh\":\"VN-SG\",\"Hoa Binh\":\"VN-14\",\"Hung Yen\":\"VN-66\",\"Khanh Hoa\":\"VN-34\",\"Kien Giang\":\"VN-47\",\"Kon Tum\":\"VN-28\",\"Lai Chau\":\"VN-01\",\"Lam Dong\":\"VN-35\",\"Lang Son\":\"VN-09\",\"Lao Cai\":\"VN-02\",\"Long An\":\"VN-41\",\"Nam Dinh\":\"VN-67\",\"Nghe An\":\"VN-22\",\"Ninh Binh\":\"VN-18\",\"Ninh Thuan\":\"VN-36\",\"Phu Tho\":\"VN-68\",\"Phu Yen\":\"VN-32\",\"Quang Binh\":\"VN-24\",\"Quang Nam\":\"VN-27\",\"Quang Ngai\":\"VN-29\",\"Quang Ninh\":\"VN-13\",\"Quang Tri\":\"VN-25\",\"Soc Trang\":\"VN-52\",\"Son La\":\"VN-05\",\"Tay Ninh\":\"VN-37\",\"Thai Binh\":\"VN-20\",\"Thai Nguyen\":\"VN-69\",\"Thanh Hoa\":\"VN-21\",\"Thua Thien-Hue\":\"VN-26\",\"Tien Giang\":\"VN-46\",\"Tra Vinh\":\"VN-51\",\"Tuyen Quang\":\"VN-07\",\"Vinh Long\":\"VN-49\",\"Vinh Phuc\":\"VN-70\",\"Yen Bai\":\"VN-06\"},\"VU\":{\"Shefa\":\"VU-SEE\",\"Tafea\":\"VU-TAE\",\"Torba\":\"VU-TOB\"},\"FI\":{\"Etela-Karjala\":\"FI-02\",\"Etela-Pohjanmaa\":\"FI-03\",\"Etela-Savo\":\"FI-04\",\"Kainuu\":\"FI-05\",\"Kanta-Hame\":\"FI-06\",\"Keski-Pohjanmaa\":\"FI-07\",\"Keski-Suomi\":\"FI-08\",\"Kymenlaakso\":\"FI-09\",\"Lappi\":\"FI-10\",\"Paijat-Hame\":\"FI-16\",\"Pirkanmaa\":\"FI-11\",\"Pohjanmaa\":\"FI-12\",\"Pohjois-Karjala\":\"FI-13\",\"Pohjois-Pohjanmaa\":\"FI-14\",\"Pohjois-Savo\":\"FI-15\",\"Satakunta\":\"FI-17\",\"Uusimaa\":\"FI-18\",\"Varsinais-Suomi\":\"FI-19\"},\"FJ\":{\"Central\":\"FJ-C\",\"Eastern\":\"FJ-E\",\"Northern\":\"FJ-N\",\"Rotuma\":\"FJ-R\",\"Western\":\"FJ-W\"},\"FK\":{\"Falkland Islands (Malvinas)\":\"\"},\"FM\":{\"Chuuk\":\"FM-TRK\",\"Kosrae\":\"FM-KSA\",\"Pohnpei\":\"FM-PNI\",\"Yap\":\"FM-YAP\"},\"FO\":{\"Eysturoy\":\"\",\"Nordoyar\":\"\",\"Streymoy\":\"\",\"Suduroy\":\"\",\"Vagar\":\"\"},\"FR\":{\"Auvergne-Rhone-Alpes\":\"FR-ARA\",\"Bourgogne-Franche-Comte\":\"FR-BFC\",\"Bretagne\":\"FR-BRE\",\"Centre-Val de Loire\":\"FR-CVL\",\"Corse\":\"FR-20R\",\"Grand-Est\":\"FR-GES\",\"Hauts-de-France\":\"FR-HDF\",\"Ile-de-France\":\"FR-IDF\",\"Normandie\":\"FR-NOR\",\"Nouvelle-Aquitaine\":\"FR-NAQ\",\"Occitanie\":\"FR-OCC\",\"Pays-de-la-Loire\":\"FR-PDL\",\"Provence-Alpes-Cote-d\'Azur\":\"FR-PAC\"},\"WF\":{\"Sigave\":\"WF-SG\",\"Uvea\":\"WF-UV\"},\"GA\":{\"Estuaire\":\"GA-1\",\"Haut-Ogooue\":\"GA-2\",\"Ngounie\":\"GA-4\",\"Ogooue-Maritime\":\"GA-8\",\"Woleu-Ntem\":\"GA-9\"},\"GB\":{\"England\":\"GB-ENG\",\"Northern Ireland\":\"GB-NIR\",\"Scotland\":\"GB-SCT\",\"Wales\":\"GB-WLS\"},\"WS\":{\"Atua\":\"WS-AT\",\"Fa\'asaleleaga\":\"WS-FA\",\"Tuamasaga\":\"WS-TU\"},\"GD\":{\"Saint Andrew\":\"GD-01\",\"Saint David\":\"GD-02\",\"Saint George\":\"GD-03\",\"Saint John\":\"GD-04\",\"Saint Mark\":\"GD-05\",\"Southern Grenadine Islands\":\"GD-10\"},\"GE\":{\"Abkhazia\":\"GE-AB\",\"Ajaria\":\"GE-AJ\",\"Guria\":\"GE-GU\",\"Imereti\":\"GE-IM\",\"K\'akheti\":\"GE-KA\",\"Kvemo Kartli\":\"GE-KK\",\"Mtskheta-Mtianeti\":\"GE-MM\",\"Rach\'a-Lechkhumi-Kvemo Svaneti\":\"GE-RL\",\"Samegrelo-Zemo Svaneti\":\"GE-SZ\",\"Samtskhe-Javakheti\":\"GE-SJ\",\"Shida Kartli\":\"GE-SK\",\"Tbilisi\":\"GE-TB\"},\"GF\":{\"Guyane\":\"\"},\"GG\":{\"Guernsey\":\"\"},\"GH\":{\"Ashanti\":\"GH-AH\",\"Bono\":\"GH-BO\",\"Bono East\":\"GH-BE\",\"Central\":\"GH-CP\",\"Eastern\":\"GH-EP\",\"Greater Accra\":\"GH-AA\",\"Northern\":\"GH-NP\",\"Upper East\":\"GH-UE\",\"Volta\":\"GH-TV\",\"Western\":\"GH-WP\"},\"GI\":{\"Gibraltar\":\"\"},\"GL\":{\"Avannaata Kommunia\":\"GL-AV\",\"Kommune Kujalleq\":\"GL-KU\",\"Kommune Qeqertalik\":\"GL-QT\",\"Kommuneqarfik Sermersooq\":\"GL-SM\",\"Qeqqata Kommunia\":\"GL-QE\"},\"GM\":{\"Banjul\":\"GM-B\",\"Central River\":\"GM-M\",\"Lower River\":\"GM-L\",\"North Bank\":\"GM-N\",\"Upper River\":\"GM-U\",\"Western\":\"GM-W\"},\"GN\":{\"Boffa\":\"GN-BF\",\"Boke\":\"GN-B\",\"Conakry\":\"GN-C\",\"Coyah\":\"GN-CO\",\"Dabola\":\"GN-DB\",\"Kankan\":\"GN-K\",\"Kindia\":\"GN-D\",\"Labe\":\"GN-LA\",\"Nzerekore\":\"GN-N\",\"Siguiri\":\"GN-SI\"},\"GP\":{\"Guadeloupe\":\"\"},\"GQ\":{\"Bioko Norte\":\"GQ-BN\",\"Litoral\":\"GQ-LI\",\"Wele-Nzas\":\"GQ-WN\"},\"GR\":{\"Agion Oros\":\"GR-69\",\"Anatoliki Makedonia kai Thraki\":\"GR-A\",\"Attiki\":\"GR-I\",\"Dytiki Ellada\":\"GR-G\",\"Dytiki Makedonia\":\"GR-C\",\"Ionia Nisia\":\"GR-F\",\"Ipeiros\":\"GR-D\",\"Kentriki Makedonia\":\"GR-B\",\"Kriti\":\"GR-M\",\"Notio Aigaio\":\"GR-L\",\"Peloponnisos\":\"GR-J\",\"Sterea Ellada\":\"GR-H\",\"Thessalia\":\"GR-E\",\"Voreio Aigaio\":\"GR-K\"},\"GS\":{\"South Georgia and the South Sandwich Islands\":\"\"},\"GT\":{\"Alta Verapaz\":\"GT-AV\",\"Baja Verapaz\":\"GT-BV\",\"Chimaltenango\":\"GT-CM\",\"Chiquimula\":\"GT-CQ\",\"El Progreso\":\"GT-PR\",\"Escuintla\":\"GT-ES\",\"Guatemala\":\"GT-GU\",\"Huehuetenango\":\"GT-HU\",\"Izabal\":\"GT-IZ\",\"Jalapa\":\"GT-JA\",\"Jutiapa\":\"GT-JU\",\"Peten\":\"GT-PE\",\"Quetzaltenango\":\"GT-QZ\",\"Quiche\":\"GT-QC\",\"Retalhuleu\":\"GT-RE\",\"Sacatepequez\":\"GT-SA\",\"San Marcos\":\"GT-SM\",\"Santa Rosa\":\"GT-SR\",\"Solola\":\"GT-SO\",\"Suchitepequez\":\"GT-SU\",\"Totonicapan\":\"GT-TO\",\"Zacapa\":\"GT-ZA\"},\"GU\":{\"Agat\":\"\",\"Barrigada\":\"\",\"Chalan Pago-Ordot\":\"\",\"Dededo\":\"\",\"Hagatna\":\"\",\"Inarajan\":\"\",\"Mangilao\":\"\",\"Mongmong-Toto-Maite\":\"\",\"Piti\":\"\",\"Santa Rita\":\"\",\"Sinajana\":\"\",\"Talofofo\":\"\",\"Tamuning-Tumon-Harmon\":\"\",\"Yigo\":\"\",\"Yona\":\"\"},\"GW\":{\"Bissau\":\"GW-BS\",\"Gabu\":\"GW-GA\"},\"GY\":{\"Barima-Waini\":\"GY-BA\",\"Cuyuni-Mazaruni\":\"GY-CU\",\"Demerara-Mahaica\":\"GY-DE\",\"East Berbice-Corentyne\":\"GY-EB\",\"Essequibo Islands-West Demerara\":\"GY-ES\",\"Mahaica-Berbice\":\"GY-MA\",\"Potaro-Siparuni\":\"GY-PT\",\"Upper Demerara-Berbice\":\"GY-UD\"},\"HK\":{\"Hong Kong\":\"CN-HK\"},\"HN\":{\"Atlantida\":\"HN-AT\",\"Choluteca\":\"HN-CH\",\"Colon\":\"HN-CL\",\"Comayagua\":\"HN-CM\",\"Copan\":\"HN-CP\",\"Cortes\":\"HN-CR\",\"El Paraiso\":\"HN-EP\",\"Francisco Morazan\":\"HN-FM\",\"Intibuca\":\"HN-IN\",\"Islas de la Bahia\":\"HN-IB\",\"La Paz\":\"HN-LP\",\"Lempira\":\"HN-LE\",\"Ocotepeque\":\"HN-OC\",\"Olancho\":\"HN-OL\",\"Santa Barbara\":\"HN-SB\",\"Valle\":\"HN-VA\",\"Yoro\":\"HN-YO\"},\"HR\":{\"Bjelovarsko-bilogorska zupanija\":\"HR-07\",\"Brodsko-posavska zupanija\":\"HR-12\",\"Dubrovacko-neretvanska zupanija\":\"HR-19\",\"Grad Zagreb\":\"HR-21\",\"Istarska zupanija\":\"HR-18\",\"Karlovacka zupanija\":\"HR-04\",\"Koprivnicko-krizevacka zupanija\":\"HR-06\",\"Krapinsko-zagorska zupanija\":\"HR-02\",\"Licko-senjska zupanija\":\"HR-09\",\"Medimurska zupanija\":\"HR-20\",\"Osjecko-baranjska zupanija\":\"HR-14\",\"Pozesko-slavonska zupanija\":\"HR-11\",\"Primorsko-goranska zupanija\":\"HR-08\",\"Sibensko-kninska zupanija\":\"HR-15\",\"Sisacko-moslavacka zupanija\":\"HR-03\",\"Splitsko-dalmatinska zupanija\":\"HR-17\",\"Varazdinska zupanija\":\"HR-05\",\"Viroviticko-podravska zupanija\":\"HR-10\",\"Vukovarsko-srijemska zupanija\":\"HR-16\",\"Zadarska zupanija\":\"HR-13\",\"Zagrebacka zupanija\":\"HR-01\"},\"YE\":{\"\'Adan\":\"YE-AD\",\"\'Amran\":\"YE-AM\",\"Abyan\":\"YE-AB\",\"Ad Dali\'\":\"YE-DA\",\"Al Bayda\'\":\"YE-BA\",\"Al Hudaydah\":\"YE-HU\",\"Al Mahrah\":\"YE-MR\",\"Amanat al \'Asimah\":\"YE-SA\",\"Dhamar\":\"YE-DH\",\"Hadramawt\":\"YE-HD\",\"Hajjah\":\"YE-HJ\",\"Ibb\":\"YE-IB\",\"Lahij\":\"YE-LA\",\"Ma\'rib\":\"YE-MA\",\"Sa\'dah\":\"YE-SD\",\"San\'a\'\":\"YE-SN\",\"Shabwah\":\"YE-SH\",\"Ta\'izz\":\"YE-TA\"},\"HT\":{\"Artibonite\":\"HT-AR\",\"Centre\":\"HT-CE\",\"Nord\":\"HT-ND\",\"Nord-Est\":\"HT-NE\",\"Ouest\":\"HT-OU\",\"Sud\":\"HT-SD\",\"Sud-Est\":\"HT-SE\"},\"HU\":{\"Bacs-Kiskun\":\"HU-BK\",\"Baranya\":\"HU-BA\",\"Bekes\":\"HU-BE\",\"Borsod-Abauj-Zemplen\":\"HU-BZ\",\"Budapest\":\"HU-BU\",\"Csongrad\":\"HU-CS\",\"Fejer\":\"HU-FE\",\"Gyor-Moson-Sopron\":\"HU-GS\",\"Hajdu-Bihar\":\"HU-HB\",\"Heves\":\"HU-HE\",\"Jasz-Nagykun-Szolnok\":\"HU-JN\",\"Komarom-Esztergom\":\"HU-KE\",\"Nograd\":\"HU-NO\",\"Pest\":\"HU-PE\",\"Somogy\":\"HU-SO\",\"Szabolcs-Szatmar-Bereg\":\"HU-SZ\",\"Tolna\":\"HU-TO\",\"Vas\":\"HU-VA\",\"Veszprem\":\"HU-VE\",\"Zala\":\"HU-ZA\"},\"YT\":{\"Bandraboua\":\"\",\"Bandrele\":\"\",\"Mamoudzou\":\"\",\"Ouangani\":\"\",\"Pamandzi\":\"\",\"Sada\":\"\"},\"ID\":{\"Aceh\":\"ID-AC\",\"Bali\":\"ID-BA\",\"Banten\":\"ID-BT\",\"Bengkulu\":\"ID-BE\",\"Gorontalo\":\"ID-GO\",\"Jakarta Raya\":\"ID-JK\",\"Jambi\":\"ID-JA\",\"Jawa Barat\":\"ID-JB\",\"Jawa Tengah\":\"ID-JT\",\"Jawa Timur\":\"ID-JI\",\"Kalimantan Barat\":\"ID-KB\",\"Kalimantan Selatan\":\"ID-KS\",\"Kalimantan Tengah\":\"ID-KT\",\"Kalimantan Timur\":\"ID-KI\",\"Kalimantan Utara\":\"ID-KU\",\"Kepulauan Bangka Belitung\":\"ID-BB\",\"Kepulauan Riau\":\"ID-KR\",\"Lampung\":\"ID-LA\",\"Maluku\":\"ID-ML\",\"Maluku Utara\":\"ID-MU\",\"Nusa Tenggara Barat\":\"ID-NB\",\"Nusa Tenggara Timur\":\"ID-NT\",\"Papua\":\"ID-PP\",\"Papua Barat\":\"ID-PB\",\"Riau\":\"ID-RI\",\"Sulawesi Barat\":\"ID-SR\",\"Sulawesi Selatan\":\"ID-SN\",\"Sulawesi Tengah\":\"ID-ST\",\"Sulawesi Tenggara\":\"ID-SG\",\"Sulawesi Utara\":\"ID-SA\",\"Sumatera Barat\":\"ID-SB\",\"Sumatera Selatan\":\"ID-SS\",\"Sumatera Utara\":\"ID-SU\",\"Yogyakarta\":\"ID-YO\"},\"IE\":{\"Carlow\":\"IE-CW\",\"Cavan\":\"IE-CN\",\"Clare\":\"IE-CE\",\"Cork\":\"IE-CO\",\"Donegal\":\"IE-DL\",\"Dublin\":\"IE-D\",\"Galway\":\"IE-G\",\"Kerry\":\"IE-KY\",\"Kildare\":\"IE-KE\",\"Kilkenny\":\"IE-KK\",\"Laois\":\"IE-LS\",\"Leitrim\":\"IE-LM\",\"Limerick\":\"IE-LK\",\"Longford\":\"IE-LD\",\"Louth\":\"IE-LH\",\"Mayo\":\"IE-MO\",\"Meath\":\"IE-MH\",\"Monaghan\":\"IE-MN\",\"Offaly\":\"IE-OY\",\"Roscommon\":\"IE-RN\",\"Sligo\":\"IE-SO\",\"Tipperary\":\"IE-TA\",\"Waterford\":\"IE-WD\",\"Westmeath\":\"IE-WH\",\"Wexford\":\"IE-WX\",\"Wicklow\":\"IE-WW\"},\"IL\":{\"HaDarom\":\"IL-D\",\"HaMerkaz\":\"IL-M\",\"HaTsafon\":\"IL-Z\",\"Hefa\":\"IL-HA\",\"Tel Aviv\":\"IL-TA\",\"Yerushalayim\":\"IL-JM\"},\"IM\":{\"Isle of Man\":\"\"},\"IN\":{\"Andaman and Nicobar Islands\":\"IN-AN\",\"Andhra Pradesh\":\"IN-AP\",\"Arunachal Pradesh\":\"IN-AR\",\"Assam\":\"IN-AS\",\"Bihar\":\"IN-BR\",\"Chandigarh\":\"IN-CH\",\"Chhattisgarh\":\"IN-CT\",\"Dadra and Nagar Haveli\":\"IN-DN\",\"Dadra and Nagar Haveli and Daman and Diu\":\"IN-DH\",\"Delhi\":\"IN-DL\",\"Goa\":\"IN-GA\",\"Gujarat\":\"IN-GJ\",\"Haryana\":\"IN-HR\",\"Himachal Pradesh\":\"IN-HP\",\"Jammu and Kashmir\":\"IN-JK\",\"Jharkhand\":\"IN-JH\",\"Karnataka\":\"IN-KA\",\"Kerala\":\"IN-KL\",\"Lakshadweep\":\"IN-LD\",\"Madhya Pradesh\":\"IN-MP\",\"Maharashtra\":\"IN-MH\",\"Manipur\":\"IN-MN\",\"Meghalaya\":\"IN-ML\",\"Mizoram\":\"IN-MZ\",\"Nagaland\":\"IN-NL\",\"Odisha\":\"IN-OR\",\"Puducherry\":\"IN-PY\",\"Punjab\":\"IN-PB\",\"Rajasthan\":\"IN-RJ\",\"Sikkim\":\"IN-SK\",\"Tamil Nadu\":\"IN-TN\",\"Telangana\":\"IN-TG\",\"Tripura\":\"IN-TR\",\"Uttar Pradesh\":\"IN-UP\",\"Uttarakhand\":\"IN-UT\",\"West Bengal\":\"IN-WB\"},\"IO\":{\"British Indian Ocean Territory\":\"\"},\"ZA\":{\"Eastern Cape\":\"ZA-EC\",\"Free State\":\"ZA-FS\",\"Gauteng\":\"ZA-GP\",\"Kwazulu-Natal\":\"ZA-KZN\",\"Limpopo\":\"ZA-LP\",\"Mpumalanga\":\"ZA-MP\",\"North-West\":\"ZA-NW\",\"Northern Cape\":\"ZA-NC\",\"Western Cape\":\"ZA-WC\"},\"IQ\":{\"Al Anbar\":\"IQ-AN\",\"Al Basrah\":\"IQ-BA\",\"Al Muthanna\":\"IQ-MU\",\"Al Qadisiyah\":\"IQ-QA\",\"An Najaf\":\"IQ-NA\",\"Arbil\":\"IQ-AR\",\"As Sulaymaniyah\":\"IQ-SU\",\"Babil\":\"IQ-BB\",\"Baghdad\":\"IQ-BG\",\"Dahuk\":\"IQ-DA\",\"Dhi Qar\":\"IQ-DQ\",\"Diyala\":\"IQ-DI\",\"Karbala\'\":\"IQ-KA\",\"Kirkuk\":\"IQ-KI\",\"Maysan\":\"IQ-MA\",\"Ninawa\":\"IQ-NI\",\"Salah ad Din\":\"IQ-SD\",\"Wasit\":\"IQ-WA\"},\"IR\":{\"Alborz\":\"IR-30\",\"Ardabil\":\"IR-24\",\"Azarbayjan-e Gharbi\":\"IR-04\",\"Azarbayjan-e Sharqi\":\"IR-03\",\"Bushehr\":\"IR-18\",\"Chahar Mahal va Bakhtiari\":\"IR-14\",\"Esfahan\":\"IR-10\",\"Fars\":\"IR-07\",\"Gilan\":\"IR-01\",\"Golestan\":\"IR-27\",\"Hamadan\":\"IR-13\",\"Hormozgan\":\"IR-22\",\"Ilam\":\"IR-16\",\"Kerman\":\"IR-08\",\"Kermanshah\":\"IR-05\",\"Khorasan-e Jonubi\":\"IR-29\",\"Khorasan-e Razavi\":\"IR-09\",\"Khorasan-e Shomali\":\"IR-28\",\"Khuzestan\":\"IR-06\",\"Kohgiluyeh va Bowyer Ahmad\":\"IR-17\",\"Kordestan\":\"IR-12\",\"Lorestan\":\"IR-15\",\"Markazi\":\"IR-00\",\"Mazandaran\":\"IR-02\",\"Qazvin\":\"IR-26\",\"Qom\":\"IR-25\",\"Semnan\":\"IR-20\",\"Sistan va Baluchestan\":\"IR-11\",\"Tehran\":\"IR-23\",\"Yazd\":\"IR-21\",\"Zanjan\":\"IR-19\"},\"IS\":{\"Austurland\":\"IS-7\",\"Hofudborgarsvaedi\":\"IS-1\",\"Nordurland eystra\":\"IS-6\",\"Nordurland vestra\":\"IS-5\",\"Sudurland\":\"IS-8\",\"Sudurnes\":\"IS-2\",\"Vestfirdir\":\"IS-4\",\"Vesturland\":\"IS-3\"},\"IT\":{\"Abruzzo\":\"IT-65\",\"Basilicata\":\"IT-77\",\"Calabria\":\"IT-78\",\"Campania\":\"IT-72\",\"Emilia-Romagna\":\"IT-45\",\"Friuli-Venezia Giulia\":\"IT-36\",\"Lazio\":\"IT-62\",\"Liguria\":\"IT-42\",\"Lombardia\":\"IT-25\",\"Marche\":\"IT-57\",\"Molise\":\"IT-67\",\"Piemonte\":\"IT-21\",\"Puglia\":\"IT-75\",\"Sardegna\":\"IT-88\",\"Sicilia\":\"IT-82\",\"Toscana\":\"IT-52\",\"Trentino-Alto Adige\":\"IT-32\",\"Umbria\":\"IT-55\",\"Valle d\'Aosta\":\"IT-23\",\"Veneto\":\"IT-34\"},\"ZM\":{\"Central\":\"ZM-02\",\"Copperbelt\":\"ZM-08\",\"Eastern\":\"ZM-03\",\"Luapula\":\"ZM-04\",\"Lusaka\":\"ZM-09\",\"Muchinga\":\"ZM-10\",\"North-Western\":\"ZM-06\",\"Northern\":\"ZM-05\",\"Southern\":\"ZM-07\",\"Western\":\"ZM-01\"},\"JE\":{\"Jersey\":\"\"},\"ZW\":{\"Bulawayo\":\"ZW-BU\",\"Harare\":\"ZW-HA\",\"Manicaland\":\"ZW-MA\",\"Mashonaland Central\":\"ZW-MC\",\"Mashonaland East\":\"ZW-ME\",\"Mashonaland West\":\"ZW-MW\",\"Masvingo\":\"ZW-MV\",\"Matabeleland North\":\"ZW-MN\",\"Matabeleland South\":\"ZW-MS\",\"Midlands\":\"ZW-MI\"},\"JM\":{\"Clarendon\":\"JM-13\",\"Hanover\":\"JM-09\",\"Kingston\":\"JM-01\",\"Manchester\":\"JM-12\",\"Portland\":\"JM-04\",\"Saint Andrew\":\"JM-02\",\"Saint Ann\":\"JM-06\",\"Saint Catherine\":\"JM-14\",\"Saint Elizabeth\":\"JM-11\",\"Saint James\":\"JM-08\",\"Saint Mary\":\"JM-05\",\"Saint Thomas\":\"JM-03\",\"Trelawny\":\"JM-07\",\"Westmoreland\":\"JM-10\"},\"JO\":{\"\'Ajlun\":\"JO-AJ\",\"Al \'Aqabah\":\"JO-AQ\",\"Al \'Asimah\":\"JO-AM\",\"Al Balqa\'\":\"JO-BA\",\"Al Karak\":\"JO-KA\",\"Al Mafraq\":\"JO-MA\",\"At Tafilah\":\"JO-AT\",\"Az Zarqa\'\":\"JO-AZ\",\"Irbid\":\"JO-IR\",\"Jarash\":\"JO-JA\",\"Ma\'an\":\"JO-MN\",\"Madaba\":\"JO-MD\"},\"JP\":{\"Aichi\":\"JP-23\",\"Akita\":\"JP-05\",\"Aomori\":\"JP-02\",\"Chiba\":\"JP-12\",\"Ehime\":\"JP-38\",\"Fukui\":\"JP-18\",\"Fukuoka\":\"JP-40\",\"Fukushima\":\"JP-07\",\"Gifu\":\"JP-21\",\"Gunma\":\"JP-10\",\"Hiroshima\":\"JP-34\",\"Hokkaido\":\"JP-01\",\"Hyogo\":\"JP-28\",\"Ibaraki\":\"JP-08\",\"Ishikawa\":\"JP-17\",\"Iwate\":\"JP-03\",\"Kagawa\":\"JP-37\",\"Kagoshima\":\"JP-46\",\"Kanagawa\":\"JP-14\",\"Kochi\":\"JP-39\",\"Kumamoto\":\"JP-43\",\"Kyoto\":\"JP-26\",\"Mie\":\"JP-24\",\"Miyagi\":\"JP-04\",\"Miyazaki\":\"JP-45\",\"Nagano\":\"JP-20\",\"Nagasaki\":\"JP-42\",\"Nara\":\"JP-29\",\"Niigata\":\"JP-15\",\"Oita\":\"JP-44\",\"Okayama\":\"JP-33\",\"Okinawa\":\"JP-47\",\"Osaka\":\"JP-27\",\"Saga\":\"JP-41\",\"Saitama\":\"JP-11\",\"Shiga\":\"JP-25\",\"Shimane\":\"JP-32\",\"Shizuoka\":\"JP-22\",\"Tochigi\":\"JP-09\",\"Tokushima\":\"JP-36\",\"Tokyo\":\"JP-13\",\"Tottori\":\"JP-31\",\"Toyama\":\"JP-16\",\"Wakayama\":\"JP-30\",\"Yamagata\":\"JP-06\",\"Yamaguchi\":\"JP-35\",\"Yamanashi\":\"JP-19\"},\"KE\":{\"Baringo\":\"KE-01\",\"Bomet\":\"KE-02\",\"Bungoma\":\"KE-03\",\"Busia\":\"KE-04\",\"Elgeyo/Marakwet\":\"KE-05\",\"Embu\":\"KE-06\",\"Garissa\":\"KE-07\",\"Homa Bay\":\"KE-08\",\"Isiolo\":\"KE-09\",\"Kajiado\":\"KE-10\",\"Kakamega\":\"KE-11\",\"Kericho\":\"KE-12\",\"Kiambu\":\"KE-13\",\"Kilifi\":\"KE-14\",\"Kirinyaga\":\"KE-15\",\"Kisii\":\"KE-16\",\"Kisumu\":\"KE-17\",\"Kitui\":\"KE-18\",\"Kwale\":\"KE-19\",\"Laikipia\":\"KE-20\",\"Lamu\":\"KE-21\",\"Machakos\":\"KE-22\",\"Makueni\":\"KE-23\",\"Mandera\":\"KE-24\",\"Marsabit\":\"KE-25\",\"Meru\":\"KE-26\",\"Migori\":\"KE-27\",\"Mombasa\":\"KE-28\",\"Murang\'a\":\"KE-29\",\"Nairobi City\":\"KE-30\",\"Nakuru\":\"KE-31\",\"Nandi\":\"KE-32\",\"Narok\":\"KE-33\",\"Nyamira\":\"KE-34\",\"Nyandarua\":\"KE-35\",\"Nyeri\":\"KE-36\",\"Siaya\":\"KE-38\",\"Taita/Taveta\":\"KE-39\",\"Tharaka-Nithi\":\"KE-41\",\"Trans Nzoia\":\"KE-42\",\"Turkana\":\"KE-43\",\"Uasin Gishu\":\"KE-44\",\"Wajir\":\"KE-46\"},\"KG\":{\"Batken\":\"KG-B\",\"Bishkek Shaary\":\"KG-GB\",\"Chuy\":\"KG-C\",\"Jalal-Abad\":\"KG-J\",\"Naryn\":\"KG-N\",\"Osh Shaary\":\"KG-GO\",\"Talas\":\"KG-T\",\"Ysyk-Kol\":\"KG-Y\"},\"KH\":{\"Baat Dambang\":\"KH-2\",\"Banteay Mean Choay\":\"KH-1\",\"Kampong Chaam\":\"KH-3\",\"Kampong Chhnang\":\"KH-4\",\"Kampong Spueu\":\"KH-5\",\"Kampong Thum\":\"KH-6\",\"Kampot\":\"KH-7\",\"Kandaal\":\"KH-8\",\"Kaoh Kong\":\"KH-9\",\"Kracheh\":\"KH-10\",\"Krong Kaeb\":\"KH-23\",\"Krong Pailin\":\"KH-24\",\"Mondol Kiri\":\"KH-11\",\"Phnom Penh\":\"KH-12\",\"Pousaat\":\"KH-15\",\"Preah Sihanouk\":\"KH-18\",\"Prey Veaeng\":\"KH-14\",\"Rotanak Kiri\":\"KH-16\",\"Siem Reab\":\"KH-17\",\"Stueng Traeng\":\"KH-19\",\"Svaay Rieng\":\"KH-20\",\"Taakaev\":\"KH-21\"},\"KI\":{\"Gilbert Islands\":\"KI-G\"},\"KM\":{\"Grande Comore\":\"KM-G\"},\"KN\":{\"Saint Anne Sandy Point\":\"KN-02\",\"Saint George Basseterre\":\"KN-03\",\"Saint James Windward\":\"KN-05\",\"Saint John Capisterre\":\"KN-06\",\"Saint John Figtree\":\"KN-07\",\"Saint Mary Cayon\":\"KN-08\",\"Saint Paul Capisterre\":\"KN-09\",\"Saint Paul Charlestown\":\"KN-10\",\"Saint Peter Basseterre\":\"KN-11\",\"Saint Thomas Lowland\":\"KN-12\",\"Saint Thomas Middle Island\":\"KN-13\"},\"KP\":{\"P\'yongyang\":\"KP-01\"},\"KR\":{\"Busan-gwangyeoksi\":\"KR-26\",\"Chungcheongbuk-do\":\"KR-43\",\"Chungcheongnam-do\":\"KR-44\",\"Daegu-gwangyeoksi\":\"KR-27\",\"Daejeon-gwangyeoksi\":\"KR-30\",\"Gangwon-do\":\"KR-42\",\"Gwangju-gwangyeoksi\":\"KR-29\",\"Gyeonggi-do\":\"KR-41\",\"Gyeongsangbuk-do\":\"KR-47\",\"Gyeongsangnam-do\":\"KR-48\",\"Incheon-gwangyeoksi\":\"KR-28\",\"Jeju-teukbyeoljachido\":\"KR-49\",\"Jeollabuk-do\":\"KR-45\",\"Jeollanam-do\":\"KR-46\",\"Seoul-teukbyeolsi\":\"KR-11\",\"Ulsan-gwangyeoksi\":\"KR-31\"},\"KW\":{\"Al \'Asimah\":\"KW-KU\",\"Al Ahmadi\":\"KW-AH\",\"Al Farwaniyah\":\"KW-FA\",\"Al Jahra\'\":\"KW-JA\",\"Hawalli\":\"KW-HA\",\"Mubarak al Kabir\":\"KW-MU\"},\"KY\":{\"Cayman Islands\":\"\"},\"KZ\":{\"Almaty\":\"KZ-ALA\",\"Almaty oblysy\":\"KZ-ALM\",\"Aqmola oblysy\":\"KZ-AKM\",\"Aqtobe oblysy\":\"KZ-AKT\",\"Atyrau oblysy\":\"KZ-ATY\",\"Batys Qazaqstan oblysy\":\"KZ-ZAP\",\"Mangghystau oblysy\":\"KZ-MAN\",\"Nur-Sultan\":\"KZ-AST\",\"Ongtustik Qazaqstan oblysy\":\"KZ-YUZ\",\"Pavlodar oblysy\":\"KZ-PAV\",\"Qaraghandy oblysy\":\"KZ-KAR\",\"Qostanay oblysy\":\"KZ-KUS\",\"Qyzylorda oblysy\":\"KZ-KZY\",\"Shyghys Qazaqstan oblysy\":\"KZ-VOS\",\"Shymkent\":\"KZ-SHY\",\"Soltustik Qazaqstan oblysy\":\"KZ-SEV\",\"Zhambyl oblysy\":\"KZ-ZHA\"},\"LA\":{\"Bolikhamxai\":\"LA-BL\",\"Champasak\":\"LA-CH\",\"Houaphan\":\"LA-HO\",\"Khammouan\":\"LA-KH\",\"Louangphabang\":\"LA-LP\",\"Oudomxai\":\"LA-OU\",\"Phongsali\":\"LA-PH\",\"Savannakhet\":\"LA-SV\",\"Viangchan\":\"LA-VI\",\"Xaignabouli\":\"LA-XA\",\"Xekong\":\"LA-XE\",\"Xiangkhouang\":\"LA-XI\"},\"LB\":{\"Aakkar\":\"LB-AK\",\"Baalbek-Hermel\":\"LB-BH\",\"Beqaa\":\"LB-BI\",\"Beyrouth\":\"LB-BA\",\"Liban-Nord\":\"LB-AS\",\"Liban-Sud\":\"LB-JA\",\"Mont-Liban\":\"LB-JL\",\"Nabatiye\":\"LB-NA\"},\"LC\":{\"Anse la Raye\":\"LC-01\",\"Castries\":\"LC-02\",\"Dennery\":\"LC-05\",\"Gros Islet\":\"LC-06\",\"Laborie\":\"LC-07\",\"Soufriere\":\"LC-10\",\"Vieux Fort\":\"LC-11\"},\"LI\":{\"Balzers\":\"LI-01\",\"Eschen\":\"LI-02\",\"Gamprin\":\"LI-03\",\"Mauren\":\"LI-04\",\"Planken\":\"LI-05\",\"Ruggell\":\"LI-06\",\"Schaan\":\"LI-07\",\"Triesen\":\"LI-09\",\"Triesenberg\":\"LI-10\",\"Vaduz\":\"LI-11\"},\"LK\":{\"Central Province\":\"LK-2\",\"Eastern Province\":\"LK-5\",\"North Central Province\":\"LK-7\",\"North Western Province\":\"LK-6\",\"Northern Province\":\"LK-4\",\"Sabaragamuwa Province\":\"LK-9\",\"Southern Province\":\"LK-3\",\"Uva Province\":\"LK-8\",\"Western Province\":\"LK-1\"},\"LR\":{\"Bomi\":\"LR-BM\",\"Grand Bassa\":\"LR-GB\",\"Grand Gedeh\":\"LR-GG\",\"Margibi\":\"LR-MG\",\"Montserrado\":\"LR-MO\",\"Sinoe\":\"LR-SI\"},\"LS\":{\"Leribe\":\"LS-C\",\"Mafeteng\":\"LS-E\",\"Maseru\":\"LS-A\",\"Mokhotlong\":\"LS-J\",\"Quthing\":\"LS-G\",\"Thaba-Tseka\":\"LS-K\"},\"LT\":{\"Alytaus apskritis\":\"LT-AL\",\"Kauno apskritis\":\"LT-KU\",\"Klaipedos apskritis\":\"LT-KL\",\"Marijampoles apskritis\":\"LT-MR\",\"Panevezio apskritis\":\"LT-PN\",\"Siauliu apskritis\":\"LT-SA\",\"Taurages apskritis\":\"LT-TA\",\"Telsiu apskritis\":\"LT-TE\",\"Utenos apskritis\":\"LT-UT\",\"Vilniaus apskritis\":\"LT-VL\"},\"LU\":{\"Capellen\":\"LU-CA\",\"Clervaux\":\"LU-CL\",\"Diekirch\":\"LU-DI\",\"Echternach\":\"LU-EC\",\"Esch-sur-Alzette\":\"LU-ES\",\"Grevenmacher\":\"LU-GR\",\"Luxembourg\":\"LU-LU\",\"Mersch\":\"LU-ME\",\"Redange\":\"LU-RD\",\"Remich\":\"LU-RM\",\"Vianden\":\"LU-VD\",\"Wiltz\":\"LU-WI\"},\"LV\":{\"Adazu novads\":\"LV-011\",\"Aglonas novads\":\"LV-001\",\"Aizkraukles novads\":\"LV-002\",\"Aizputes novads\":\"LV-003\",\"Alojas novads\":\"LV-005\",\"Aluksnes novads\":\"LV-007\",\"Auces novads\":\"LV-010\",\"Babites novads\":\"LV-012\",\"Baldones novads\":\"LV-013\",\"Balvu novads\":\"LV-015\",\"Bauskas novads\":\"LV-016\",\"Beverinas novads\":\"LV-017\",\"Brocenu novads\":\"LV-018\",\"Carnikavas novads\":\"LV-020\",\"Cesu novads\":\"LV-022\",\"Cesvaines novads\":\"LV-021\",\"Dagdas novads\":\"LV-024\",\"Daugavpils novads\":\"LV-025\",\"Dobeles novads\":\"LV-026\",\"Dundagas novads\":\"LV-027\",\"Engures novads\":\"LV-029\",\"Erglu novads\":\"LV-030\",\"Gulbenes novads\":\"LV-033\",\"Iecavas novads\":\"LV-034\",\"Ikskiles novads\":\"LV-035\",\"Incukalna novads\":\"LV-037\",\"Jaunjelgavas novads\":\"LV-038\",\"Jaunpiebalgas novads\":\"LV-039\",\"Jaunpils novads\":\"LV-040\",\"Jekabpils novads\":\"LV-042\",\"Jelgava\":\"LV-JEL\",\"Jelgavas novads\":\"LV-041\",\"Jurmala\":\"LV-JUR\",\"Kandavas novads\":\"LV-043\",\"Kekavas novads\":\"LV-052\",\"Kokneses novads\":\"LV-046\",\"Kraslavas novads\":\"LV-047\",\"Kuldigas novads\":\"LV-050\",\"Lielvardes novads\":\"LV-053\",\"Liepaja\":\"LV-LPX\",\"Limbazu novads\":\"LV-054\",\"Livanu novads\":\"LV-056\",\"Lubanas novads\":\"LV-057\",\"Ludzas novads\":\"LV-058\",\"Madonas novads\":\"LV-059\",\"Malpils novads\":\"LV-061\",\"Nauksenu novads\":\"LV-064\",\"Ogres novads\":\"LV-067\",\"Olaines novads\":\"LV-068\",\"Ozolnieku novads\":\"LV-069\",\"Preilu novads\":\"LV-073\",\"Priekules novads\":\"LV-075\",\"Rezeknes novads\":\"LV-077\",\"Riebinu novads\":\"LV-078\",\"Riga\":\"LV-RIX\",\"Ropazu novads\":\"LV-080\",\"Rundales novads\":\"LV-083\",\"Salaspils novads\":\"LV-087\",\"Saldus novads\":\"LV-088\",\"Saulkrastu novads\":\"LV-089\",\"Sejas novads\":\"LV-090\",\"Siguldas novads\":\"LV-091\",\"Skrundas novads\":\"LV-093\",\"Smiltenes novads\":\"LV-094\",\"Stopinu novads\":\"LV-095\",\"Talsu novads\":\"LV-097\",\"Tukuma novads\":\"LV-099\",\"Vainodes novads\":\"LV-100\",\"Valkas novads\":\"LV-101\",\"Valmiera\":\"LV-VMR\",\"Varkavas novads\":\"LV-103\",\"Vecumnieku novads\":\"LV-105\",\"Ventspils novads\":\"LV-106\",\"Zilupes novads\":\"LV-110\"},\"LY\":{\"Al Butnan\":\"LY-BU\",\"Al Jabal al Akhdar\":\"LY-JA\",\"Al Jabal al Gharbi\":\"LY-JG\",\"Al Jafarah\":\"LY-JI\",\"Al Jufrah\":\"LY-JU\",\"Al Marj\":\"LY-MJ\",\"Al Marqab\":\"LY-MB\",\"Al Wahat\":\"LY-WA\",\"An Nuqat al Khams\":\"LY-NQ\",\"Az Zawiyah\":\"LY-ZA\",\"Banghazi\":\"LY-BA\",\"Darnah\":\"LY-DR\",\"Misratah\":\"LY-MI\",\"Murzuq\":\"LY-MQ\",\"Nalut\":\"LY-NL\",\"Sabha\":\"LY-SB\",\"Surt\":\"LY-SR\",\"Tarabulus\":\"LY-TB\"},\"MA\":{\"Beni-Mellal-Khenifra\":\"MA-05\",\"Casablanca-Settat\":\"MA-06\",\"Draa-Tafilalet\":\"MA-08\",\"Fes- Meknes\":\"MA-03\",\"Guelmim-Oued Noun (EH-partial)\":\"MA-10\",\"L\'Oriental\":\"MA-02\",\"Laayoune-Sakia El Hamra (EH-partial)\":\"MA-11\",\"Marrakech-Safi\":\"MA-07\",\"Rabat-Sale-Kenitra\":\"MA-04\",\"Souss-Massa\":\"MA-09\",\"Tanger-Tetouan-Al Hoceima\":\"MA-01\"},\"MC\":{\"Fontvieille\":\"MC-FO\",\"La Condamine\":\"MC-CO\",\"Monaco-Ville\":\"MC-MO\",\"Monte-Carlo\":\"MC-MC\",\"Saint-Roman\":\"MC-SR\"},\"MD\":{\"Anenii Noi\":\"MD-AN\",\"Balti\":\"MD-BA\",\"Basarabeasca\":\"MD-BS\",\"Bender\":\"MD-BD\",\"Briceni\":\"MD-BR\",\"Cahul\":\"MD-CA\",\"Calarasi\":\"MD-CL\",\"Cantemir\":\"MD-CT\",\"Causeni\":\"MD-CS\",\"Chisinau\":\"MD-CU\",\"Cimislia\":\"MD-CM\",\"Criuleni\":\"MD-CR\",\"Donduseni\":\"MD-DO\",\"Drochia\":\"MD-DR\",\"Dubasari\":\"MD-DU\",\"Edinet\":\"MD-ED\",\"Falesti\":\"MD-FA\",\"Floresti\":\"MD-FL\",\"Gagauzia, Unitatea teritoriala autonoma\":\"MD-GA\",\"Glodeni\":\"MD-GL\",\"Hincesti\":\"MD-HI\",\"Ialoveni\":\"MD-IA\",\"Leova\":\"MD-LE\",\"Nisporeni\":\"MD-NI\",\"Ocnita\":\"MD-OC\",\"Orhei\":\"MD-OR\",\"Rezina\":\"MD-RE\",\"Riscani\":\"MD-RI\",\"Singerei\":\"MD-SI\",\"Soldanesti\":\"MD-SD\",\"Soroca\":\"MD-SO\",\"Stefan Voda\":\"MD-SV\",\"Stinga Nistrului, unitatea teritoriala din\":\"MD-SN\",\"Straseni\":\"MD-ST\",\"Taraclia\":\"MD-TA\",\"Telenesti\":\"MD-TE\",\"Ungheni\":\"MD-UN\"},\"ME\":{\"Bar\":\"ME-02\",\"Berane\":\"ME-03\",\"Bijelo Polje\":\"ME-04\",\"Budva\":\"ME-05\",\"Cetinje\":\"ME-06\",\"Danilovgrad\":\"ME-07\",\"Herceg-Novi\":\"ME-08\",\"Kolasin\":\"ME-09\",\"Kotor\":\"ME-10\",\"Niksic\":\"ME-12\",\"Plav\":\"ME-13\",\"Pljevlja\":\"ME-14\",\"Pluzine\":\"ME-15\",\"Podgorica\":\"ME-16\",\"Rozaje\":\"ME-17\",\"Tivat\":\"ME-19\",\"Tuzi\":\"ME-24\",\"Ulcinj\":\"ME-20\",\"Zabljak\":\"ME-21\"},\"MF\":{\"Saint Martin (French Part)\":\"\"},\"MG\":{\"Antananarivo\":\"MG-T\",\"Antsiranana\":\"MG-D\",\"Fianarantsoa\":\"MG-F\",\"Mahajanga\":\"MG-M\",\"Toamasina\":\"MG-A\",\"Toliara\":\"MG-U\"},\"MH\":{\"Kwajalein\":\"MH-KWA\",\"Majuro\":\"MH-MAJ\"},\"MK\":{\"Aracinovo\":\"MK-802\",\"Berovo\":\"MK-201\",\"Bitola\":\"MK-501\",\"Bogdanci\":\"MK-401\",\"Bogovinje\":\"MK-601\",\"Bosilovo\":\"MK-402\",\"Brvenica\":\"MK-602\",\"Butel\":\"MK-803\",\"Caska\":\"MK-109\",\"Centar\":\"MK-814\",\"Centar Zupa\":\"MK-313\",\"Cesinovo-Oblesevo\":\"MK-210\",\"Cucer Sandevo\":\"MK-816\",\"Debar\":\"MK-303\",\"Delcevo\":\"MK-203\",\"Dojran\":\"MK-406\",\"Dolneni\":\"MK-503\",\"Gazi Baba\":\"MK-804\",\"Gevgelija\":\"MK-405\",\"Gostivar\":\"MK-604\",\"Ilinden\":\"MK-807\",\"Jegunovce\":\"MK-606\",\"Karbinci\":\"MK-205\",\"Kavadarci\":\"MK-104\",\"Kicevo\":\"MK-307\",\"Kisela Voda\":\"MK-809\",\"Kocani\":\"MK-206\",\"Kratovo\":\"MK-701\",\"Kriva Palanka\":\"MK-702\",\"Krusevo\":\"MK-505\",\"Kumanovo\":\"MK-703\",\"Lipkovo\":\"MK-704\",\"Makedonska Kamenica\":\"MK-207\",\"Mavrovo i Rostusa\":\"MK-607\",\"Mogila\":\"MK-506\",\"Negotino\":\"MK-106\",\"Novaci\":\"MK-507\",\"Novo Selo\":\"MK-408\",\"Ohrid\":\"MK-310\",\"Pehcevo\":\"MK-208\",\"Petrovec\":\"MK-810\",\"Plasnica\":\"MK-311\",\"Prilep\":\"MK-508\",\"Probistip\":\"MK-209\",\"Radovis\":\"MK-409\",\"Rankovce\":\"MK-705\",\"Resen\":\"MK-509\",\"Rosoman\":\"MK-107\",\"Saraj\":\"MK-811\",\"Sopiste\":\"MK-812\",\"Stip\":\"MK-211\",\"Struga\":\"MK-312\",\"Strumica\":\"MK-410\",\"Studenicani\":\"MK-813\",\"Suto Orizari\":\"MK-817\",\"Sveti Nikole\":\"MK-108\",\"Tearce\":\"MK-608\",\"Tetovo\":\"MK-609\",\"Valandovo\":\"MK-403\",\"Vasilevo\":\"MK-404\",\"Veles\":\"MK-101\",\"Vinica\":\"MK-202\",\"Vrapciste\":\"MK-603\",\"Zelenikovo\":\"MK-806\",\"Zelino\":\"MK-605\"},\"ML\":{\"Bamako\":\"ML-BKO\",\"Gao\":\"ML-7\",\"Kayes\":\"ML-1\",\"Kidal\":\"ML-8\",\"Koulikoro\":\"ML-2\",\"Mopti\":\"ML-5\",\"Segou\":\"ML-4\",\"Sikasso\":\"ML-3\",\"Tombouctou\":\"ML-6\"},\"MM\":{\"Ayeyarwady\":\"MM-07\",\"Bago\":\"MM-02\",\"Chin\":\"MM-14\",\"Kachin\":\"MM-11\",\"Kayah\":\"MM-12\",\"Kayin\":\"MM-13\",\"Magway\":\"MM-03\",\"Mandalay\":\"MM-04\",\"Mon\":\"MM-15\",\"Nay Pyi Taw\":\"MM-18\",\"Rakhine\":\"MM-16\",\"Sagaing\":\"MM-01\",\"Shan\":\"MM-17\",\"Tanintharyi\":\"MM-05\",\"Yangon\":\"MM-06\"},\"MN\":{\"Bayan-Olgiy\":\"MN-071\",\"Darhan uul\":\"MN-037\",\"Dornod\":\"MN-061\",\"Govi-Altay\":\"MN-065\",\"Hovd\":\"MN-043\",\"Omnogovi\":\"MN-053\",\"Orhon\":\"MN-035\",\"Selenge\":\"MN-049\",\"Tov\":\"MN-047\",\"Ulaanbaatar\":\"MN-1\"},\"MO\":{\"Macao\":\"\"},\"MP\":{\"Northern Mariana Islands\":\"\"},\"MQ\":{\"Martinique\":\"\"},\"MR\":{\"Dakhlet Nouadhibou\":\"MR-08\",\"Gorgol\":\"MR-04\",\"Inchiri\":\"MR-12\",\"Nouakchott Ouest\":\"MR-13\",\"Tiris Zemmour\":\"MR-11\",\"Trarza\":\"MR-06\"},\"MS\":{\"Saint Anthony\":\"\",\"Saint Peter\":\"\"},\"MT\":{\"Attard\":\"MT-01\",\"Balzan\":\"MT-02\",\"Birgu\":\"MT-03\",\"Birkirkara\":\"MT-04\",\"Birzebbuga\":\"MT-05\",\"Bormla\":\"MT-06\",\"Dingli\":\"MT-07\",\"Fgura\":\"MT-08\",\"Floriana\":\"MT-09\",\"Fontana\":\"MT-10\",\"Gharb\":\"MT-14\",\"Gharghur\":\"MT-15\",\"Ghasri\":\"MT-16\",\"Ghaxaq\":\"MT-17\",\"Gudja\":\"MT-11\",\"Gzira\":\"MT-12\",\"Hamrun\":\"MT-18\",\"Iklin\":\"MT-19\",\"Isla\":\"MT-20\",\"Kalkara\":\"MT-21\",\"Kercem\":\"MT-22\",\"Kirkop\":\"MT-23\",\"Lija\":\"MT-24\",\"Luqa\":\"MT-25\",\"Marsa\":\"MT-26\",\"Marsaskala\":\"MT-27\",\"Marsaxlokk\":\"MT-28\",\"Mdina\":\"MT-29\",\"Mellieha\":\"MT-30\",\"Mgarr\":\"MT-31\",\"Mosta\":\"MT-32\",\"Mqabba\":\"MT-33\",\"Msida\":\"MT-34\",\"Mtarfa\":\"MT-35\",\"Munxar\":\"MT-36\",\"Nadur\":\"MT-37\",\"Naxxar\":\"MT-38\",\"Paola\":\"MT-39\",\"Pembroke\":\"MT-40\",\"Pieta\":\"MT-41\",\"Qala\":\"MT-42\",\"Qormi\":\"MT-43\",\"Rabat Gozo\":\"MT-45\",\"Rabat Malta\":\"MT-46\",\"Safi\":\"MT-47\",\"Saint John\":\"MT-49\",\"Saint Julian\'s\":\"MT-48\",\"Saint Lucia\'s\":\"MT-53\",\"Saint Paul\'s Bay\":\"MT-51\",\"Sannat\":\"MT-52\",\"Santa Venera\":\"MT-54\",\"Siggiewi\":\"MT-55\",\"Sliema\":\"MT-56\",\"Swieqi\":\"MT-57\",\"Ta\' Xbiex\":\"MT-58\",\"Tarxien\":\"MT-59\",\"Valletta\":\"MT-60\",\"Xaghra\":\"MT-61\",\"Xewkija\":\"MT-62\",\"Xghajra\":\"MT-63\",\"Zabbar\":\"MT-64\",\"Zebbug Gozo\":\"MT-65\",\"Zejtun\":\"MT-67\",\"Zurrieq\":\"MT-68\"},\"MU\":{\"Black River\":\"MU-BL\",\"Flacq\":\"MU-FL\",\"Grand Port\":\"MU-GP\",\"Moka\":\"MU-MO\",\"Pamplemousses\":\"MU-PA\",\"Plaines Wilhems\":\"MU-PW\",\"Port Louis\":\"MU-PL\",\"Riviere du Rempart\":\"MU-RR\",\"Rodrigues Islands\":\"MU-RO\",\"Savanne\":\"MU-SA\"},\"MV\":{\"Addu City\":\"MV-01\",\"Faadhippolhu\":\"MV-03\",\"Felidhu Atoll\":\"MV-04\",\"Hahdhunmathi\":\"MV-05\",\"Male\":\"MV-MLE\",\"Mulaku Atoll\":\"MV-12\",\"North Maalhosmadulu\":\"MV-13\",\"North Thiladhunmathi\":\"MV-07\",\"South Ari Atoll\":\"MV-00\",\"South Huvadhu Atoll\":\"MV-28\",\"South Maalhosmadulu\":\"MV-20\",\"South Miladhunmadulu\":\"MV-25\",\"South Nilandhe Atoll\":\"MV-17\",\"South Thiladhunmathi\":\"MV-23\"},\"MW\":{\"Balaka\":\"MW-BA\",\"Blantyre\":\"MW-BL\",\"Chiradzulu\":\"MW-CR\",\"Dedza\":\"MW-DE\",\"Dowa\":\"MW-DO\",\"Karonga\":\"MW-KR\",\"Lilongwe\":\"MW-LI\",\"Machinga\":\"MW-MH\",\"Mangochi\":\"MW-MG\",\"Mchinji\":\"MW-MC\",\"Mzimba\":\"MW-MZ\",\"Nkhotakota\":\"MW-NK\",\"Salima\":\"MW-SA\",\"Zomba\":\"MW-ZO\"},\"MX\":{\"Aguascalientes\":\"MX-AGU\",\"Baja California\":\"MX-BCN\",\"Baja California Sur\":\"MX-BCS\",\"Campeche\":\"MX-CAM\",\"Chiapas\":\"MX-CHP\",\"Chihuahua\":\"MX-CHH\",\"Ciudad de Mexico\":\"MX-CMX\",\"Coahuila de Zaragoza\":\"MX-COA\",\"Colima\":\"MX-COL\",\"Durango\":\"MX-DUR\",\"Guanajuato\":\"MX-GUA\",\"Guerrero\":\"MX-GRO\",\"Hidalgo\":\"MX-HID\",\"Jalisco\":\"MX-JAL\",\"Mexico\":\"MX-MEX\",\"Michoacan de Ocampo\":\"MX-MIC\",\"Morelos\":\"MX-MOR\",\"Nayarit\":\"MX-NAY\",\"Nuevo Leon\":\"MX-NLE\",\"Oaxaca\":\"MX-OAX\",\"Puebla\":\"MX-PUE\",\"Queretaro\":\"MX-QUE\",\"Quintana Roo\":\"MX-ROO\",\"San Luis Potosi\":\"MX-SLP\",\"Sinaloa\":\"MX-SIN\",\"Sonora\":\"MX-SON\",\"Tabasco\":\"MX-TAB\",\"Tamaulipas\":\"MX-TAM\",\"Tlaxcala\":\"MX-TLA\",\"Veracruz de Ignacio de la Llave\":\"MX-VER\",\"Yucatan\":\"MX-YUC\",\"Zacatecas\":\"MX-ZAC\"},\"MY\":{\"Johor\":\"MY-01\",\"Kedah\":\"MY-02\",\"Kelantan\":\"MY-03\",\"Melaka\":\"MY-04\",\"Negeri Sembilan\":\"MY-05\",\"Pahang\":\"MY-06\",\"Perak\":\"MY-08\",\"Perlis\":\"MY-09\",\"Pulau Pinang\":\"MY-07\",\"Sabah\":\"MY-12\",\"Sarawak\":\"MY-13\",\"Selangor\":\"MY-10\",\"Terengganu\":\"MY-11\",\"Wilayah Persekutuan Kuala Lumpur\":\"MY-14\",\"Wilayah Persekutuan Labuan\":\"MY-15\",\"Wilayah Persekutuan Putrajaya\":\"MY-16\"},\"MZ\":{\"Cabo Delgado\":\"MZ-P\",\"Gaza\":\"MZ-G\",\"Inhambane\":\"MZ-I\",\"Manica\":\"MZ-B\",\"Maputo\":\"MZ-L\",\"Nampula\":\"MZ-N\",\"Niassa\":\"MZ-A\",\"Sofala\":\"MZ-S\",\"Tete\":\"MZ-T\",\"Zambezia\":\"MZ-Q\"},\"NA\":{\"Erongo\":\"NA-ER\",\"Hardap\":\"NA-HA\",\"Karas\":\"NA-KA\",\"Kavango East\":\"NA-KE\",\"Khomas\":\"NA-KH\",\"Kunene\":\"NA-KU\",\"Ohangwena\":\"NA-OW\",\"Omaheke\":\"NA-OH\",\"Omusati\":\"NA-OS\",\"Oshana\":\"NA-ON\",\"Oshikoto\":\"NA-OT\",\"Otjozondjupa\":\"NA-OD\",\"Zambezi\":\"NA-CA\"},\"NC\":{\"Province Nord\":\"\",\"Province Sud\":\"\"},\"NE\":{\"Agadez\":\"NE-1\",\"Diffa\":\"NE-2\",\"Dosso\":\"NE-3\",\"Niamey\":\"NE-8\",\"Tahoua\":\"NE-5\",\"Zinder\":\"NE-7\"},\"NF\":{\"Norfolk Island\":\"\"},\"NG\":{\"Abia\":\"NG-AB\",\"Abuja Federal Capital Territory\":\"NG-FC\",\"Adamawa\":\"NG-AD\",\"Akwa Ibom\":\"NG-AK\",\"Anambra\":\"NG-AN\",\"Bauchi\":\"NG-BA\",\"Bayelsa\":\"NG-BY\",\"Benue\":\"NG-BE\",\"Borno\":\"NG-BO\",\"Cross River\":\"NG-CR\",\"Delta\":\"NG-DE\",\"Edo\":\"NG-ED\",\"Ekiti\":\"NG-EK\",\"Enugu\":\"NG-EN\",\"Gombe\":\"NG-GO\",\"Imo\":\"NG-IM\",\"Jigawa\":\"NG-JI\",\"Kaduna\":\"NG-KD\",\"Kano\":\"NG-KN\",\"Katsina\":\"NG-KT\",\"Kebbi\":\"NG-KE\",\"Kogi\":\"NG-KO\",\"Kwara\":\"NG-KW\",\"Lagos\":\"NG-LA\",\"Nasarawa\":\"NG-NA\",\"Niger\":\"NG-NI\",\"Ogun\":\"NG-OG\",\"Ondo\":\"NG-ON\",\"Osun\":\"NG-OS\",\"Oyo\":\"NG-OY\",\"Plateau\":\"NG-PL\",\"Rivers\":\"NG-RI\",\"Sokoto\":\"NG-SO\",\"Taraba\":\"NG-TA\",\"Yobe\":\"NG-YO\",\"Zamfara\":\"NG-ZA\"},\"NI\":{\"Boaco\":\"NI-BO\",\"Carazo\":\"NI-CA\",\"Chinandega\":\"NI-CI\",\"Chontales\":\"NI-CO\",\"Costa Caribe Norte\":\"NI-AN\",\"Costa Caribe Sur\":\"NI-AS\",\"Esteli\":\"NI-ES\",\"Granada\":\"NI-GR\",\"Jinotega\":\"NI-JI\",\"Leon\":\"NI-LE\",\"Madriz\":\"NI-MD\",\"Managua\":\"NI-MN\",\"Masaya\":\"NI-MS\",\"Matagalpa\":\"NI-MT\",\"Nueva Segovia\":\"NI-NS\",\"Rio San Juan\":\"NI-SJ\",\"Rivas\":\"NI-RI\"},\"NL\":{\"Drenthe\":\"NL-DR\",\"Flevoland\":\"NL-FL\",\"Fryslan\":\"NL-FR\",\"Gelderland\":\"NL-GE\",\"Groningen\":\"NL-GR\",\"Limburg\":\"NL-LI\",\"Noord-Brabant\":\"NL-NB\",\"Noord-Holland\":\"NL-NH\",\"Overijssel\":\"NL-OV\",\"Utrecht\":\"NL-UT\",\"Zeeland\":\"NL-ZE\",\"Zuid-Holland\":\"NL-ZH\"},\"NO\":{\"Agder\":\"NO-42\",\"Innlandet\":\"NO-34\",\"More og Romsdal\":\"NO-15\",\"Nordland\":\"NO-18\",\"Oslo\":\"NO-03\",\"Rogaland\":\"NO-11\",\"Troms og Finnmark\":\"NO-54\",\"Trondelag\":\"NO-50\",\"Vestfold og Telemark\":\"NO-38\",\"Vestland\":\"NO-46\",\"Viken\":\"NO-30\"},\"NP\":{\"Bagmati\":\"NP-BA\",\"Bheri\":\"NP-BH\",\"Dhawalagiri\":\"NP-DH\",\"Gandaki\":\"NP-GA\",\"Janakpur\":\"NP-JA\",\"Karnali\":\"NP-KA\",\"Kosi\":\"NP-KO\",\"Lumbini\":\"NP-LU\",\"Mahakali\":\"NP-MA\",\"Mechi\":\"NP-ME\",\"Narayani\":\"NP-NA\",\"Rapti\":\"NP-RA\",\"Sagarmatha\":\"NP-SA\",\"Seti\":\"NP-SE\"},\"NR\":{\"Yaren\":\"NR-14\"},\"NU\":{\"Niue\":\"\"},\"NZ\":{\"Auckland\":\"NZ-AUK\",\"Bay of Plenty\":\"NZ-BOP\",\"Canterbury\":\"NZ-CAN\",\"Chatham Islands Territory\":\"NZ-CIT\",\"Gisborne\":\"NZ-GIS\",\"Hawke\'s Bay\":\"NZ-HKB\",\"Manawatu-Wanganui\":\"NZ-MWT\",\"Marlborough\":\"NZ-MBH\",\"Nelson\":\"NZ-NSN\",\"Northland\":\"NZ-NTL\",\"Otago\":\"NZ-OTA\",\"Southland\":\"NZ-STL\",\"Taranaki\":\"NZ-TKI\",\"Tasman\":\"NZ-TAS\",\"Waikato\":\"NZ-WKO\",\"Wellington\":\"NZ-WGN\",\"West Coast\":\"NZ-WTC\"},\"OM\":{\"Ad Dakhiliyah\":\"OM-DA\",\"Al Buraymi\":\"OM-BU\",\"Al Wusta\":\"OM-WU\",\"Az Zahirah\":\"OM-ZA\",\"Janub al Batinah\":\"OM-BJ\",\"Janub ash Sharqiyah\":\"OM-SJ\",\"Masqat\":\"OM-MA\",\"Musandam\":\"OM-MU\",\"Shamal al Batinah\":\"OM-BS\",\"Shamal ash Sharqiyah\":\"OM-SS\",\"Zufar\":\"OM-ZU\"},\"PA\":{\"Bocas del Toro\":\"PA-1\",\"Chiriqui\":\"PA-4\",\"Cocle\":\"PA-2\",\"Colon\":\"PA-3\",\"Darien\":\"PA-5\",\"Herrera\":\"PA-6\",\"Los Santos\":\"PA-7\",\"Ngobe-Bugle\":\"PA-NB\",\"Panama\":\"PA-8\",\"Veraguas\":\"PA-9\"},\"PE\":{\"Amazonas\":\"PE-AMA\",\"Ancash\":\"PE-ANC\",\"Apurimac\":\"PE-APU\",\"Arequipa\":\"PE-ARE\",\"Ayacucho\":\"PE-AYA\",\"Cajamarca\":\"PE-CAJ\",\"Cusco\":\"PE-CUS\",\"El Callao\":\"PE-CAL\",\"Huancavelica\":\"PE-HUV\",\"Huanuco\":\"PE-HUC\",\"Ica\":\"PE-ICA\",\"Junin\":\"PE-JUN\",\"La Libertad\":\"PE-LAL\",\"Lambayeque\":\"PE-LAM\",\"Lima\":\"PE-LIM\",\"Loreto\":\"PE-LOR\",\"Madre de Dios\":\"PE-MDD\",\"Moquegua\":\"PE-MOQ\",\"Pasco\":\"PE-PAS\",\"Piura\":\"PE-PIU\",\"Puno\":\"PE-PUN\",\"San Martin\":\"PE-SAM\",\"Tacna\":\"PE-TAC\",\"Tumbes\":\"PE-TUM\",\"Ucayali\":\"PE-UCA\"},\"PF\":{\"Iles Australes\":\"\",\"Iles Marquises\":\"\",\"Iles Sous-le-Vent\":\"\",\"Iles Tuamotu-Gambier\":\"\",\"Iles du Vent\":\"\"},\"PG\":{\"Bougainville\":\"PG-NSB\",\"Central\":\"PG-CPM\",\"East New Britain\":\"PG-EBR\",\"East Sepik\":\"PG-ESW\",\"Eastern Highlands\":\"PG-EHG\",\"Madang\":\"PG-MPM\",\"Manus\":\"PG-MRL\",\"Milne Bay\":\"PG-MBA\",\"Morobe\":\"PG-MPL\",\"National Capital District (Port Moresby)\":\"PG-NCD\",\"New Ireland\":\"PG-NIK\",\"Southern Highlands\":\"PG-SHM\",\"West New Britain\":\"PG-WBK\",\"West Sepik\":\"PG-SAN\",\"Western\":\"PG-WPD\",\"Western Highlands\":\"PG-WHM\"},\"PH\":{\"Abra\":\"PH-ABR\",\"Agusan del Norte\":\"PH-AGN\",\"Agusan del Sur\":\"PH-AGS\",\"Aklan\":\"PH-AKL\",\"Albay\":\"PH-ALB\",\"Antique\":\"PH-ANT\",\"Apayao\":\"PH-APA\",\"Aurora\":\"PH-AUR\",\"Basilan\":\"PH-BAS\",\"Bataan\":\"PH-BAN\",\"Batanes\":\"PH-BTN\",\"Batangas\":\"PH-BTG\",\"Benguet\":\"PH-BEN\",\"Biliran\":\"PH-BIL\",\"Bohol\":\"PH-BOH\",\"Bukidnon\":\"PH-BUK\",\"Bulacan\":\"PH-BUL\",\"Cagayan\":\"PH-CAG\",\"Camarines Norte\":\"PH-CAN\",\"Camarines Sur\":\"PH-CAS\",\"Camiguin\":\"PH-CAM\",\"Capiz\":\"PH-CAP\",\"Catanduanes\":\"PH-CAT\",\"Cavite\":\"PH-CAV\",\"Cebu\":\"PH-CEB\",\"Cotabato\":\"PH-NCO\",\"Davao Oriental\":\"PH-DAO\",\"Davao de Oro\":\"PH-COM\",\"Davao del Norte\":\"PH-DAV\",\"Davao del Sur\":\"PH-DAS\",\"Dinagat Islands\":\"PH-DIN\",\"Eastern Samar\":\"PH-EAS\",\"Guimaras\":\"PH-GUI\",\"Ifugao\":\"PH-IFU\",\"Ilocos Norte\":\"PH-ILN\",\"Ilocos Sur\":\"PH-ILS\",\"Iloilo\":\"PH-ILI\",\"Isabela\":\"PH-ISA\",\"Kalinga\":\"PH-KAL\",\"La Union\":\"PH-LUN\",\"Laguna\":\"PH-LAG\",\"Lanao del Norte\":\"PH-LAN\",\"Lanao del Sur\":\"PH-LAS\",\"Leyte\":\"PH-LEY\",\"Maguindanao\":\"PH-MAG\",\"Marinduque\":\"PH-MAD\",\"Masbate\":\"PH-MAS\",\"Mindoro Occidental\":\"PH-MDC\",\"Mindoro Oriental\":\"PH-MDR\",\"Misamis Occidental\":\"PH-MSC\",\"Misamis Oriental\":\"PH-MSR\",\"Mountain Province\":\"PH-MOU\",\"National Capital Region\":\"PH-00\",\"Negros Occidental\":\"PH-NEC\",\"Negros Oriental\":\"PH-NER\",\"Northern Samar\":\"PH-NSA\",\"Nueva Ecija\":\"PH-NUE\",\"Nueva Vizcaya\":\"PH-NUV\",\"Palawan\":\"PH-PLW\",\"Pampanga\":\"PH-PAM\",\"Pangasinan\":\"PH-PAN\",\"Quezon\":\"PH-QUE\",\"Quirino\":\"PH-QUI\",\"Rizal\":\"PH-RIZ\",\"Romblon\":\"PH-ROM\",\"Samar\":\"PH-WSA\",\"Sarangani\":\"PH-SAR\",\"Siquijor\":\"PH-SIG\",\"Sorsogon\":\"PH-SOR\",\"South Cotabato\":\"PH-SCO\",\"Southern Leyte\":\"PH-SLE\",\"Sultan Kudarat\":\"PH-SUK\",\"Sulu\":\"PH-SLU\",\"Surigao del Norte\":\"PH-SUN\",\"Surigao del Sur\":\"PH-SUR\",\"Tarlac\":\"PH-TAR\",\"Tawi-Tawi\":\"PH-TAW\",\"Zambales\":\"PH-ZMB\",\"Zamboanga Sibugay\":\"PH-ZSI\",\"Zamboanga del Norte\":\"PH-ZAN\",\"Zamboanga del Sur\":\"PH-ZAS\"},\"PK\":{\"Azad Jammu and Kashmir\":\"PK-JK\",\"Balochistan\":\"PK-BA\",\"Gilgit-Baltistan\":\"PK-GB\",\"Islamabad\":\"PK-IS\",\"Khyber Pakhtunkhwa\":\"PK-KP\",\"Punjab\":\"PK-PB\",\"Sindh\":\"PK-SD\"},\"PL\":{\"Dolnoslaskie\":\"PL-02\",\"Kujawsko-pomorskie\":\"PL-04\",\"Lodzkie\":\"PL-10\",\"Lubelskie\":\"PL-06\",\"Lubuskie\":\"PL-08\",\"Malopolskie\":\"PL-12\",\"Mazowieckie\":\"PL-14\",\"Opolskie\":\"PL-16\",\"Podkarpackie\":\"PL-18\",\"Podlaskie\":\"PL-20\",\"Pomorskie\":\"PL-22\",\"Slaskie\":\"PL-24\",\"Swietokrzyskie\":\"PL-26\",\"Warminsko-mazurskie\":\"PL-28\",\"Wielkopolskie\":\"PL-30\",\"Zachodniopomorskie\":\"PL-32\"},\"PM\":{\"Saint Pierre and Miquelon\":\"\"},\"PN\":{\"Pitcairn\":\"\"}};\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n tempObj.serverId = countryCodeMap[tempObj.country];\r\n\r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.province){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.province];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (536, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsCountryTcpSessionDelay', '/application/performance/overview/drilldown/dimension/clientLocations/country/tcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_province IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND client_country = \'${parameter.country}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (537, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsCountryHttpResponseDelay', '/application/performance/overview/drilldown/dimension/clientLocations/country/httpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND client_province IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND client_country = \'${parameter.country}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (538, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsCountrySslConDelay', '/application/performance/overview/drilldown/dimension/clientLocations/country/sslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND client_province IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND client_country = \'${parameter.country}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (539, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsCountryTcpLostlenPercent', '/application/performance/overview/drilldown/dimension/clientLocations/country/tcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, province AS province, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM session_record_cn WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) AND country = \'${parameter.country}\' AND province IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND side = \'client\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province ORDER BY tcp_lostlen_percent DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (540, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsCountryPacketRetransPercent', '/application/performance/overview/drilldown/dimension/clientLocations/country/packetRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, province AS province, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_ratio FROM session_record_cn WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) AND country = \'${parameter.country}\' AND province IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND side = \'client\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province ORDER BY pkt_retrans_ratio DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (541, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsProvinceTrafficAnalysis', '/application/performance/overview/drilldown/dimension/clientLocations/province/trafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, client_region AS city, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS total_packets, SUM(common_sessions) AS sessions, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS through_bytes, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS through_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(client_region) AND client_country = \'${parameter.country}\' AND client_province = \'${parameter.province}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,city,client_zone,server_zone <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'var countryCodeMap = {\"Private IP\":\"CN\",\"Afghanistan\":\"AF\",\"Albania\":\"AL\",\"Algeria\":\"DZ\",\"American Samoa\":\"AS\",\"Andorra\":\"AD\",\"Angola\":\"AO\",\"Anguilla\":\"AI\",\"Antarctica\":\"AQ\",\"Antigua and Barbuda\":\"AG\",\"Argentina\":\"AR\",\"Armenia\":\"AM\",\"Aruba\":\"AW\",\"Australia\":\"AU\",\"Austria\":\"AT\",\"Azerbaijan\":\"AZ\",\"Bahamas (the)\":\"BS\",\"Bahrain\":\"BH\",\"Bangladesh\":\"BD\",\"Barbados\":\"BB\",\"Belarus\":\"BY\",\"Belgium\":\"BE\",\"Belize\":\"BZ\",\"Benin\":\"BJ\",\"Bermuda\":\"BM\",\"Åland Islands\":\"AX\",\"Bhutan\":\"BT\",\"Bolivia (Plurinational State of)\":\"BO\",\"Bonaire, Sint Eustatius and Saba\":\"BQ\",\"Bosnia and Herzegovina\":\"BA\",\"Botswana\":\"BW\",\"Bouvet Island\":\"BV\",\"Brazil\":\"BR\",\"British Indian Ocean Territory (the)\":\"IO\",\"Brunei Darussalam\":\"BN\",\"Bulgaria\":\"BG\",\"Burkina Faso\":\"BF\",\"Burundi\":\"BI\",\"Cabo Verde\":\"CV\",\"Cambodia\":\"KH\",\"Cameroon\":\"CM\",\"Canada\":\"CA\",\"Cayman Islands (the)\":\"KY\",\"Central African Republic (the)\":\"CF\",\"Chad\":\"TD\",\"Chile\":\"CL\",\"China\":\"CN\",\"Christmas Island\":\"CX\",\"Cocos (Keeling) Islands (the)\":\"CC\",\"Colombia\":\"CO\",\"Comoros (the)\":\"KM\",\"Congo (the Democratic Republic of the)\":\"CD\",\"Congo (the)\":\"CG\",\"Cook Islands (the)\":\"CK\",\"Costa Rica\":\"CR\",\"Croatia\":\"HR\",\"Cuba\":\"CU\",\"Curaçao\":\"CW\",\"Cyprus\":\"CY\",\"Czech Republic\":\"CZ\",\"Côte d\'Ivoire\":\"CI\",\"Denmark\":\"DK\",\"Djibouti\":\"DJ\",\"Dominica\":\"DM\",\"Dominican Republic (the)\":\"DO\",\"Ecuador\":\"EC\",\"Egypt\":\"EG\",\"El Salvador\":\"SV\",\"Equatorial Guinea\":\"GQ\",\"Eritrea\":\"ER\",\"Estonia\":\"EE\",\"Eswatini\":\"SZ\",\"Ethiopia\":\"ET\",\"Falkland Islands (the) [Malvinas]\":\"FK\",\"Faroe Islands (the)\":\"FO\",\"Fiji\":\"FJ\",\"Finland\":\"FI\",\"France\":\"FR\",\"French Guiana\":\"GF\",\"French Polynesia\":\"PF\",\"French Southern Territories (the)\":\"TF\",\"Gabon\":\"GA\",\"Gambia (the)\":\"GM\",\"Georgia\":\"GE\",\"Germany\":\"DE\",\"Ghana\":\"GH\",\"Gibraltar\":\"GI\",\"Greece\":\"GR\",\"Greenland\":\"GL\",\"Grenada\":\"GD\",\"Guadeloupe\":\"GP\",\"Guam\":\"GU\",\"Guatemala\":\"GT\",\"Guernsey\":\"GG\",\"Guinea\":\"GN\",\"Guinea-Bissau\":\"GW\",\"Guyana\":\"GY\",\"Haiti\":\"HT\",\"Heard Island and McDonald Islands\":\"HM\",\"Holy See (the)\":\"VA\",\"Honduras\":\"HN\",\"Hong Kong\":\"HK\",\"Hungary\":\"HU\",\"Iceland\":\"IS\",\"India\":\"IN\",\"Indonesia\":\"ID\",\"Iran (Islamic Republic of)\":\"IR\",\"Iraq\":\"IQ\",\"Ireland\":\"IE\",\"Isle of Man\":\"IM\",\"Israel\":\"IL\",\"Italy\":\"IT\",\"Jamaica\":\"JM\",\"Japan\":\"JP\",\"Jersey\":\"JE\",\"Jordan\":\"JO\",\"Kazakhstan\":\"KZ\",\"Kenya\":\"KE\",\"Kiribati\":\"KI\",\"Korea\":\"KR\",\"Kuwait\":\"KW\",\"Kyrgyzstan\":\"KG\",\"Lao People\'s Democratic Republic (the)\":\"LA\",\"Latvia\":\"LV\",\"Lebanon\":\"LB\",\"Lesotho\":\"LS\",\"Liberia\":\"LR\",\"Libya\":\"LY\",\"Liechtenstein\":\"LI\",\"Lithuania\":\"LT\",\"Luxembourg\":\"LU\",\"Macao\":\"MO\",\"Madagascar\":\"MG\",\"Malawi\":\"MW\",\"Malaysia\":\"MY\",\"Maldives\":\"MV\",\"Mali\":\"ML\",\"Malta\":\"MT\",\"Marshall Islands (the)\":\"MH\",\"Martinique\":\"MQ\",\"Mauritania\":\"MR\",\"Mauritius\":\"MU\",\"Mayotte\":\"YT\",\"Mexico\":\"MX\",\"Micronesia (Federated States of)\":\"FM\",\"Moldova (the Republic of)\":\"MD\",\"Monaco\":\"MC\",\"Mongolia\":\"MN\",\"Montenegro\":\"ME\",\"Montserrat\":\"MS\",\"Morocco\":\"MA\",\"Mozambique\":\"MZ\",\"Myanmar\":\"MM\",\"Namibia\":\"NA\",\"Nauru\":\"NR\",\"Nepal\":\"NP\",\"Netherlands\":\"NL\",\"New Caledonia\":\"NC\",\"New Zealand\":\"NZ\",\"Nicaragua\":\"NI\",\"Niger\":\"NE\",\"Nigeria\":\"NG\",\"Niue\":\"NU\",\"Norfolk Island\":\"NF\",\"North Macedonia\":\"MK\",\"Northern Mariana Islands (the)\":\"MP\",\"Norway\":\"NO\",\"Oman\":\"OM\",\"Pakistan\":\"PK\",\"Palau\":\"PW\",\"Palestine, State of\":\"PS\",\"Panama\":\"PA\",\"Papua New Guinea\":\"PG\",\"Paraguay\":\"PY\",\"Peru\":\"PE\",\"Philippines\":\"PH\",\"Pitcairn\":\"PN\",\"Poland\":\"PL\",\"Portugal\":\"PT\",\"Puerto Rico\":\"PR\",\"Qatar\":\"QA\",\"Romania\":\"RO\",\"Russian Federation\":\"RU\",\"Rwanda\":\"RW\",\"Réunion\":\"RE\",\"Saint Barthélemy\":\"BL\",\"Saint Helena, Ascension and Tristan da Cunha\":\"SH\",\"Saint Kitts and Nevis\":\"KN\",\"Saint Lucia\":\"LC\",\"Saint Martin\":\"MF\",\"Saint Pierre and Miquelon\":\"PM\",\"Saint Vincent and the Grenadines\":\"VC\",\"Samoa\":\"WS\",\"San Marino\":\"SM\",\"Sao Tome and Principe\":\"ST\",\"Saudi Arabia\":\"SA\",\"Senegal\":\"SN\",\"Serbia\":\"RS\",\"Seychelles\":\"SC\",\"Sierra Leone\":\"SL\",\"Singapore\":\"SG\",\"Sint Maarten\":\"SX\",\"Slovakia\":\"SK\",\"Slovenia\":\"SI\",\"Solomon Islands\":\"SB\",\"Somalia\":\"SO\",\"South Africa\":\"ZA\",\"South Georgia and the South Sandwich Islands\":\"GS\",\"South Sudan\":\"SS\",\"Spain\":\"ES\",\"Sri Lanka\":\"LK\",\"Sudan\":\"SD\",\"Suriname\":\"SR\",\"Svalbard and Jan Mayen\":\"SJ\",\"Sweden\":\"SE\",\"Switzerland\":\"CH\",\"Syrian Arab Republic\":\"SY\",\"Taiwan\":\"TW\",\"Tajikistan\":\"TJ\",\"Tanzania, the United Republic of\":\"TZ\",\"Thailand\":\"TH\",\"Timor-Leste\":\"TL\",\"Togo\":\"TG\",\"Tokelau\":\"TK\",\"Tonga\":\"TO\",\"Trinidad and Tobago\":\"TT\",\"Tunisia\":\"TN\",\"Turkey\":\"TR\",\"Turkmenistan\":\"TM\",\"Turks and Caicos Islands\":\"TC\",\"Tuvalu\":\"TV\",\"Uganda\":\"UG\",\"Ukraine\":\"UA\",\"United Arab Emirates\":\"AE\",\"United Kingdom of Great Britain and Northern Ireland\":\"GB\",\"United States Minor Outlying Islands\":\"UM\",\"United States\":\"US\",\"Uruguay\":\"UY\",\"Uzbekistan\":\"UZ\",\"Vanuatu\":\"VU\",\"Venezuela (Bolivarian Republic of)\":\"VE\",\"Viet Nam\":\"VN\",\"Virgin Islands (British)\":\"VG\",\"Virgin Islands (U.S.)\":\"VI\",\"Wallis and Futuna\":\"WF\",\"Western Sahara*\":\"EH\",\"Yemen\":\"YE\",\"Zambia\":\"ZM\",\"Zimbabwe\":\"ZW\"};\r\nvar countCityMap = {\"PR\":{\"Adjuntas\":\"\",\"Aguada\":\"\",\"Aguadilla\":\"\",\"Aguas Buenas\":\"\",\"Aibonito\":\"\",\"Anasco\":\"\",\"Arecibo\":\"\",\"Arroyo\":\"\",\"Barceloneta\":\"\",\"Barranquitas\":\"\",\"Bayamon\":\"\",\"Cabo Rojo\":\"\",\"Caguas\":\"\",\"Camuy\":\"\",\"Canovanas\":\"\",\"Carolina\":\"\",\"Catano\":\"\",\"Cayey\":\"\",\"Ceiba\":\"\",\"Ciales\":\"\",\"Cidra\":\"\",\"Coamo\":\"\",\"Comerio\":\"\",\"Corozal\":\"\",\"Culebra\":\"\",\"Dorado\":\"\",\"Fajardo\":\"\",\"Florida\":\"\",\"Guanica\":\"\",\"Guayama\":\"\",\"Guayanilla\":\"\",\"Guaynabo\":\"\",\"Gurabo\":\"\",\"Hatillo\":\"\",\"Hormigueros\":\"\",\"Humacao\":\"\",\"Isabela\":\"\",\"Juana Diaz\":\"\",\"Lajas\":\"\",\"Lares\":\"\",\"Las Marias\":\"\",\"Las Piedras\":\"\",\"Loiza\":\"\",\"Luquillo\":\"\",\"Manati\":\"\",\"Mayaguez\":\"\",\"Moca\":\"\",\"Morovis\":\"\",\"Municipio de Jayuya\":\"\",\"Municipio de Juncos\":\"\",\"Naguabo\":\"\",\"Naranjito\":\"\",\"Patillas\":\"\",\"Penuelas\":\"\",\"Ponce\":\"\",\"Quebradillas\":\"\",\"Rincon\":\"\",\"Rio Grande\":\"\",\"Sabana Grande\":\"\",\"Salinas\":\"\",\"San German\":\"\",\"San Juan\":\"\",\"San Lorenzo\":\"\",\"San Sebastian\":\"\",\"Santa Isabel Municipio\":\"\",\"Toa Alta\":\"\",\"Toa Baja\":\"\",\"Trujillo Alto\":\"\",\"Utuado\":\"\",\"Vega Alta\":\"\",\"Vega Baja\":\"\",\"Vieques\":\"\",\"Villalba\":\"\",\"Yabucoa\":\"\",\"Yauco\":\"\"},\"PS\":{\"Bethlehem\":\"PS-BTH\",\"Deir El Balah\":\"PS-DEB\",\"Gaza\":\"PS-GZA\",\"Hebron\":\"PS-HBN\",\"Jenin\":\"PS-JEN\",\"Jericho and Al Aghwar\":\"PS-JRH\",\"Jerusalem\":\"PS-JEM\",\"Khan Yunis\":\"PS-KYS\",\"Nablus\":\"PS-NBS\",\"Qalqilya\":\"PS-QQA\",\"Rafah\":\"PS-RFH\",\"Ramallah\":\"PS-RBH\",\"Salfit\":\"PS-SLT\",\"Tubas\":\"PS-TBS\",\"Tulkarm\":\"PS-TKM\"},\"PT\":{\"Aveiro\":\"PT-01\",\"Beja\":\"PT-02\",\"Braga\":\"PT-03\",\"Braganca\":\"PT-04\",\"Castelo Branco\":\"PT-05\",\"Coimbra\":\"PT-06\",\"Evora\":\"PT-07\",\"Faro\":\"PT-08\",\"Guarda\":\"PT-09\",\"Leiria\":\"PT-10\",\"Lisboa\":\"PT-11\",\"Portalegre\":\"PT-12\",\"Porto\":\"PT-13\",\"Regiao Autonoma da Madeira\":\"PT-30\",\"Regiao Autonoma dos Acores\":\"PT-20\",\"Santarem\":\"PT-14\",\"Setubal\":\"PT-15\",\"Viana do Castelo\":\"PT-16\",\"Vila Real\":\"PT-17\",\"Viseu\":\"PT-18\"},\"PW\":{\"Airai\":\"PW-004\",\"Kayangel\":\"PW-100\",\"Koror\":\"PW-150\",\"Melekeok\":\"PW-212\",\"Ngaraard\":\"PW-214\",\"Ngardmau\":\"PW-222\"},\"PY\":{\"Alto Parana\":\"PY-10\",\"Amambay\":\"PY-13\",\"Asuncion\":\"PY-ASU\",\"Boqueron\":\"PY-19\",\"Caaguazu\":\"PY-5\",\"Caazapa\":\"PY-6\",\"Canindeyu\":\"PY-14\",\"Central\":\"PY-11\",\"Concepcion\":\"PY-1\",\"Cordillera\":\"PY-3\",\"Guaira\":\"PY-4\",\"Itapua\":\"PY-7\",\"Misiones\":\"PY-8\",\"Neembucu\":\"PY-12\",\"Paraguari\":\"PY-9\",\"Presidente Hayes\":\"PY-15\",\"San Pedro\":\"PY-2\"},\"QA\":{\"Ad Dawhah\":\"QA-DA\",\"Al Khawr wa adh Dhakhirah\":\"QA-KH\",\"Al Wakrah\":\"QA-WA\",\"Ar Rayyan\":\"QA-RA\",\"Ash Shamal\":\"QA-MS\",\"Az Za\'ayin\":\"QA-ZA\",\"Umm Salal\":\"QA-US\"},\"AD\":{\"Andorra la Vella\":\"AD-07\",\"Canillo\":\"AD-02\",\"Encamp\":\"AD-03\",\"Escaldes-Engordany\":\"AD-08\",\"La Massana\":\"AD-04\",\"Ordino\":\"AD-05\",\"Sant Julia de Loria\":\"AD-06\"},\"AE\":{\"\'Ajman\":\"AE-AJ\",\"Abu Zaby\":\"AE-AZ\",\"Al Fujayrah\":\"AE-FU\",\"Ash Shariqah\":\"AE-SH\",\"Dubayy\":\"AE-DU\",\"Ra\'s al Khaymah\":\"AE-RK\",\"Umm al Qaywayn\":\"AE-UQ\"},\"AF\":{\"Badakhshan\":\"AF-BDS\",\"Badghis\":\"AF-BDG\",\"Baghlan\":\"AF-BGL\",\"Balkh\":\"AF-BAL\",\"Bamyan\":\"AF-BAM\",\"Daykundi\":\"AF-DAY\",\"Farah\":\"AF-FRA\",\"Faryab\":\"AF-FYB\",\"Ghazni\":\"AF-GHA\",\"Ghor\":\"AF-GHO\",\"Helmand\":\"AF-HEL\",\"Herat\":\"AF-HER\",\"Jowzjan\":\"AF-JOW\",\"Kabul\":\"AF-KAB\",\"Kandahar\":\"AF-KAN\",\"Khost\":\"AF-KHO\",\"Kunduz\":\"AF-KDZ\",\"Laghman\":\"AF-LAG\",\"Logar\":\"AF-LOG\",\"Nangarhar\":\"AF-NAN\",\"Nimroz\":\"AF-NIM\",\"Paktika\":\"AF-PKA\",\"Paktiya\":\"AF-PIA\",\"Parwan\":\"AF-PAR\",\"Takhar\":\"AF-TAK\",\"Uruzgan\":\"AF-URU\"},\"AG\":{\"Redonda\":\"AG-11\",\"Saint George\":\"AG-03\",\"Saint John\":\"AG-04\",\"Saint Mary\":\"AG-05\",\"Saint Paul\":\"AG-06\",\"Saint Peter\":\"AG-07\",\"Saint Philip\":\"AG-08\"},\"AI\":{\"Anguilla\":\"\"},\"AL\":{\"Berat\":\"AL-01\",\"Diber\":\"AL-09\",\"Durres\":\"AL-02\",\"Elbasan\":\"AL-03\",\"Fier\":\"AL-04\",\"Gjirokaster\":\"AL-05\",\"Korce\":\"AL-06\",\"Kukes\":\"AL-07\",\"Lezhe\":\"AL-08\",\"Shkoder\":\"AL-10\",\"Tirane\":\"AL-11\",\"Vlore\":\"AL-12\"},\"AM\":{\"Aragacotn\":\"AM-AG\",\"Ararat\":\"AM-AR\",\"Armavir\":\"AM-AV\",\"Erevan\":\"AM-ER\",\"Gegark\'unik\'\":\"AM-GR\",\"Kotayk\'\":\"AM-KT\",\"Lori\":\"AM-LO\",\"Sirak\":\"AM-SH\",\"Syunik\'\":\"AM-SU\",\"Tavus\":\"AM-TV\",\"Vayoc Jor\":\"AM-VD\"},\"AO\":{\"Bengo\":\"AO-BGO\",\"Benguela\":\"AO-BGU\",\"Bie\":\"AO-BIE\",\"Cabinda\":\"AO-CAB\",\"Cuando Cubango\":\"AO-CCU\",\"Cuanza-Norte\":\"AO-CNO\",\"Cuanza-Sul\":\"AO-CUS\",\"Cunene\":\"AO-CNN\",\"Huambo\":\"AO-HUA\",\"Huila\":\"AO-HUI\",\"Luanda\":\"AO-LUA\",\"Lunda-Norte\":\"AO-LNO\",\"Lunda-Sul\":\"AO-LSU\",\"Malange\":\"AO-MAL\",\"Moxico\":\"AO-MOX\",\"Namibe\":\"AO-NAM\",\"Uige\":\"AO-UIG\",\"Zaire\":\"AO-ZAI\"},\"AR\":{\"Buenos Aires\":\"AR-B\",\"Catamarca\":\"AR-K\",\"Chaco\":\"AR-H\",\"Chubut\":\"AR-U\",\"Ciudad Autonoma de Buenos Aires\":\"AR-C\",\"Cordoba\":\"AR-X\",\"Corrientes\":\"AR-W\",\"Entre Rios\":\"AR-E\",\"Formosa\":\"AR-P\",\"Jujuy\":\"AR-Y\",\"La Pampa\":\"AR-L\",\"La Rioja\":\"AR-F\",\"Mendoza\":\"AR-M\",\"Misiones\":\"AR-N\",\"Neuquen\":\"AR-Q\",\"Rio Negro\":\"AR-R\",\"Salta\":\"AR-A\",\"San Juan\":\"AR-J\",\"San Luis\":\"AR-D\",\"Santa Cruz\":\"AR-Z\",\"Santa Fe\":\"AR-S\",\"Santiago del Estero\":\"AR-G\",\"Tierra del Fuego\":\"AR-V\",\"Tucuman\":\"AR-T\"},\"AS\":{\"Eastern District\":\"\",\"Western District\":\"\"},\"RE\":{\"Reunion\":\"\"},\"AT\":{\"Burgenland\":\"AT-1\",\"Karnten\":\"AT-2\",\"Niederosterreich\":\"AT-3\",\"Oberosterreich\":\"AT-4\",\"Salzburg\":\"AT-5\",\"Steiermark\":\"AT-6\",\"Tirol\":\"AT-7\",\"Vorarlberg\":\"AT-8\",\"Wien\":\"AT-9\"},\"AU\":{\"Australian Capital Territory\":\"AU-ACT\",\"New South Wales\":\"AU-NSW\",\"Northern Territory\":\"AU-NT\",\"Queensland\":\"AU-QLD\",\"South Australia\":\"AU-SA\",\"Tasmania\":\"AU-TAS\",\"Victoria\":\"AU-VIC\",\"Western Australia\":\"AU-WA\"},\"AW\":{\"Aruba\":\"\"},\"AX\":{\"Eckeroe\":\"\",\"Finstroem\":\"\",\"Hammarland\":\"\",\"Jomala\":\"\",\"Lemland\":\"\",\"Mariehamn\":\"\",\"Saltvik\":\"\",\"Sund\":\"\"},\"AZ\":{\"Abseron\":\"AZ-ABS\",\"Agcabadi\":\"AZ-AGC\",\"Agdas\":\"AZ-AGS\",\"Astara\":\"AZ-AST\",\"Baki\":\"AZ-BA\",\"Balakan\":\"AZ-BAL\",\"Barda\":\"AZ-BAR\",\"Beylaqan\":\"AZ-BEY\",\"Bilasuvar\":\"AZ-BIL\",\"Calilabad\":\"AZ-CAL\",\"Fuzuli\":\"AZ-FUZ\",\"Gadabay\":\"AZ-GAD\",\"Ganca\":\"AZ-GA\",\"Goranboy\":\"AZ-GOR\",\"Goycay\":\"AZ-GOY\",\"Goygol\":\"AZ-GYG\",\"Imisli\":\"AZ-IMI\",\"Ismayilli\":\"AZ-ISM\",\"Kurdamir\":\"AZ-KUR\",\"Lankaran\":\"AZ-LA\",\"Masalli\":\"AZ-MAS\",\"Mingacevir\":\"AZ-MI\",\"Naxcivan\":\"AZ-NX\",\"Neftcala\":\"AZ-NEF\",\"Oguz\":\"AZ-OGU\",\"Qabala\":\"AZ-QAB\",\"Qax\":\"AZ-QAX\",\"Quba\":\"AZ-QBA\",\"Qusar\":\"AZ-QUS\",\"Saatli\":\"AZ-SAT\",\"Sabirabad\":\"AZ-SAB\",\"Saki\":\"AZ-SAK\",\"Salyan\":\"AZ-SAL\",\"Samaxi\":\"AZ-SMI\",\"Samkir\":\"AZ-SKR\",\"Samux\":\"AZ-SMX\",\"Sirvan\":\"AZ-SR\",\"Siyazan\":\"AZ-SIY\",\"Sumqayit\":\"AZ-SM\",\"Tartar\":\"AZ-TAR\",\"Xacmaz\":\"AZ-XAC\",\"Xizi\":\"AZ-XIZ\",\"Yardimli\":\"AZ-YAR\",\"Yevlax\":\"AZ-YEV\",\"Zaqatala\":\"AZ-ZAQ\",\"Zardab\":\"AZ-ZAR\"},\"RO\":{\"Alba\":\"RO-AB\",\"Arad\":\"RO-AR\",\"Arges\":\"RO-AG\",\"Bacau\":\"RO-BC\",\"Bihor\":\"RO-BH\",\"Bistrita-Nasaud\":\"RO-BN\",\"Botosani\":\"RO-BT\",\"Braila\":\"RO-BR\",\"Brasov\":\"RO-BV\",\"Bucuresti\":\"RO-B\",\"Buzau\":\"RO-BZ\",\"Calarasi\":\"RO-CL\",\"Caras-Severin\":\"RO-CS\",\"Cluj\":\"RO-CJ\",\"Constanta\":\"RO-CT\",\"Covasna\":\"RO-CV\",\"Dambovita\":\"RO-DB\",\"Dolj\":\"RO-DJ\",\"Galati\":\"RO-GL\",\"Giurgiu\":\"RO-GR\",\"Gorj\":\"RO-GJ\",\"Harghita\":\"RO-HR\",\"Hunedoara\":\"RO-HD\",\"Ialomita\":\"RO-IL\",\"Iasi\":\"RO-IS\",\"Ilfov\":\"RO-IF\",\"Maramures\":\"RO-MM\",\"Mehedinti\":\"RO-MH\",\"Mures\":\"RO-MS\",\"Neamt\":\"RO-NT\",\"Olt\":\"RO-OT\",\"Prahova\":\"RO-PH\",\"Salaj\":\"RO-SJ\",\"Satu Mare\":\"RO-SM\",\"Sibiu\":\"RO-SB\",\"Suceava\":\"RO-SV\",\"Teleorman\":\"RO-TR\",\"Timis\":\"RO-TM\",\"Tulcea\":\"RO-TL\",\"Valcea\":\"RO-VL\",\"Vaslui\":\"RO-VS\",\"Vrancea\":\"RO-VN\"},\"BA\":{\"Brcko distrikt\":\"BA-BRC\",\"Federacija Bosne i Hercegovine\":\"BA-BIH\",\"Republika Srpska\":\"BA-SRP\"},\"BB\":{\"Christ Church\":\"BB-01\",\"Saint Andrew\":\"BB-02\",\"Saint George\":\"BB-03\",\"Saint James\":\"BB-04\",\"Saint John\":\"BB-05\",\"Saint Lucy\":\"BB-07\",\"Saint Michael\":\"BB-08\",\"Saint Peter\":\"BB-09\",\"Saint Philip\":\"BB-10\",\"Saint Thomas\":\"BB-11\"},\"RS\":{\"Beograd\":\"RS-00\",\"Borski okrug\":\"RS-14\",\"Branicevski okrug\":\"RS-11\",\"Jablanicki okrug\":\"RS-23\",\"Juznobacki okrug\":\"RS-06\",\"Juznobanatski okrug\":\"RS-04\",\"Kolubarski okrug\":\"RS-09\",\"Kosovsko-Mitrovacki okrug\":\"RS-28\",\"Macvanski okrug\":\"RS-08\",\"Moravicki okrug\":\"RS-17\",\"Nisavski okrug\":\"RS-20\",\"Pcinjski okrug\":\"RS-24\",\"Pecki okrug\":\"RS-26\",\"Pirotski okrug\":\"RS-22\",\"Podunavski okrug\":\"RS-10\",\"Pomoravski okrug\":\"RS-13\",\"Prizrenski okrug\":\"RS-27\",\"Rasinski okrug\":\"RS-19\",\"Raski okrug\":\"RS-18\",\"Severnobacki okrug\":\"RS-01\",\"Severnobanatski okrug\":\"RS-03\",\"Srednjebanatski okrug\":\"RS-02\",\"Sremski okrug\":\"RS-07\",\"Sumadijski okrug\":\"RS-12\",\"Toplicki okrug\":\"RS-21\",\"Zajecarski okrug\":\"RS-15\",\"Zapadnobacki okrug\":\"RS-05\",\"Zlatiborski okrug\":\"RS-16\"},\"BD\":{\"Barishal\":\"BD-A\",\"Chattogram\":\"BD-B\",\"Dhaka\":\"BD-C\",\"Khulna\":\"BD-D\",\"Rajshahi\":\"BD-E\",\"Rangpur\":\"BD-F\",\"Sylhet\":\"BD-G\"},\"RU\":{\"Adygeya, Respublika\":\"RU-AD\",\"Altay, Respublika\":\"RU-AL\",\"Altayskiy kray\":\"RU-ALT\",\"Amurskaya oblast\'\":\"RU-AMU\",\"Arkhangel\'skaya oblast\'\":\"RU-ARK\",\"Astrakhanskaya oblast\'\":\"RU-AST\",\"Bashkortostan, Respublika\":\"RU-BA\",\"Belgorodskaya oblast\'\":\"RU-BEL\",\"Bryanskaya oblast\'\":\"RU-BRY\",\"Buryatiya, Respublika\":\"RU-BU\",\"Chechenskaya Respublika\":\"RU-CE\",\"Chelyabinskaya oblast\'\":\"RU-CHE\",\"Chukotskiy avtonomnyy okrug\":\"RU-CHU\",\"Chuvashskaya Respublika\":\"RU-CU\",\"Dagestan, Respublika\":\"RU-DA\",\"Ingushetiya, Respublika\":\"RU-IN\",\"Irkutskaya oblast\'\":\"RU-IRK\",\"Ivanovskaya oblast\'\":\"RU-IVA\",\"Kabardino-Balkarskaya Respublika\":\"RU-KB\",\"Kaliningradskaya oblast\'\":\"RU-KGD\",\"Kalmykiya, Respublika\":\"RU-KL\",\"Kaluzhskaya oblast\'\":\"RU-KLU\",\"Kamchatskiy kray\":\"RU-KAM\",\"Karachayevo-Cherkesskaya Respublika\":\"RU-KC\",\"Kareliya, Respublika\":\"RU-KR\",\"Kemerovskaya oblast\'\":\"RU-KEM\",\"Khabarovskiy kray\":\"RU-KHA\",\"Khakasiya, Respublika\":\"RU-KK\",\"Khanty-Mansiyskiy avtonomnyy okrug\":\"RU-KHM\",\"Kirovskaya oblast\'\":\"RU-KIR\",\"Komi, Respublika\":\"RU-KO\",\"Kostromskaya oblast\'\":\"RU-KOS\",\"Krasnodarskiy kray\":\"RU-KDA\",\"Krasnoyarskiy kray\":\"RU-KYA\",\"Kurganskaya oblast\'\":\"RU-KGN\",\"Kurskaya oblast\'\":\"RU-KRS\",\"Leningradskaya oblast\'\":\"RU-LEN\",\"Lipetskaya oblast\'\":\"RU-LIP\",\"Magadanskaya oblast\'\":\"RU-MAG\",\"Mariy El, Respublika\":\"RU-ME\",\"Mordoviya, Respublika\":\"RU-MO\",\"Moskovskaya oblast\'\":\"RU-MOS\",\"Moskva\":\"RU-MOW\",\"Murmanskaya oblast\'\":\"RU-MUR\",\"Nenetskiy avtonomnyy okrug\":\"RU-NEN\",\"Nizhegorodskaya oblast\'\":\"RU-NIZ\",\"Novgorodskaya oblast\'\":\"RU-NGR\",\"Novosibirskaya oblast\'\":\"RU-NVS\",\"Omskaya oblast\'\":\"RU-OMS\",\"Orenburgskaya oblast\'\":\"RU-ORE\",\"Orlovskaya oblast\'\":\"RU-ORL\",\"Penzenskaya oblast\'\":\"RU-PNZ\",\"Permskiy kray\":\"RU-PER\",\"Primorskiy kray\":\"RU-PRI\",\"Pskovskaya oblast\'\":\"RU-PSK\",\"Rostovskaya oblast\'\":\"RU-ROS\",\"Ryazanskaya oblast\'\":\"RU-RYA\",\"Saha, Respublika\":\"RU-SA\",\"Sakhalinskaya oblast\'\":\"RU-SAK\",\"Samarskaya oblast\'\":\"RU-SAM\",\"Sankt-Peterburg\":\"RU-SPE\",\"Saratovskaya oblast\'\":\"RU-SAR\",\"Severnaya Osetiya, Respublika\":\"RU-SE\",\"Smolenskaya oblast\'\":\"RU-SMO\",\"Stavropol\'skiy kray\":\"RU-STA\",\"Sverdlovskaya oblast\'\":\"RU-SVE\",\"Tambovskaya oblast\'\":\"RU-TAM\",\"Tatarstan, Respublika\":\"RU-TA\",\"Tomskaya oblast\'\":\"RU-TOM\",\"Tul\'skaya oblast\'\":\"RU-TUL\",\"Tverskaya oblast\'\":\"RU-TVE\",\"Tyumenskaya oblast\'\":\"RU-TYU\",\"Tyva, Respublika\":\"RU-TY\",\"Udmurtskaya Respublika\":\"RU-UD\",\"Ul\'yanovskaya oblast\'\":\"RU-ULY\",\"Vladimirskaya oblast\'\":\"RU-VLA\",\"Volgogradskaya oblast\'\":\"RU-VGG\",\"Vologodskaya oblast\'\":\"RU-VLG\",\"Voronezhskaya oblast\'\":\"RU-VOR\",\"Yamalo-Nenetskiy avtonomnyy okrug\":\"RU-YAN\",\"Yaroslavskaya oblast\'\":\"RU-YAR\",\"Yevreyskaya avtonomnaya oblast\'\":\"RU-YEV\",\"Zabaykal\'skiy kray\":\"RU-ZAB\"},\"BE\":{\"Antwerpen\":\"BE-VAN\",\"Brabant wallon\":\"BE-WBR\",\"Brussels Hoofdstedelijk Gewest\":\"BE-BRU\",\"Hainaut\":\"BE-WHT\",\"Liege\":\"BE-WLG\",\"Limburg\":\"BE-VLI\",\"Luxembourg\":\"BE-WLX\",\"Namur\":\"BE-WNA\",\"Oost-Vlaanderen\":\"BE-VOV\",\"Vlaams-Brabant\":\"BE-VBR\",\"West-Vlaanderen\":\"BE-VWV\"},\"BF\":{\"Bam\":\"BF-BAM\",\"Bazega\":\"BF-BAZ\",\"Boulgou\":\"BF-BLG\",\"Boulkiemde\":\"BF-BLK\",\"Ganzourgou\":\"BF-GAN\",\"Gnagna\":\"BF-GNA\",\"Gourma\":\"BF-GOU\",\"Houet\":\"BF-HOU\",\"Kadiogo\":\"BF-KAD\",\"Komondjari\":\"BF-KMD\",\"Kompienga\":\"BF-KMP\",\"Koulpelogo\":\"BF-KOP\",\"Kouritenga\":\"BF-KOT\",\"Kourweogo\":\"BF-KOW\",\"Leraba\":\"BF-LER\",\"Loroum\":\"BF-LOR\",\"Nahouri\":\"BF-NAO\",\"Namentenga\":\"BF-NAM\",\"Nayala\":\"BF-NAY\",\"Oubritenga\":\"BF-OUB\",\"Oudalan\":\"BF-OUD\",\"Passore\":\"BF-PAS\",\"Poni\":\"BF-PON\",\"Sanmatenga\":\"BF-SMT\",\"Seno\":\"BF-SEN\",\"Sissili\":\"BF-SIS\",\"Soum\":\"BF-SOM\",\"Sourou\":\"BF-SOR\",\"Tapoa\":\"BF-TAP\",\"Tuy\":\"BF-TUI\",\"Yatenga\":\"BF-YAT\",\"Ziro\":\"BF-ZIR\",\"Zondoma\":\"BF-ZON\",\"Zoundweogo\":\"BF-ZOU\"},\"RW\":{\"Est\":\"RW-02\",\"Nord\":\"RW-03\",\"Ouest\":\"RW-04\",\"Sud\":\"RW-05\",\"Ville de Kigali\":\"RW-01\"},\"BG\":{\"Blagoevgrad\":\"BG-01\",\"Burgas\":\"BG-02\",\"Dobrich\":\"BG-08\",\"Gabrovo\":\"BG-07\",\"Haskovo\":\"BG-26\",\"Kardzhali\":\"BG-09\",\"Kyustendil\":\"BG-10\",\"Lovech\":\"BG-11\",\"Montana\":\"BG-12\",\"Pazardzhik\":\"BG-13\",\"Pernik\":\"BG-14\",\"Pleven\":\"BG-15\",\"Plovdiv\":\"BG-16\",\"Razgrad\":\"BG-17\",\"Ruse\":\"BG-18\",\"Shumen\":\"BG-27\",\"Silistra\":\"BG-19\",\"Sliven\":\"BG-20\",\"Smolyan\":\"BG-21\",\"Sofia\":\"BG-23\",\"Sofia (stolitsa)\":\"BG-22\",\"Stara Zagora\":\"BG-24\",\"Targovishte\":\"BG-25\",\"Varna\":\"BG-03\",\"Veliko Tarnovo\":\"BG-04\",\"Vidin\":\"BG-05\",\"Vratsa\":\"BG-06\",\"Yambol\":\"BG-28\"},\"BH\":{\"Al \'Asimah\":\"BH-13\",\"Al Janubiyah\":\"BH-14\",\"Al Muharraq\":\"BH-15\",\"Ash Shamaliyah\":\"BH-17\"},\"BI\":{\"Bujumbura Mairie\":\"BI-BM\",\"Cibitoke\":\"BI-CI\",\"Gitega\":\"BI-GI\",\"Kirundo\":\"BI-KI\",\"Mwaro\":\"BI-MW\",\"Ngozi\":\"BI-NG\",\"Rumonge\":\"BI-RM\",\"Rutana\":\"BI-RT\",\"Ruyigi\":\"BI-RY\"},\"BJ\":{\"Alibori\":\"BJ-AL\",\"Atacora\":\"BJ-AK\",\"Atlantique\":\"BJ-AQ\",\"Borgou\":\"BJ-BO\",\"Donga\":\"BJ-DO\",\"Littoral\":\"BJ-LI\",\"Mono\":\"BJ-MO\",\"Oueme\":\"BJ-OU\",\"Plateau\":\"BJ-PL\",\"Zou\":\"BJ-ZO\"},\"BL\":{\"Saint Barthelemy\":\"\"},\"BM\":{\"Hamilton\":\"\",\"Saint George\":\"\"},\"BN\":{\"Belait\":\"BN-BE\",\"Brunei-Muara\":\"BN-BM\",\"Temburong\":\"BN-TE\",\"Tutong\":\"BN-TU\"},\"BO\":{\"Chuquisaca\":\"BO-H\",\"Cochabamba\":\"BO-C\",\"El Beni\":\"BO-B\",\"La Paz\":\"BO-L\",\"Oruro\":\"BO-O\",\"Pando\":\"BO-N\",\"Potosi\":\"BO-P\",\"Santa Cruz\":\"BO-S\",\"Tarija\":\"BO-T\"},\"SA\":{\"\'Asir\":\"SA-14\",\"Al Bahah\":\"SA-11\",\"Al Hudud ash Shamaliyah\":\"SA-08\",\"Al Jawf\":\"SA-12\",\"Al Madinah al Munawwarah\":\"SA-03\",\"Al Qasim\":\"SA-05\",\"Ar Riyad\":\"SA-01\",\"Ash Sharqiyah\":\"SA-04\",\"Ha\'il\":\"SA-06\",\"Jazan\":\"SA-09\",\"Makkah al Mukarramah\":\"SA-02\",\"Najran\":\"SA-10\",\"Tabuk\":\"SA-07\"},\"SB\":{\"Choiseul\":\"SB-CH\",\"Guadalcanal\":\"SB-GU\",\"Western\":\"SB-WE\"},\"BQ\":{\"Bonaire\":\"BQ-BO\",\"Saba\":\"BQ-SA\",\"Sint Eustatius\":\"BQ-SE\"},\"SC\":{\"Anse Boileau\":\"SC-02\",\"Anse aux Pins\":\"SC-01\",\"Baie Lazare\":\"SC-06\",\"Baie Sainte Anne\":\"SC-07\",\"Beau Vallon\":\"SC-08\",\"Bel Ombre\":\"SC-10\",\"Cascade\":\"SC-11\",\"English River\":\"SC-16\",\"Grand Anse Mahe\":\"SC-13\",\"Grand Anse Praslin\":\"SC-14\",\"La Digue\":\"SC-15\",\"Pointe Larue\":\"SC-20\",\"Takamaka\":\"SC-23\"},\"BR\":{\"Acre\":\"BR-AC\",\"Alagoas\":\"BR-AL\",\"Amapa\":\"BR-AP\",\"Amazonas\":\"BR-AM\",\"Bahia\":\"BR-BA\",\"Ceara\":\"BR-CE\",\"Distrito Federal\":\"BR-DF\",\"Espirito Santo\":\"BR-ES\",\"Goias\":\"BR-GO\",\"Maranhao\":\"BR-MA\",\"Mato Grosso\":\"BR-MT\",\"Mato Grosso do Sul\":\"BR-MS\",\"Minas Gerais\":\"BR-MG\",\"Para\":\"BR-PA\",\"Paraiba\":\"BR-PB\",\"Parana\":\"BR-PR\",\"Pernambuco\":\"BR-PE\",\"Piaui\":\"BR-PI\",\"Rio Grande do Norte\":\"BR-RN\",\"Rio Grande do Sul\":\"BR-RS\",\"Rio de Janeiro\":\"BR-RJ\",\"Rondonia\":\"BR-RO\",\"Roraima\":\"BR-RR\",\"Santa Catarina\":\"BR-SC\",\"Sao Paulo\":\"BR-SP\",\"Sergipe\":\"BR-SE\",\"Tocantins\":\"BR-TO\"},\"SD\":{\"Blue Nile\":\"SD-NB\",\"Central Darfur\":\"SD-DC\",\"Gedaref\":\"SD-GD\",\"Gezira\":\"SD-GZ\",\"Kassala\":\"SD-KA\",\"Khartoum\":\"SD-KH\",\"North Darfur\":\"SD-DN\",\"North Kordofan\":\"SD-KN\",\"Northern\":\"SD-NO\",\"Red Sea\":\"SD-RS\",\"River Nile\":\"SD-NR\",\"Sennar\":\"SD-SI\",\"South Darfur\":\"SD-DS\",\"South Kordofan\":\"SD-KS\",\"West Darfur\":\"SD-DW\",\"West Kordofan\":\"SD-GK\",\"White Nile\":\"SD-NW\"},\"BS\":{\"Central Abaco\":\"BS-CO\",\"City of Freeport\":\"BS-FP\",\"Long Island\":\"BS-LI\",\"New Providence\":\"BS-NP\",\"North Abaco\":\"BS-NO\",\"North Andros\":\"BS-NS\",\"South Eleuthera\":\"BS-SE\"},\"SE\":{\"Blekinge lan\":\"SE-K\",\"Dalarnas lan\":\"SE-W\",\"Gavleborgs lan\":\"SE-X\",\"Gotlands lan\":\"SE-I\",\"Hallands lan\":\"SE-N\",\"Jamtlands lan\":\"SE-Z\",\"Jonkopings lan\":\"SE-F\",\"Kalmar lan\":\"SE-H\",\"Kronobergs lan\":\"SE-G\",\"Norrbottens lan\":\"SE-BD\",\"Orebro lan\":\"SE-T\",\"Ostergotlands lan\":\"SE-E\",\"Skane lan\":\"SE-M\",\"Sodermanlands lan\":\"SE-D\",\"Stockholms lan\":\"SE-AB\",\"Uppsala lan\":\"SE-C\",\"Varmlands lan\":\"SE-S\",\"Vasterbottens lan\":\"SE-AC\",\"Vasternorrlands lan\":\"SE-Y\",\"Vastmanlands lan\":\"SE-U\",\"Vastra Gotalands lan\":\"SE-O\"},\"BT\":{\"Bumthang\":\"BT-33\",\"Chhukha\":\"BT-12\",\"Gasa\":\"BT-GA\",\"Haa\":\"BT-13\",\"Lhuentse\":\"BT-44\",\"Monggar\":\"BT-42\",\"Paro\":\"BT-11\",\"Pema Gatshel\":\"BT-43\",\"Punakha\":\"BT-23\",\"Samdrup Jongkhar\":\"BT-45\",\"Samtse\":\"BT-14\",\"Thimphu\":\"BT-15\",\"Trashigang\":\"BT-41\",\"Trongsa\":\"BT-32\",\"Tsirang\":\"BT-21\",\"Wangdue Phodrang\":\"BT-24\"},\"SG\":{\"Singapore\":\"\"},\"BV\":{\"Bouvet Island\":\"\"},\"SH\":{\"Saint Helena\":\"SH-HL\"},\"BW\":{\"Central\":\"BW-CE\",\"Chobe\":\"BW-CH\",\"Kgalagadi\":\"BW-KG\",\"Kgatleng\":\"BW-KL\",\"Kweneng\":\"BW-KW\",\"North East\":\"BW-NE\",\"North West\":\"BW-NW\",\"South East\":\"BW-SE\",\"Southern\":\"BW-SO\"},\"SI\":{\"Ajdovscina\":\"SI-001\",\"Ankaran\":\"SI-213\",\"Apace\":\"SI-195\",\"Beltinci\":\"SI-002\",\"Benedikt\":\"SI-148\",\"Bistrica ob Sotli\":\"SI-149\",\"Bled\":\"SI-003\",\"Bloke\":\"SI-150\",\"Bohinj\":\"SI-004\",\"Borovnica\":\"SI-005\",\"Bovec\":\"SI-006\",\"Braslovce\":\"SI-151\",\"Brda\":\"SI-007\",\"Brezice\":\"SI-009\",\"Brezovica\":\"SI-008\",\"Cankova\":\"SI-152\",\"Celje\":\"SI-011\",\"Cerklje na Gorenjskem\":\"SI-012\",\"Cerknica\":\"SI-013\",\"Cerkno\":\"SI-014\",\"Cirkulane\":\"SI-196\",\"Crensovci\":\"SI-015\",\"Crnomelj\":\"SI-017\",\"Destrnik\":\"SI-018\",\"Divaca\":\"SI-019\",\"Dobje\":\"SI-154\",\"Dobrepolje\":\"SI-020\",\"Dobrna\":\"SI-155\",\"Dobrova-Polhov Gradec\":\"SI-021\",\"Dobrovnik\":\"SI-156\",\"Domzale\":\"SI-023\",\"Dornava\":\"SI-024\",\"Dravograd\":\"SI-025\",\"Duplek\":\"SI-026\",\"Gorje\":\"SI-207\",\"Gornja Radgona\":\"SI-029\",\"Gornji Petrovci\":\"SI-031\",\"Grad\":\"SI-158\",\"Grosuplje\":\"SI-032\",\"Hajdina\":\"SI-159\",\"Hoce-Slivnica\":\"SI-160\",\"Hodos\":\"SI-161\",\"Horjul\":\"SI-162\",\"Hrastnik\":\"SI-034\",\"Hrpelje-Kozina\":\"SI-035\",\"Idrija\":\"SI-036\",\"Ig\":\"SI-037\",\"Ilirska Bistrica\":\"SI-038\",\"Ivancna Gorica\":\"SI-039\",\"Izola\":\"SI-040\",\"Jesenice\":\"SI-041\",\"Jursinci\":\"SI-042\",\"Kamnik\":\"SI-043\",\"Kanal\":\"SI-044\",\"Kidricevo\":\"SI-045\",\"Kobarid\":\"SI-046\",\"Kobilje\":\"SI-047\",\"Kocevje\":\"SI-048\",\"Komen\":\"SI-049\",\"Komenda\":\"SI-164\",\"Koper\":\"SI-050\",\"Kosanjevica na Krki\":\"SI-197\",\"Kostel\":\"SI-165\",\"Kranj\":\"SI-052\",\"Kranjska Gora\":\"SI-053\",\"Krizevci\":\"SI-166\",\"Krsko\":\"SI-054\",\"Kungota\":\"SI-055\",\"Kuzma\":\"SI-056\",\"Lasko\":\"SI-057\",\"Lenart\":\"SI-058\",\"Lendava\":\"SI-059\",\"Litija\":\"SI-060\",\"Ljubljana\":\"SI-061\",\"Ljutomer\":\"SI-063\",\"Log-Dragomer\":\"SI-208\",\"Logatec\":\"SI-064\",\"Loska dolina\":\"SI-065\",\"Loski Potok\":\"SI-066\",\"Lovrenc na Pohorju\":\"SI-167\",\"Luce\":\"SI-067\",\"Lukovica\":\"SI-068\",\"Majsperk\":\"SI-069\",\"Makole\":\"SI-198\",\"Maribor\":\"SI-070\",\"Markovci\":\"SI-168\",\"Medvode\":\"SI-071\",\"Menges\":\"SI-072\",\"Metlika\":\"SI-073\",\"Mezica\":\"SI-074\",\"Miklavz na Dravskem polju\":\"SI-169\",\"Miren-Kostanjevica\":\"SI-075\",\"Mirna\":\"SI-212\",\"Mirna Pec\":\"SI-170\",\"Mislinja\":\"SI-076\",\"Mokronog-Trebelno\":\"SI-199\",\"Moravce\":\"SI-077\",\"Mozirje\":\"SI-079\",\"Murska Sobota\":\"SI-080\",\"Muta\":\"SI-081\",\"Naklo\":\"SI-082\",\"Nazarje\":\"SI-083\",\"Nova Gorica\":\"SI-084\",\"Novo Mesto\":\"SI-085\",\"Odranci\":\"SI-086\",\"Oplotnica\":\"SI-171\",\"Ormoz\":\"SI-087\",\"Piran\":\"SI-090\",\"Pivka\":\"SI-091\",\"Podcetrtek\":\"SI-092\",\"Podlehnik\":\"SI-172\",\"Poljcane\":\"SI-200\",\"Polzela\":\"SI-173\",\"Postojna\":\"SI-094\",\"Prebold\":\"SI-174\",\"Preddvor\":\"SI-095\",\"Prevalje\":\"SI-175\",\"Ptuj\":\"SI-096\",\"Puconci\":\"SI-097\",\"Race-Fram\":\"SI-098\",\"Radece\":\"SI-099\",\"Radenci\":\"SI-100\",\"Radlje ob Dravi\":\"SI-101\",\"Radovljica\":\"SI-102\",\"Ravne na Koroskem\":\"SI-103\",\"Razkrizje\":\"SI-176\",\"Recica ob Savinji\":\"SI-209\",\"Rence-Vogrsko\":\"SI-201\",\"Ribnica\":\"SI-104\",\"Rogaska Slatina\":\"SI-106\",\"Rogasovci\":\"SI-105\",\"Ruse\":\"SI-108\",\"Salovci\":\"SI-033\",\"Semic\":\"SI-109\",\"Sempeter-Vrtojba\":\"SI-183\",\"Sencur\":\"SI-117\",\"Sentilj\":\"SI-118\",\"Sentjernej\":\"SI-119\",\"Sentjur\":\"SI-120\",\"Sentrupert\":\"SI-211\",\"Sevnica\":\"SI-110\",\"Sezana\":\"SI-111\",\"Skocjan\":\"SI-121\",\"Skofja Loka\":\"SI-122\",\"Skofljica\":\"SI-123\",\"Slovenj Gradec\":\"SI-112\",\"Slovenska Bistrica\":\"SI-113\",\"Slovenske Konjice\":\"SI-114\",\"Smarje pri Jelsah\":\"SI-124\",\"Smarjeske Toplice\":\"SI-206\",\"Smartno ob Paki\":\"SI-125\",\"Smartno pri Litiji\":\"SI-194\",\"Sodrazica\":\"SI-179\",\"Solcava\":\"SI-180\",\"Sostanj\":\"SI-126\",\"Starse\":\"SI-115\",\"Store\":\"SI-127\",\"Straza\":\"SI-203\",\"Sveta Trojica v Slovenskih goricah\":\"SI-204\",\"Sveti Andraz v Slovenskih Goricah\":\"SI-182\",\"Sveti Jurij ob Scavnici\":\"SI-116\",\"Sveti Jurij v Slovenskih goricah\":\"SI-210\",\"Sveti Tomaz\":\"SI-205\",\"Tabor\":\"SI-184\",\"Tisina\":\"SI-010\",\"Tolmin\":\"SI-128\",\"Trbovlje\":\"SI-129\",\"Trebnje\":\"SI-130\",\"Trnovska Vas\":\"SI-185\",\"Trzic\":\"SI-131\",\"Trzin\":\"SI-186\",\"Turnisce\":\"SI-132\",\"Velenje\":\"SI-133\",\"Velika Polana\":\"SI-187\",\"Velike Lasce\":\"SI-134\",\"Verzej\":\"SI-188\",\"Videm\":\"SI-135\",\"Vipava\":\"SI-136\",\"Vitanje\":\"SI-137\",\"Vodice\":\"SI-138\",\"Vojnik\":\"SI-139\",\"Vransko\":\"SI-189\",\"Vrhnika\":\"SI-140\",\"Vuzenica\":\"SI-141\",\"Zagorje ob Savi\":\"SI-142\",\"Zalec\":\"SI-190\",\"Zavrc\":\"SI-143\",\"Zelezniki\":\"SI-146\",\"Zetale\":\"SI-191\",\"Ziri\":\"SI-147\",\"Zrece\":\"SI-144\",\"Zuzemberk\":\"SI-193\"},\"BY\":{\"Brestskaya voblasts\'\":\"BY-BR\",\"Homyel\'skaya voblasts\'\":\"BY-HO\",\"Horad Minsk\":\"BY-HM\",\"Hrodzyenskaya voblasts\'\":\"BY-HR\",\"Mahilyowskaya voblasts\'\":\"BY-MA\",\"Minskaya voblasts\'\":\"BY-MI\",\"Vitsyebskaya voblasts\'\":\"BY-VI\"},\"SK\":{\"Banskobystricky kraj\":\"SK-BC\",\"Bratislavsky kraj\":\"SK-BL\",\"Kosicky kraj\":\"SK-KI\",\"Nitriansky kraj\":\"SK-NI\",\"Presovsky kraj\":\"SK-PV\",\"Trenciansky kraj\":\"SK-TC\",\"Trnavsky kraj\":\"SK-TA\",\"Zilinsky kraj\":\"SK-ZI\"},\"BZ\":{\"Belize\":\"BZ-BZ\",\"Cayo\":\"BZ-CY\",\"Corozal\":\"BZ-CZL\",\"Orange Walk\":\"BZ-OW\",\"Stann Creek\":\"BZ-SC\",\"Toledo\":\"BZ-TOL\"},\"SL\":{\"Eastern\":\"SL-E\",\"Northern\":\"SL-N\",\"Southern\":\"SL-S\",\"Western Area\":\"SL-W\"},\"SM\":{\"Citta di San Marino\":\"SM-07\",\"Domagnano\":\"SM-03\",\"Serravalle\":\"SM-09\"},\"SN\":{\"Dakar\":\"SN-DK\",\"Diourbel\":\"SN-DB\",\"Fatick\":\"SN-FK\",\"Kaffrine\":\"SN-KA\",\"Kaolack\":\"SN-KL\",\"Kolda\":\"SN-KD\",\"Louga\":\"SN-LG\",\"Matam\":\"SN-MT\",\"Saint-Louis\":\"SN-SL\",\"Tambacounda\":\"SN-TC\",\"Thies\":\"SN-TH\",\"Ziguinchor\":\"SN-ZG\"},\"SO\":{\"Awdal\":\"SO-AW\",\"Banaadir\":\"SO-BN\",\"Hiiraan\":\"SO-HI\",\"Mudug\":\"SO-MU\",\"Nugaal\":\"SO-NU\",\"Shabeellaha Hoose\":\"SO-SH\",\"Sool\":\"SO-SO\",\"Togdheer\":\"SO-TO\",\"Woqooyi Galbeed\":\"SO-WO\"},\"CA\":{\"Alberta\":\"CA-AB\",\"British Columbia\":\"CA-BC\",\"Manitoba\":\"CA-MB\",\"New Brunswick\":\"CA-NB\",\"Newfoundland and Labrador\":\"CA-NL\",\"Northwest Territories\":\"CA-NT\",\"Nova Scotia\":\"CA-NS\",\"Nunavut\":\"CA-NU\",\"Ontario\":\"CA-ON\",\"Prince Edward Island\":\"CA-PE\",\"Quebec\":\"CA-QC\",\"Saskatchewan\":\"CA-SK\",\"Yukon\":\"CA-YT\"},\"SR\":{\"Commewijne\":\"SR-CM\",\"Nickerie\":\"SR-NI\",\"Para\":\"SR-PR\",\"Paramaribo\":\"SR-PM\",\"Sipaliwini\":\"SR-SI\",\"Wanica\":\"SR-WA\"},\"SS\":{\"Central Equatoria\":\"SS-EC\",\"Eastern Equatoria\":\"SS-EE\",\"Northern Bahr el Ghazal\":\"SS-BN\",\"Upper Nile\":\"SS-NU\",\"Western Equatoria\":\"SS-EW\"},\"CC\":{\"Cocos (Keeling) Islands\":\"\"},\"ST\":{\"Agua Grande\":\"ST-01\"},\"CD\":{\"Equateur\":\"CD-EQ\",\"Haut-Katanga\":\"CD-HK\",\"Ituri\":\"CD-IT\",\"Kasai Central\":\"CD-KC\",\"Kasai Oriental\":\"CD-KE\",\"Kinshasa\":\"CD-KN\",\"Kwilu\":\"CD-KL\",\"Lualaba\":\"CD-LU\",\"Mai-Ndombe\":\"CD-MN\",\"Nord-Kivu\":\"CD-NK\",\"Sankuru\":\"CD-SA\",\"Sud-Kivu\":\"CD-SK\",\"Tanganyika\":\"CD-TA\",\"Tshopo\":\"CD-TO\"},\"SV\":{\"Ahuachapan\":\"SV-AH\",\"Cabanas\":\"SV-CA\",\"Chalatenango\":\"SV-CH\",\"Cuscatlan\":\"SV-CU\",\"La Libertad\":\"SV-LI\",\"La Paz\":\"SV-PA\",\"La Union\":\"SV-UN\",\"Morazan\":\"SV-MO\",\"San Miguel\":\"SV-SM\",\"San Salvador\":\"SV-SS\",\"San Vicente\":\"SV-SV\",\"Santa Ana\":\"SV-SA\",\"Sonsonate\":\"SV-SO\",\"Usulutan\":\"SV-US\"},\"CF\":{\"Bangui\":\"CF-BGF\",\"Nana-Mambere\":\"CF-NM\",\"Ouham\":\"CF-AC\",\"Ouham-Pende\":\"CF-OP\"},\"CG\":{\"Brazzaville\":\"CG-BZV\",\"Cuvette\":\"CG-8\",\"Pointe-Noire\":\"CG-16\",\"Sangha\":\"CG-13\"},\"SX\":{\"Sint Maarten (Dutch Part)\":\"\"},\"CH\":{\"Aargau\":\"CH-AG\",\"Appenzell Ausserrhoden\":\"CH-AR\",\"Appenzell Innerrhoden\":\"CH-AI\",\"Basel-Landschaft\":\"CH-BL\",\"Basel-Stadt\":\"CH-BS\",\"Bern\":\"CH-BE\",\"Fribourg\":\"CH-FR\",\"Geneve\":\"CH-GE\",\"Glarus\":\"CH-GL\",\"Graubunden\":\"CH-GR\",\"Jura\":\"CH-JU\",\"Luzern\":\"CH-LU\",\"Neuchatel\":\"CH-NE\",\"Nidwalden\":\"CH-NW\",\"Obwalden\":\"CH-OW\",\"Sankt Gallen\":\"CH-SG\",\"Schaffhausen\":\"CH-SH\",\"Schwyz\":\"CH-SZ\",\"Solothurn\":\"CH-SO\",\"Thurgau\":\"CH-TG\",\"Ticino\":\"CH-TI\",\"Uri\":\"CH-UR\",\"Valais\":\"CH-VS\",\"Vaud\":\"CH-VD\",\"Zug\":\"CH-ZG\",\"Zurich\":\"CH-ZH\"},\"SY\":{\"Al Hasakah\":\"SY-HA\",\"Al Ladhiqiyah\":\"SY-LA\",\"Al Qunaytirah\":\"SY-QU\",\"Ar Raqqah\":\"SY-RA\",\"As Suwayda\'\":\"SY-SU\",\"Dar\'a\":\"SY-DR\",\"Dayr az Zawr\":\"SY-DY\",\"Dimashq\":\"SY-DI\",\"Halab\":\"SY-HL\",\"Hamah\":\"SY-HM\",\"Hims\":\"SY-HI\",\"Idlib\":\"SY-ID\",\"Rif Dimashq\":\"SY-RD\",\"Tartus\":\"SY-TA\"},\"CI\":{\"Abidjan\":\"CI-AB\",\"Bas-Sassandra\":\"CI-BS\",\"Comoe\":\"CI-CM\",\"Denguele\":\"CI-DN\",\"Goh-Djiboua\":\"CI-GD\",\"Lacs\":\"CI-LC\",\"Lagunes\":\"CI-LG\",\"Montagnes\":\"CI-MG\",\"Sassandra-Marahoue\":\"CI-SM\",\"Savanes\":\"CI-SV\",\"Vallee du Bandama\":\"CI-VB\",\"Woroba\":\"CI-WR\",\"Yamoussoukro\":\"CI-YM\",\"Zanzan\":\"CI-ZZ\"},\"SZ\":{\"Hhohho\":\"SZ-HH\",\"Lubombo\":\"SZ-LU\",\"Manzini\":\"SZ-MA\"},\"CK\":{\"Cook Islands\":\"\"},\"CL\":{\"Aisen del General Carlos Ibanez del Campo\":\"CL-AI\",\"Antofagasta\":\"CL-AN\",\"Arica y Parinacota\":\"CL-AP\",\"Atacama\":\"CL-AT\",\"Biobio\":\"CL-BI\",\"Coquimbo\":\"CL-CO\",\"La Araucania\":\"CL-AR\",\"Libertador General Bernardo O\'Higgins\":\"CL-LI\",\"Los Lagos\":\"CL-LL\",\"Los Rios\":\"CL-LR\",\"Magallanes\":\"CL-MA\",\"Maule\":\"CL-ML\",\"Nuble\":\"CL-NB\",\"Region Metropolitana de Santiago\":\"CL-RM\",\"Tarapaca\":\"CL-TA\",\"Valparaiso\":\"CL-VS\"},\"CM\":{\"Adamaoua\":\"CM-AD\",\"Centre\":\"CM-CE\",\"Est\":\"CM-ES\",\"Extreme-Nord\":\"CM-EN\",\"Littoral\":\"CM-LT\",\"Nord\":\"CM-NO\",\"Nord-Ouest\":\"CM-NW\",\"Ouest\":\"CM-OU\",\"Sud\":\"CM-SU\",\"Sud-Ouest\":\"CM-SW\"},\"CN\":{\"Anhui\":\"CN-AH\",\"Beijing\":\"CN-BJ\",\"Chongqing\":\"CN-CQ\",\"Fujian\":\"CN-FJ\",\"Gansu\":\"CN-GS\",\"Guangdong\":\"CN-GD\",\"Guangxi\":\"CN-GX\",\"Guizhou\":\"CN-GZ\",\"Hainan\":\"CN-HI\",\"Hebei\":\"CN-HE\",\"Heilongjiang\":\"CN-HL\",\"Henan\":\"CN-HA\",\"Hubei\":\"CN-HB\",\"Hunan\":\"CN-HN\",\"Jiangsu\":\"CN-JS\",\"Jiangxi\":\"CN-JX\",\"Jilin\":\"CN-JL\",\"Liaoning\":\"CN-LN\",\"Nei Mongol\":\"CN-NM\",\"Ningxia\":\"CN-NX\",\"Qinghai\":\"CN-QH\",\"Shaanxi\":\"CN-SN\",\"Shandong\":\"CN-SD\",\"Shanghai\":\"CN-SH\",\"Shanxi\":\"CN-SX\",\"Sichuan\":\"CN-SC\",\"Tianjin\":\"CN-TJ\",\"Xinjiang\":\"CN-XJ\",\"Xizang\":\"CN-XZ\",\"Yunnan\":\"CN-YN\",\"Zhejiang\":\"CN-ZJ\"},\"CO\":{\"Amazonas\":\"CO-AMA\",\"Antioquia\":\"CO-ANT\",\"Arauca\":\"CO-ARA\",\"Atlantico\":\"CO-ATL\",\"Bolivar\":\"CO-BOL\",\"Boyaca\":\"CO-BOY\",\"Caldas\":\"CO-CAL\",\"Caqueta\":\"CO-CAQ\",\"Casanare\":\"CO-CAS\",\"Cauca\":\"CO-CAU\",\"Cesar\":\"CO-CES\",\"Choco\":\"CO-CHO\",\"Cordoba\":\"CO-COR\",\"Cundinamarca\":\"CO-CUN\",\"Distrito Capital de Bogota\":\"CO-DC\",\"Guainia\":\"CO-GUA\",\"Guaviare\":\"CO-GUV\",\"Huila\":\"CO-HUI\",\"La Guajira\":\"CO-LAG\",\"Magdalena\":\"CO-MAG\",\"Meta\":\"CO-MET\",\"Narino\":\"CO-NAR\",\"Norte de Santander\":\"CO-NSA\",\"Putumayo\":\"CO-PUT\",\"Quindio\":\"CO-QUI\",\"Risaralda\":\"CO-RIS\",\"San Andres, Providencia y Santa Catalina\":\"CO-SAP\",\"Santander\":\"CO-SAN\",\"Sucre\":\"CO-SUC\",\"Tolima\":\"CO-TOL\",\"Valle del Cauca\":\"CO-VAC\",\"Vichada\":\"CO-VID\"},\"TC\":{\"Turks and Caicos Islands\":\"\"},\"CR\":{\"Alajuela\":\"CR-A\",\"Cartago\":\"CR-C\",\"Guanacaste\":\"CR-G\",\"Heredia\":\"CR-H\",\"Limon\":\"CR-L\",\"Puntarenas\":\"CR-P\",\"San Jose\":\"CR-SJ\"},\"TD\":{\"Guera\":\"TD-GR\",\"Logone-Occidental\":\"TD-LO\",\"Mayo-Kebbi-Est\":\"TD-ME\",\"Ouaddai\":\"TD-OD\",\"Ville de Ndjamena\":\"TD-ND\",\"Wadi Fira\":\"TD-WF\"},\"TF\":{\"French Southern Territories\":\"\"},\"CU\":{\"Artemisa\":\"CU-15\",\"Camaguey\":\"CU-09\",\"Ciego de Avila\":\"CU-08\",\"Cienfuegos\":\"CU-06\",\"Granma\":\"CU-12\",\"Guantanamo\":\"CU-14\",\"Holguin\":\"CU-11\",\"La Habana\":\"CU-03\",\"Las Tunas\":\"CU-10\",\"Matanzas\":\"CU-04\",\"Mayabeque\":\"CU-16\",\"Pinar del Rio\":\"CU-01\",\"Sancti Spiritus\":\"CU-07\",\"Santiago de Cuba\":\"CU-13\",\"Villa Clara\":\"CU-05\"},\"TG\":{\"Centrale\":\"TG-C\",\"Kara\":\"TG-K\",\"Maritime\":\"TG-M\",\"Plateaux\":\"TG-P\"},\"CV\":{\"Boa Vista\":\"CV-BV\",\"Brava\":\"CV-BR\",\"Maio\":\"CV-MA\",\"Porto Novo\":\"CV-PN\",\"Praia\":\"CV-PR\",\"Ribeira Grande\":\"CV-RG\",\"Ribeira Grande de Santiago\":\"CV-RS\",\"Sal\":\"CV-SL\",\"Santa Cruz\":\"CV-CR\",\"Sao Vicente\":\"CV-SV\",\"Tarrafal\":\"CV-TA\"},\"TH\":{\"Amnat Charoen\":\"TH-37\",\"Ang Thong\":\"TH-15\",\"Bueng Kan\":\"TH-38\",\"Buri Ram\":\"TH-31\",\"Chachoengsao\":\"TH-24\",\"Chai Nat\":\"TH-18\",\"Chaiyaphum\":\"TH-36\",\"Chanthaburi\":\"TH-22\",\"Chiang Mai\":\"TH-50\",\"Chiang Rai\":\"TH-57\",\"Chon Buri\":\"TH-20\",\"Chumphon\":\"TH-86\",\"Kalasin\":\"TH-46\",\"Kamphaeng Phet\":\"TH-62\",\"Kanchanaburi\":\"TH-71\",\"Khon Kaen\":\"TH-40\",\"Krabi\":\"TH-81\",\"Krung Thep Maha Nakhon\":\"TH-10\",\"Lampang\":\"TH-52\",\"Lamphun\":\"TH-51\",\"Loei\":\"TH-42\",\"Lop Buri\":\"TH-16\",\"Mae Hong Son\":\"TH-58\",\"Maha Sarakham\":\"TH-44\",\"Mukdahan\":\"TH-49\",\"Nakhon Nayok\":\"TH-26\",\"Nakhon Pathom\":\"TH-73\",\"Nakhon Phanom\":\"TH-48\",\"Nakhon Ratchasima\":\"TH-30\",\"Nakhon Sawan\":\"TH-60\",\"Nakhon Si Thammarat\":\"TH-80\",\"Nan\":\"TH-55\",\"Narathiwat\":\"TH-96\",\"Nong Bua Lam Phu\":\"TH-39\",\"Nong Khai\":\"TH-43\",\"Nonthaburi\":\"TH-12\",\"Pathum Thani\":\"TH-13\",\"Pattani\":\"TH-94\",\"Phangnga\":\"TH-82\",\"Phatthalung\":\"TH-93\",\"Phayao\":\"TH-56\",\"Phetchabun\":\"TH-67\",\"Phetchaburi\":\"TH-76\",\"Phichit\":\"TH-66\",\"Phitsanulok\":\"TH-65\",\"Phra Nakhon Si Ayutthaya\":\"TH-14\",\"Phrae\":\"TH-54\",\"Phuket\":\"TH-83\",\"Prachin Buri\":\"TH-25\",\"Prachuap Khiri Khan\":\"TH-77\",\"Ranong\":\"TH-85\",\"Ratchaburi\":\"TH-70\",\"Rayong\":\"TH-21\",\"Roi Et\":\"TH-45\",\"Sa Kaeo\":\"TH-27\",\"Sakon Nakhon\":\"TH-47\",\"Samut Prakan\":\"TH-11\",\"Samut Sakhon\":\"TH-74\",\"Samut Songkhram\":\"TH-75\",\"Saraburi\":\"TH-19\",\"Satun\":\"TH-91\",\"Si Sa Ket\":\"TH-33\",\"Sing Buri\":\"TH-17\",\"Songkhla\":\"TH-90\",\"Sukhothai\":\"TH-64\",\"Suphan Buri\":\"TH-72\",\"Surat Thani\":\"TH-84\",\"Surin\":\"TH-32\",\"Tak\":\"TH-63\",\"Trang\":\"TH-92\",\"Trat\":\"TH-23\",\"Ubon Ratchathani\":\"TH-34\",\"Udon Thani\":\"TH-41\",\"Uthai Thani\":\"TH-61\",\"Uttaradit\":\"TH-53\",\"Yala\":\"TH-95\",\"Yasothon\":\"TH-35\"},\"CW\":{\"Curacao\":\"\"},\"CX\":{\"Christmas Island\":\"\"},\"TJ\":{\"Dushanbe\":\"TJ-DU\",\"Khatlon\":\"TJ-KT\",\"Nohiyahoi Tobei Jumhuri\":\"TJ-RA\",\"Sughd\":\"TJ-SU\"},\"CY\":{\"Ammochostos\":\"CY-04\",\"Keryneia\":\"CY-06\",\"Larnaka\":\"CY-03\",\"Lefkosia\":\"CY-01\",\"Lemesos\":\"CY-02\",\"Pafos\":\"CY-05\"},\"TK\":{\"Tokelau\":\"\"},\"CZ\":{\"Jihocesky kraj\":\"CZ-31\",\"Jihomoravsky kraj\":\"CZ-64\",\"Karlovarsky kraj\":\"CZ-41\",\"Kraj Vysocina\":\"CZ-63\",\"Kralovehradecky kraj\":\"CZ-52\",\"Liberecky kraj\":\"CZ-51\",\"Moravskoslezsky kraj\":\"CZ-80\",\"Olomoucky kraj\":\"CZ-71\",\"Pardubicky kraj\":\"CZ-53\",\"Plzensky kraj\":\"CZ-32\",\"Praha, Hlavni mesto\":\"CZ-10\",\"Stredocesky kraj\":\"CZ-20\",\"Ustecky kraj\":\"CZ-42\",\"Zlinsky kraj\":\"CZ-72\"},\"TL\":{\"Ainaro\":\"TL-AN\",\"Cova Lima\":\"TL-CO\",\"Dili\":\"TL-DI\"},\"TM\":{\"Ahal\":\"TM-A\",\"Balkan\":\"TM-B\",\"Dasoguz\":\"TM-D\",\"Lebap\":\"TM-L\",\"Mary\":\"TM-M\"},\"TN\":{\"Beja\":\"TN-31\",\"Ben Arous\":\"TN-13\",\"Bizerte\":\"TN-23\",\"Gabes\":\"TN-81\",\"Gafsa\":\"TN-71\",\"Jendouba\":\"TN-32\",\"Kairouan\":\"TN-41\",\"Kasserine\":\"TN-42\",\"Kebili\":\"TN-73\",\"L\'Ariana\":\"TN-12\",\"La Manouba\":\"TN-14\",\"Le Kef\":\"TN-33\",\"Mahdia\":\"TN-53\",\"Medenine\":\"TN-82\",\"Monastir\":\"TN-52\",\"Nabeul\":\"TN-21\",\"Sfax\":\"TN-61\",\"Sidi Bouzid\":\"TN-43\",\"Siliana\":\"TN-34\",\"Sousse\":\"TN-51\",\"Tataouine\":\"TN-83\",\"Tozeur\":\"TN-72\",\"Tunis\":\"TN-11\",\"Zaghouan\":\"TN-22\"},\"TO\":{\"Niuas\":\"TO-03\",\"Tongatapu\":\"TO-04\"},\"TR\":{\"Adana\":\"TR-01\",\"Adiyaman\":\"TR-02\",\"Afyonkarahisar\":\"TR-03\",\"Agri\":\"TR-04\",\"Aksaray\":\"TR-68\",\"Amasya\":\"TR-05\",\"Ankara\":\"TR-06\",\"Antalya\":\"TR-07\",\"Ardahan\":\"TR-75\",\"Artvin\":\"TR-08\",\"Aydin\":\"TR-09\",\"Balikesir\":\"TR-10\",\"Bartin\":\"TR-74\",\"Batman\":\"TR-72\",\"Bayburt\":\"TR-69\",\"Bilecik\":\"TR-11\",\"Bingol\":\"TR-12\",\"Bitlis\":\"TR-13\",\"Bolu\":\"TR-14\",\"Burdur\":\"TR-15\",\"Bursa\":\"TR-16\",\"Canakkale\":\"TR-17\",\"Cankiri\":\"TR-18\",\"Corum\":\"TR-19\",\"Denizli\":\"TR-20\",\"Diyarbakir\":\"TR-21\",\"Duzce\":\"TR-81\",\"Edirne\":\"TR-22\",\"Elazig\":\"TR-23\",\"Erzincan\":\"TR-24\",\"Erzurum\":\"TR-25\",\"Eskisehir\":\"TR-26\",\"Gaziantep\":\"TR-27\",\"Giresun\":\"TR-28\",\"Gumushane\":\"TR-29\",\"Hakkari\":\"TR-30\",\"Hatay\":\"TR-31\",\"Igdir\":\"TR-76\",\"Isparta\":\"TR-32\",\"Istanbul\":\"TR-34\",\"Izmir\":\"TR-35\",\"Kahramanmaras\":\"TR-46\",\"Karabuk\":\"TR-78\",\"Karaman\":\"TR-70\",\"Kars\":\"TR-36\",\"Kastamonu\":\"TR-37\",\"Kayseri\":\"TR-38\",\"Kilis\":\"TR-79\",\"Kirikkale\":\"TR-71\",\"Kirklareli\":\"TR-39\",\"Kirsehir\":\"TR-40\",\"Kocaeli\":\"TR-41\",\"Konya\":\"TR-42\",\"Kutahya\":\"TR-43\",\"Malatya\":\"TR-44\",\"Manisa\":\"TR-45\",\"Mardin\":\"TR-47\",\"Mersin\":\"TR-33\",\"Mugla\":\"TR-48\",\"Mus\":\"TR-49\",\"Nevsehir\":\"TR-50\",\"Nigde\":\"TR-51\",\"Ordu\":\"TR-52\",\"Osmaniye\":\"TR-80\",\"Rize\":\"TR-53\",\"Sakarya\":\"TR-54\",\"Samsun\":\"TR-55\",\"Sanliurfa\":\"TR-63\",\"Siirt\":\"TR-56\",\"Sinop\":\"TR-57\",\"Sirnak\":\"TR-73\",\"Sivas\":\"TR-58\",\"Tekirdag\":\"TR-59\",\"Tokat\":\"TR-60\",\"Trabzon\":\"TR-61\",\"Tunceli\":\"TR-62\",\"Usak\":\"TR-64\",\"Van\":\"TR-65\",\"Yalova\":\"TR-77\",\"Yozgat\":\"TR-66\",\"Zonguldak\":\"TR-67\"},\"TT\":{\"Arima\":\"TT-ARI\",\"Chaguanas\":\"TT-CHA\",\"Couva-Tabaquite-Talparo\":\"TT-CTT\",\"Diego Martin\":\"TT-DMN\",\"Mayaro-Rio Claro\":\"TT-MRC\",\"Penal-Debe\":\"TT-PED\",\"Point Fortin\":\"TT-PTF\",\"Port of Spain\":\"TT-POS\",\"Princes Town\":\"TT-PRT\",\"San Fernando\":\"TT-SFO\",\"San Juan-Laventille\":\"TT-SJL\",\"Sangre Grande\":\"TT-SGE\",\"Siparia\":\"TT-SIP\",\"Tobago\":\"TT-TOB\",\"Tunapuna-Piarco\":\"TT-TUP\"},\"DE\":{\"Baden-Wurttemberg\":\"DE-BW\",\"Bayern\":\"DE-BY\",\"Berlin\":\"DE-BE\",\"Brandenburg\":\"DE-BB\",\"Bremen\":\"DE-HB\",\"Hamburg\":\"DE-HH\",\"Hessen\":\"DE-HE\",\"Mecklenburg-Vorpommern\":\"DE-MV\",\"Niedersachsen\":\"DE-NI\",\"Nordrhein-Westfalen\":\"DE-NW\",\"Rheinland-Pfalz\":\"DE-RP\",\"Saarland\":\"DE-SL\",\"Sachsen\":\"DE-SN\",\"Sachsen-Anhalt\":\"DE-ST\",\"Schleswig-Holstein\":\"DE-SH\",\"Thuringen\":\"DE-TH\"},\"TV\":{\"Funafuti\":\"TV-FUN\"},\"TW\":{\"Changhua\":\"TW-CHA\",\"Chiayi\":\"TW-CYQ\",\"Hsinchu\":\"TW-HSQ\",\"Hualien\":\"TW-HUA\",\"Kaohsiung\":\"TW-KHH\",\"Keelung\":\"TW-KEE\",\"Kinmen\":\"TW-KIN\",\"Lienchiang\":\"TW-LIE\",\"Miaoli\":\"TW-MIA\",\"Nantou\":\"TW-NAN\",\"New Taipei\":\"TW-NWT\",\"Penghu\":\"TW-PEN\",\"Pingtung\":\"TW-PIF\",\"Taichung\":\"TW-TXG\",\"Tainan\":\"TW-TNN\",\"Taipei\":\"TW-TPE\",\"Taitung\":\"TW-TTT\",\"Taoyuan\":\"TW-TAO\",\"Yilan\":\"TW-ILA\",\"Yunlin\":\"TW-YUN\"},\"TZ\":{\"Arusha\":\"TZ-01\",\"Dar es Salaam\":\"TZ-02\",\"Dodoma\":\"TZ-03\",\"Geita\":\"TZ-27\",\"Iringa\":\"TZ-04\",\"Kagera\":\"TZ-05\",\"Kaskazini Unguja\":\"TZ-07\",\"Katavi\":\"TZ-28\",\"Kigoma\":\"TZ-08\",\"Kilimanjaro\":\"TZ-09\",\"Kusini Unguja\":\"TZ-11\",\"Lindi\":\"TZ-12\",\"Manyara\":\"TZ-26\",\"Mara\":\"TZ-13\",\"Mbeya\":\"TZ-14\",\"Mjini Magharibi\":\"TZ-15\",\"Morogoro\":\"TZ-16\",\"Mtwara\":\"TZ-17\",\"Mwanza\":\"TZ-18\",\"Njombe\":\"TZ-29\",\"Pwani\":\"TZ-19\",\"Rukwa\":\"TZ-20\",\"Ruvuma\":\"TZ-21\",\"Shinyanga\":\"TZ-22\",\"Simiyu\":\"TZ-30\",\"Singida\":\"TZ-23\",\"Songwe\":\"TZ-31\",\"Tabora\":\"TZ-24\",\"Tanga\":\"TZ-25\"},\"DJ\":{\"Djibouti\":\"DJ-DJ\"},\"DK\":{\"Hovedstaden\":\"DK-84\",\"Midtjylland\":\"DK-82\",\"Nordjylland\":\"DK-81\",\"Sjaelland\":\"DK-85\",\"Syddanmark\":\"DK-83\"},\"DM\":{\"Saint Andrew\":\"DM-02\",\"Saint George\":\"DM-04\",\"Saint John\":\"DM-05\",\"Saint Patrick\":\"DM-09\",\"Saint Paul\":\"DM-10\"},\"DO\":{\"Azua\":\"DO-02\",\"Baoruco\":\"DO-03\",\"Barahona\":\"DO-04\",\"Dajabon\":\"DO-05\",\"Distrito Nacional (Santo Domingo)\":\"DO-01\",\"Duarte\":\"DO-06\",\"El Seibo\":\"DO-08\",\"Elias Pina\":\"DO-07\",\"Espaillat\":\"DO-09\",\"Hato Mayor\":\"DO-30\",\"Hermanas Mirabal\":\"DO-19\",\"Independencia\":\"DO-10\",\"La Altagracia\":\"DO-11\",\"La Romana\":\"DO-12\",\"La Vega\":\"DO-13\",\"Maria Trinidad Sanchez\":\"DO-14\",\"Monsenor Nouel\":\"DO-28\",\"Monte Cristi\":\"DO-15\",\"Monte Plata\":\"DO-29\",\"Peravia\":\"DO-17\",\"Puerto Plata\":\"DO-18\",\"Samana\":\"DO-20\",\"San Cristobal\":\"DO-21\",\"San Jose de Ocoa\":\"DO-31\",\"San Juan\":\"DO-22\",\"San Pedro de Macoris\":\"DO-23\",\"Sanchez Ramirez\":\"DO-24\",\"Santiago\":\"DO-25\",\"Santiago Rodriguez\":\"DO-26\",\"Valverde\":\"DO-27\"},\"UA\":{\"Avtonomna Respublika Krym\":\"UA-43\",\"Cherkaska oblast\":\"UA-71\",\"Chernihivska oblast\":\"UA-74\",\"Chernivetska oblast\":\"UA-77\",\"Dnipropetrovska oblast\":\"UA-12\",\"Donetska oblast\":\"UA-14\",\"Ivano-Frankivska oblast\":\"UA-26\",\"Kharkivska oblast\":\"UA-63\",\"Khersonska oblast\":\"UA-65\",\"Khmelnytska oblast\":\"UA-68\",\"Kirovohradska oblast\":\"UA-35\",\"Kyiv\":\"UA-30\",\"Kyivska oblast\":\"UA-32\",\"Luhanska oblast\":\"UA-09\",\"Lvivska oblast\":\"UA-46\",\"Mykolaivska oblast\":\"UA-48\",\"Odeska oblast\":\"UA-51\",\"Poltavska oblast\":\"UA-53\",\"Rivnenska oblast\":\"UA-56\",\"Sevastopol\":\"UA-40\",\"Sumska oblast\":\"UA-59\",\"Ternopilska oblast\":\"UA-61\",\"Vinnytska oblast\":\"UA-05\",\"Volynska oblast\":\"UA-07\",\"Zakarpatska oblast\":\"UA-21\",\"Zaporizka oblast\":\"UA-23\",\"Zhytomyrska oblast\":\"UA-18\"},\"UG\":{\"Alebtong\":\"UG-323\",\"Amuru\":\"UG-316\",\"Arua\":\"UG-303\",\"Bugiri\":\"UG-201\",\"Buikwe\":\"UG-117\",\"Bukedea\":\"UG-219\",\"Buvuma\":\"UG-120\",\"Gulu\":\"UG-304\",\"Hoima\":\"UG-403\",\"Iganga\":\"UG-203\",\"Jinja\":\"UG-204\",\"Kabale\":\"UG-404\",\"Kabarole\":\"UG-405\",\"Kalangala\":\"UG-101\",\"Kaliro\":\"UG-222\",\"Kalungu\":\"UG-122\",\"Kampala\":\"UG-102\",\"Kamuli\":\"UG-205\",\"Kamwenge\":\"UG-413\",\"Kapchorwa\":\"UG-206\",\"Kasese\":\"UG-406\",\"Kayunga\":\"UG-112\",\"Kibaale\":\"UG-407\",\"Kiboga\":\"UG-103\",\"Kiruhura\":\"UG-419\",\"Kisoro\":\"UG-408\",\"Kitgum\":\"UG-305\",\"Kyenjojo\":\"UG-415\",\"Lira\":\"UG-307\",\"Luwero\":\"UG-104\",\"Masaka\":\"UG-105\",\"Masindi\":\"UG-409\",\"Mayuge\":\"UG-214\",\"Mbale\":\"UG-209\",\"Mbarara\":\"UG-410\",\"Mitooma\":\"UG-423\",\"Mityana\":\"UG-115\",\"Mpigi\":\"UG-106\",\"Mubende\":\"UG-107\",\"Mukono\":\"UG-108\",\"Nakaseke\":\"UG-116\",\"Nakasongola\":\"UG-109\",\"Ntungamo\":\"UG-411\",\"Oyam\":\"UG-321\",\"Pallisa\":\"UG-210\",\"Rukungiri\":\"UG-412\",\"Sironko\":\"UG-215\",\"Soroti\":\"UG-211\",\"Wakiso\":\"UG-113\"},\"DZ\":{\"Adrar\":\"DZ-01\",\"Ain Defla\":\"DZ-44\",\"Ain Temouchent\":\"DZ-46\",\"Alger\":\"DZ-16\",\"Annaba\":\"DZ-23\",\"Batna\":\"DZ-05\",\"Bechar\":\"DZ-08\",\"Bejaia\":\"DZ-06\",\"Biskra\":\"DZ-07\",\"Blida\":\"DZ-09\",\"Bordj Bou Arreridj\":\"DZ-34\",\"Bouira\":\"DZ-10\",\"Boumerdes\":\"DZ-35\",\"Chlef\":\"DZ-02\",\"Constantine\":\"DZ-25\",\"Djelfa\":\"DZ-17\",\"El Bayadh\":\"DZ-32\",\"El Oued\":\"DZ-39\",\"El Tarf\":\"DZ-36\",\"Ghardaia\":\"DZ-47\",\"Guelma\":\"DZ-24\",\"Illizi\":\"DZ-33\",\"Jijel\":\"DZ-18\",\"Khenchela\":\"DZ-40\",\"Laghouat\":\"DZ-03\",\"M\'sila\":\"DZ-28\",\"Mascara\":\"DZ-29\",\"Medea\":\"DZ-26\",\"Mila\":\"DZ-43\",\"Mostaganem\":\"DZ-27\",\"Naama\":\"DZ-45\",\"Oran\":\"DZ-31\",\"Ouargla\":\"DZ-30\",\"Oum el Bouaghi\":\"DZ-04\",\"Relizane\":\"DZ-48\",\"Saida\":\"DZ-20\",\"Setif\":\"DZ-19\",\"Sidi Bel Abbes\":\"DZ-22\",\"Skikda\":\"DZ-21\",\"Souk Ahras\":\"DZ-41\",\"Tamanrasset\":\"DZ-11\",\"Tebessa\":\"DZ-12\",\"Tiaret\":\"DZ-14\",\"Tindouf\":\"DZ-37\",\"Tipaza\":\"DZ-42\",\"Tissemsilt\":\"DZ-38\",\"Tizi Ouzou\":\"DZ-15\",\"Tlemcen\":\"DZ-13\"},\"UM\":{\"Palmyra Atoll\":\"UM-95\"},\"US\":{\"Alabama\":\"US-AL\",\"Alaska\":\"US-AK\",\"Arizona\":\"US-AZ\",\"Arkansas\":\"US-AR\",\"California\":\"US-CA\",\"Colorado\":\"US-CO\",\"Connecticut\":\"US-CT\",\"Delaware\":\"US-DE\",\"District of Columbia\":\"US-DC\",\"Florida\":\"US-FL\",\"Georgia\":\"US-GA\",\"Hawaii\":\"US-HI\",\"Idaho\":\"US-ID\",\"Illinois\":\"US-IL\",\"Indiana\":\"US-IN\",\"Iowa\":\"US-IA\",\"Kansas\":\"US-KS\",\"Kentucky\":\"US-KY\",\"Louisiana\":\"US-LA\",\"Maine\":\"US-ME\",\"Maryland\":\"US-MD\",\"Massachusetts\":\"US-MA\",\"Michigan\":\"US-MI\",\"Minnesota\":\"US-MN\",\"Mississippi\":\"US-MS\",\"Missouri\":\"US-MO\",\"Montana\":\"US-MT\",\"Nebraska\":\"US-NE\",\"Nevada\":\"US-NV\",\"New Hampshire\":\"US-NH\",\"New Jersey\":\"US-NJ\",\"New Mexico\":\"US-NM\",\"New York\":\"US-NY\",\"North Carolina\":\"US-NC\",\"North Dakota\":\"US-ND\",\"Ohio\":\"US-OH\",\"Oklahoma\":\"US-OK\",\"Oregon\":\"US-OR\",\"Pennsylvania\":\"US-PA\",\"Rhode Island\":\"US-RI\",\"South Carolina\":\"US-SC\",\"South Dakota\":\"US-SD\",\"Tennessee\":\"US-TN\",\"Texas\":\"US-TX\",\"Utah\":\"US-UT\",\"Vermont\":\"US-VT\",\"Virginia\":\"US-VA\",\"Washington\":\"US-WA\",\"West Virginia\":\"US-WV\",\"Wisconsin\":\"US-WI\",\"Wyoming\":\"US-WY\"},\"EC\":{\"Azuay\":\"EC-A\",\"Bolivar\":\"EC-B\",\"Canar\":\"EC-F\",\"Carchi\":\"EC-C\",\"Chimborazo\":\"EC-H\",\"Cotopaxi\":\"EC-X\",\"El Oro\":\"EC-O\",\"Esmeraldas\":\"EC-E\",\"Galapagos\":\"EC-W\",\"Guayas\":\"EC-G\",\"Imbabura\":\"EC-I\",\"Loja\":\"EC-L\",\"Los Rios\":\"EC-R\",\"Manabi\":\"EC-M\",\"Morona Santiago\":\"EC-S\",\"Napo\":\"EC-N\",\"Orellana\":\"EC-D\",\"Pastaza\":\"EC-Y\",\"Pichincha\":\"EC-P\",\"Santa Elena\":\"EC-SE\",\"Santo Domingo de los Tsachilas\":\"EC-SD\",\"Sucumbios\":\"EC-U\",\"Tungurahua\":\"EC-T\",\"Zamora Chinchipe\":\"EC-Z\"},\"EE\":{\"Harjumaa\":\"EE-37\",\"Hiiumaa\":\"EE-39\",\"Ida-Virumaa\":\"EE-45\",\"Jarvamaa\":\"EE-52\",\"Jogevamaa\":\"EE-50\",\"Laane-Virumaa\":\"EE-60\",\"Laanemaa\":\"EE-56\",\"Parnumaa\":\"EE-68\",\"Polvamaa\":\"EE-64\",\"Raplamaa\":\"EE-71\",\"Saaremaa\":\"EE-74\",\"Tartumaa\":\"EE-79\",\"Valgamaa\":\"EE-81\",\"Viljandimaa\":\"EE-84\",\"Vorumaa\":\"EE-87\"},\"EG\":{\"Ad Daqahliyah\":\"EG-DK\",\"Al Bahr al Ahmar\":\"EG-BA\",\"Al Buhayrah\":\"EG-BH\",\"Al Fayyum\":\"EG-FYM\",\"Al Gharbiyah\":\"EG-GH\",\"Al Iskandariyah\":\"EG-ALX\",\"Al Isma\'iliyah\":\"EG-IS\",\"Al Jizah\":\"EG-GZ\",\"Al Minufiyah\":\"EG-MNF\",\"Al Minya\":\"EG-MN\",\"Al Qahirah\":\"EG-C\",\"Al Qalyubiyah\":\"EG-KB\",\"Al Uqsur\":\"EG-LX\",\"Al Wadi al Jadid\":\"EG-WAD\",\"As Suways\":\"EG-SUZ\",\"Ash Sharqiyah\":\"EG-SHR\",\"Aswan\":\"EG-ASN\",\"Asyut\":\"EG-AST\",\"Bani Suwayf\":\"EG-BNS\",\"Bur Sa\'id\":\"EG-PTS\",\"Dumyat\":\"EG-DT\",\"Janub Sina\'\":\"EG-JS\",\"Kafr ash Shaykh\":\"EG-KFS\",\"Matruh\":\"EG-MT\",\"Qina\":\"EG-KN\",\"Shamal Sina\'\":\"EG-SIN\",\"Suhaj\":\"EG-SHG\"},\"UY\":{\"Artigas\":\"UY-AR\",\"Canelones\":\"UY-CA\",\"Cerro Largo\":\"UY-CL\",\"Colonia\":\"UY-CO\",\"Durazno\":\"UY-DU\",\"Flores\":\"UY-FS\",\"Florida\":\"UY-FD\",\"Lavalleja\":\"UY-LA\",\"Maldonado\":\"UY-MA\",\"Montevideo\":\"UY-MO\",\"Paysandu\":\"UY-PA\",\"Rio Negro\":\"UY-RN\",\"Rivera\":\"UY-RV\",\"Rocha\":\"UY-RO\",\"Salto\":\"UY-SA\",\"San Jose\":\"UY-SJ\",\"Soriano\":\"UY-SO\",\"Tacuarembo\":\"UY-TA\",\"Treinta y Tres\":\"UY-TT\"},\"UZ\":{\"Andijon\":\"UZ-AN\",\"Buxoro\":\"UZ-BU\",\"Farg\'ona\":\"UZ-FA\",\"Jizzax\":\"UZ-JI\",\"Namangan\":\"UZ-NG\",\"Navoiy\":\"UZ-NW\",\"Qashqadaryo\":\"UZ-QA\",\"Qoraqalpog\'iston Respublikasi\":\"UZ-QR\",\"Samarqand\":\"UZ-SA\",\"Sirdaryo\":\"UZ-SI\",\"Surxondaryo\":\"UZ-SU\",\"Toshkent\":\"UZ-TK\",\"Xorazm\":\"UZ-XO\"},\"VA\":{\"Vatican City\":\"\"},\"VC\":{\"Charlotte\":\"VC-01\",\"Grenadines\":\"VC-06\",\"Saint George\":\"VC-04\",\"Saint Patrick\":\"VC-05\"},\"ER\":{\"Al Awsat\":\"ER-MA\"},\"ES\":{\"Andalucia\":\"ES-AN\",\"Aragon\":\"ES-AR\",\"Asturias, Principado de\":\"ES-AS\",\"Canarias\":\"ES-CN\",\"Cantabria\":\"ES-CB\",\"Castilla y Leon\":\"ES-CL\",\"Castilla-La Mancha\":\"ES-CM\",\"Catalunya\":\"ES-CT\",\"Ceuta\":\"ES-CE\",\"Extremadura\":\"ES-EX\",\"Galicia\":\"ES-GA\",\"Illes Balears\":\"ES-IB\",\"La Rioja\":\"ES-RI\",\"Madrid, Comunidad de\":\"ES-MD\",\"Melilla\":\"ES-ML\",\"Murcia, Region de\":\"ES-MC\",\"Navarra, Comunidad Foral de\":\"ES-NC\",\"Pais Vasco\":\"ES-PV\",\"Valenciana, Comunidad\":\"ES-VC\"},\"VE\":{\"Amazonas\":\"VE-Z\",\"Anzoategui\":\"VE-B\",\"Apure\":\"VE-C\",\"Aragua\":\"VE-D\",\"Barinas\":\"VE-E\",\"Bolivar\":\"VE-F\",\"Carabobo\":\"VE-G\",\"Cojedes\":\"VE-H\",\"Delta Amacuro\":\"VE-Y\",\"Distrito Capital\":\"VE-A\",\"Falcon\":\"VE-I\",\"Guarico\":\"VE-J\",\"La Guaira\":\"VE-X\",\"Lara\":\"VE-K\",\"Merida\":\"VE-L\",\"Miranda\":\"VE-M\",\"Monagas\":\"VE-N\",\"Nueva Esparta\":\"VE-O\",\"Portuguesa\":\"VE-P\",\"Sucre\":\"VE-R\",\"Tachira\":\"VE-S\",\"Trujillo\":\"VE-T\",\"Yaracuy\":\"VE-U\",\"Zulia\":\"VE-V\"},\"ET\":{\"Adis Abeba\":\"ET-AA\",\"Afar\":\"ET-AF\",\"Amara\":\"ET-AM\",\"Binshangul Gumuz\":\"ET-BE\",\"Dire Dawa\":\"ET-DD\",\"Hareri Hizb\":\"ET-HA\",\"Oromiya\":\"ET-OR\",\"Sumale\":\"ET-SO\",\"Tigray\":\"ET-TI\",\"YeDebub Biheroch Bihereseboch na Hizboch\":\"ET-SN\"},\"VG\":{\"Virgin Islands, British\":\"\"},\"VI\":{\"Virgin Islands, U.S.\":\"\"},\"VN\":{\"An Giang\":\"VN-44\",\"Ba Ria - Vung Tau\":\"VN-43\",\"Bac Giang\":\"VN-54\",\"Bac Kan\":\"VN-53\",\"Bac Lieu\":\"VN-55\",\"Bac Ninh\":\"VN-56\",\"Ben Tre\":\"VN-50\",\"Binh Dinh\":\"VN-31\",\"Binh Duong\":\"VN-57\",\"Binh Phuoc\":\"VN-58\",\"Binh Thuan\":\"VN-40\",\"Ca Mau\":\"VN-59\",\"Can Tho\":\"VN-CT\",\"Cao Bang\":\"VN-04\",\"Da Nang\":\"VN-DN\",\"Dak Lak\":\"VN-33\",\"Dak Nong\":\"VN-72\",\"Dien Bien\":\"VN-71\",\"Dong Nai\":\"VN-39\",\"Dong Thap\":\"VN-45\",\"Gia Lai\":\"VN-30\",\"Ha Giang\":\"VN-03\",\"Ha Nam\":\"VN-63\",\"Ha Noi\":\"VN-HN\",\"Ha Tinh\":\"VN-23\",\"Hai Duong\":\"VN-61\",\"Hai Phong\":\"VN-HP\",\"Ho Chi Minh\":\"VN-SG\",\"Hoa Binh\":\"VN-14\",\"Hung Yen\":\"VN-66\",\"Khanh Hoa\":\"VN-34\",\"Kien Giang\":\"VN-47\",\"Kon Tum\":\"VN-28\",\"Lai Chau\":\"VN-01\",\"Lam Dong\":\"VN-35\",\"Lang Son\":\"VN-09\",\"Lao Cai\":\"VN-02\",\"Long An\":\"VN-41\",\"Nam Dinh\":\"VN-67\",\"Nghe An\":\"VN-22\",\"Ninh Binh\":\"VN-18\",\"Ninh Thuan\":\"VN-36\",\"Phu Tho\":\"VN-68\",\"Phu Yen\":\"VN-32\",\"Quang Binh\":\"VN-24\",\"Quang Nam\":\"VN-27\",\"Quang Ngai\":\"VN-29\",\"Quang Ninh\":\"VN-13\",\"Quang Tri\":\"VN-25\",\"Soc Trang\":\"VN-52\",\"Son La\":\"VN-05\",\"Tay Ninh\":\"VN-37\",\"Thai Binh\":\"VN-20\",\"Thai Nguyen\":\"VN-69\",\"Thanh Hoa\":\"VN-21\",\"Thua Thien-Hue\":\"VN-26\",\"Tien Giang\":\"VN-46\",\"Tra Vinh\":\"VN-51\",\"Tuyen Quang\":\"VN-07\",\"Vinh Long\":\"VN-49\",\"Vinh Phuc\":\"VN-70\",\"Yen Bai\":\"VN-06\"},\"VU\":{\"Shefa\":\"VU-SEE\",\"Tafea\":\"VU-TAE\",\"Torba\":\"VU-TOB\"},\"FI\":{\"Etela-Karjala\":\"FI-02\",\"Etela-Pohjanmaa\":\"FI-03\",\"Etela-Savo\":\"FI-04\",\"Kainuu\":\"FI-05\",\"Kanta-Hame\":\"FI-06\",\"Keski-Pohjanmaa\":\"FI-07\",\"Keski-Suomi\":\"FI-08\",\"Kymenlaakso\":\"FI-09\",\"Lappi\":\"FI-10\",\"Paijat-Hame\":\"FI-16\",\"Pirkanmaa\":\"FI-11\",\"Pohjanmaa\":\"FI-12\",\"Pohjois-Karjala\":\"FI-13\",\"Pohjois-Pohjanmaa\":\"FI-14\",\"Pohjois-Savo\":\"FI-15\",\"Satakunta\":\"FI-17\",\"Uusimaa\":\"FI-18\",\"Varsinais-Suomi\":\"FI-19\"},\"FJ\":{\"Central\":\"FJ-C\",\"Eastern\":\"FJ-E\",\"Northern\":\"FJ-N\",\"Rotuma\":\"FJ-R\",\"Western\":\"FJ-W\"},\"FK\":{\"Falkland Islands (Malvinas)\":\"\"},\"FM\":{\"Chuuk\":\"FM-TRK\",\"Kosrae\":\"FM-KSA\",\"Pohnpei\":\"FM-PNI\",\"Yap\":\"FM-YAP\"},\"FO\":{\"Eysturoy\":\"\",\"Nordoyar\":\"\",\"Streymoy\":\"\",\"Suduroy\":\"\",\"Vagar\":\"\"},\"FR\":{\"Auvergne-Rhone-Alpes\":\"FR-ARA\",\"Bourgogne-Franche-Comte\":\"FR-BFC\",\"Bretagne\":\"FR-BRE\",\"Centre-Val de Loire\":\"FR-CVL\",\"Corse\":\"FR-20R\",\"Grand-Est\":\"FR-GES\",\"Hauts-de-France\":\"FR-HDF\",\"Ile-de-France\":\"FR-IDF\",\"Normandie\":\"FR-NOR\",\"Nouvelle-Aquitaine\":\"FR-NAQ\",\"Occitanie\":\"FR-OCC\",\"Pays-de-la-Loire\":\"FR-PDL\",\"Provence-Alpes-Cote-d\'Azur\":\"FR-PAC\"},\"WF\":{\"Sigave\":\"WF-SG\",\"Uvea\":\"WF-UV\"},\"GA\":{\"Estuaire\":\"GA-1\",\"Haut-Ogooue\":\"GA-2\",\"Ngounie\":\"GA-4\",\"Ogooue-Maritime\":\"GA-8\",\"Woleu-Ntem\":\"GA-9\"},\"GB\":{\"England\":\"GB-ENG\",\"Northern Ireland\":\"GB-NIR\",\"Scotland\":\"GB-SCT\",\"Wales\":\"GB-WLS\"},\"WS\":{\"Atua\":\"WS-AT\",\"Fa\'asaleleaga\":\"WS-FA\",\"Tuamasaga\":\"WS-TU\"},\"GD\":{\"Saint Andrew\":\"GD-01\",\"Saint David\":\"GD-02\",\"Saint George\":\"GD-03\",\"Saint John\":\"GD-04\",\"Saint Mark\":\"GD-05\",\"Southern Grenadine Islands\":\"GD-10\"},\"GE\":{\"Abkhazia\":\"GE-AB\",\"Ajaria\":\"GE-AJ\",\"Guria\":\"GE-GU\",\"Imereti\":\"GE-IM\",\"K\'akheti\":\"GE-KA\",\"Kvemo Kartli\":\"GE-KK\",\"Mtskheta-Mtianeti\":\"GE-MM\",\"Rach\'a-Lechkhumi-Kvemo Svaneti\":\"GE-RL\",\"Samegrelo-Zemo Svaneti\":\"GE-SZ\",\"Samtskhe-Javakheti\":\"GE-SJ\",\"Shida Kartli\":\"GE-SK\",\"Tbilisi\":\"GE-TB\"},\"GF\":{\"Guyane\":\"\"},\"GG\":{\"Guernsey\":\"\"},\"GH\":{\"Ashanti\":\"GH-AH\",\"Bono\":\"GH-BO\",\"Bono East\":\"GH-BE\",\"Central\":\"GH-CP\",\"Eastern\":\"GH-EP\",\"Greater Accra\":\"GH-AA\",\"Northern\":\"GH-NP\",\"Upper East\":\"GH-UE\",\"Volta\":\"GH-TV\",\"Western\":\"GH-WP\"},\"GI\":{\"Gibraltar\":\"\"},\"GL\":{\"Avannaata Kommunia\":\"GL-AV\",\"Kommune Kujalleq\":\"GL-KU\",\"Kommune Qeqertalik\":\"GL-QT\",\"Kommuneqarfik Sermersooq\":\"GL-SM\",\"Qeqqata Kommunia\":\"GL-QE\"},\"GM\":{\"Banjul\":\"GM-B\",\"Central River\":\"GM-M\",\"Lower River\":\"GM-L\",\"North Bank\":\"GM-N\",\"Upper River\":\"GM-U\",\"Western\":\"GM-W\"},\"GN\":{\"Boffa\":\"GN-BF\",\"Boke\":\"GN-B\",\"Conakry\":\"GN-C\",\"Coyah\":\"GN-CO\",\"Dabola\":\"GN-DB\",\"Kankan\":\"GN-K\",\"Kindia\":\"GN-D\",\"Labe\":\"GN-LA\",\"Nzerekore\":\"GN-N\",\"Siguiri\":\"GN-SI\"},\"GP\":{\"Guadeloupe\":\"\"},\"GQ\":{\"Bioko Norte\":\"GQ-BN\",\"Litoral\":\"GQ-LI\",\"Wele-Nzas\":\"GQ-WN\"},\"GR\":{\"Agion Oros\":\"GR-69\",\"Anatoliki Makedonia kai Thraki\":\"GR-A\",\"Attiki\":\"GR-I\",\"Dytiki Ellada\":\"GR-G\",\"Dytiki Makedonia\":\"GR-C\",\"Ionia Nisia\":\"GR-F\",\"Ipeiros\":\"GR-D\",\"Kentriki Makedonia\":\"GR-B\",\"Kriti\":\"GR-M\",\"Notio Aigaio\":\"GR-L\",\"Peloponnisos\":\"GR-J\",\"Sterea Ellada\":\"GR-H\",\"Thessalia\":\"GR-E\",\"Voreio Aigaio\":\"GR-K\"},\"GS\":{\"South Georgia and the South Sandwich Islands\":\"\"},\"GT\":{\"Alta Verapaz\":\"GT-AV\",\"Baja Verapaz\":\"GT-BV\",\"Chimaltenango\":\"GT-CM\",\"Chiquimula\":\"GT-CQ\",\"El Progreso\":\"GT-PR\",\"Escuintla\":\"GT-ES\",\"Guatemala\":\"GT-GU\",\"Huehuetenango\":\"GT-HU\",\"Izabal\":\"GT-IZ\",\"Jalapa\":\"GT-JA\",\"Jutiapa\":\"GT-JU\",\"Peten\":\"GT-PE\",\"Quetzaltenango\":\"GT-QZ\",\"Quiche\":\"GT-QC\",\"Retalhuleu\":\"GT-RE\",\"Sacatepequez\":\"GT-SA\",\"San Marcos\":\"GT-SM\",\"Santa Rosa\":\"GT-SR\",\"Solola\":\"GT-SO\",\"Suchitepequez\":\"GT-SU\",\"Totonicapan\":\"GT-TO\",\"Zacapa\":\"GT-ZA\"},\"GU\":{\"Agat\":\"\",\"Barrigada\":\"\",\"Chalan Pago-Ordot\":\"\",\"Dededo\":\"\",\"Hagatna\":\"\",\"Inarajan\":\"\",\"Mangilao\":\"\",\"Mongmong-Toto-Maite\":\"\",\"Piti\":\"\",\"Santa Rita\":\"\",\"Sinajana\":\"\",\"Talofofo\":\"\",\"Tamuning-Tumon-Harmon\":\"\",\"Yigo\":\"\",\"Yona\":\"\"},\"GW\":{\"Bissau\":\"GW-BS\",\"Gabu\":\"GW-GA\"},\"GY\":{\"Barima-Waini\":\"GY-BA\",\"Cuyuni-Mazaruni\":\"GY-CU\",\"Demerara-Mahaica\":\"GY-DE\",\"East Berbice-Corentyne\":\"GY-EB\",\"Essequibo Islands-West Demerara\":\"GY-ES\",\"Mahaica-Berbice\":\"GY-MA\",\"Potaro-Siparuni\":\"GY-PT\",\"Upper Demerara-Berbice\":\"GY-UD\"},\"HK\":{\"Hong Kong\":\"CN-HK\"},\"HN\":{\"Atlantida\":\"HN-AT\",\"Choluteca\":\"HN-CH\",\"Colon\":\"HN-CL\",\"Comayagua\":\"HN-CM\",\"Copan\":\"HN-CP\",\"Cortes\":\"HN-CR\",\"El Paraiso\":\"HN-EP\",\"Francisco Morazan\":\"HN-FM\",\"Intibuca\":\"HN-IN\",\"Islas de la Bahia\":\"HN-IB\",\"La Paz\":\"HN-LP\",\"Lempira\":\"HN-LE\",\"Ocotepeque\":\"HN-OC\",\"Olancho\":\"HN-OL\",\"Santa Barbara\":\"HN-SB\",\"Valle\":\"HN-VA\",\"Yoro\":\"HN-YO\"},\"HR\":{\"Bjelovarsko-bilogorska zupanija\":\"HR-07\",\"Brodsko-posavska zupanija\":\"HR-12\",\"Dubrovacko-neretvanska zupanija\":\"HR-19\",\"Grad Zagreb\":\"HR-21\",\"Istarska zupanija\":\"HR-18\",\"Karlovacka zupanija\":\"HR-04\",\"Koprivnicko-krizevacka zupanija\":\"HR-06\",\"Krapinsko-zagorska zupanija\":\"HR-02\",\"Licko-senjska zupanija\":\"HR-09\",\"Medimurska zupanija\":\"HR-20\",\"Osjecko-baranjska zupanija\":\"HR-14\",\"Pozesko-slavonska zupanija\":\"HR-11\",\"Primorsko-goranska zupanija\":\"HR-08\",\"Sibensko-kninska zupanija\":\"HR-15\",\"Sisacko-moslavacka zupanija\":\"HR-03\",\"Splitsko-dalmatinska zupanija\":\"HR-17\",\"Varazdinska zupanija\":\"HR-05\",\"Viroviticko-podravska zupanija\":\"HR-10\",\"Vukovarsko-srijemska zupanija\":\"HR-16\",\"Zadarska zupanija\":\"HR-13\",\"Zagrebacka zupanija\":\"HR-01\"},\"YE\":{\"\'Adan\":\"YE-AD\",\"\'Amran\":\"YE-AM\",\"Abyan\":\"YE-AB\",\"Ad Dali\'\":\"YE-DA\",\"Al Bayda\'\":\"YE-BA\",\"Al Hudaydah\":\"YE-HU\",\"Al Mahrah\":\"YE-MR\",\"Amanat al \'Asimah\":\"YE-SA\",\"Dhamar\":\"YE-DH\",\"Hadramawt\":\"YE-HD\",\"Hajjah\":\"YE-HJ\",\"Ibb\":\"YE-IB\",\"Lahij\":\"YE-LA\",\"Ma\'rib\":\"YE-MA\",\"Sa\'dah\":\"YE-SD\",\"San\'a\'\":\"YE-SN\",\"Shabwah\":\"YE-SH\",\"Ta\'izz\":\"YE-TA\"},\"HT\":{\"Artibonite\":\"HT-AR\",\"Centre\":\"HT-CE\",\"Nord\":\"HT-ND\",\"Nord-Est\":\"HT-NE\",\"Ouest\":\"HT-OU\",\"Sud\":\"HT-SD\",\"Sud-Est\":\"HT-SE\"},\"HU\":{\"Bacs-Kiskun\":\"HU-BK\",\"Baranya\":\"HU-BA\",\"Bekes\":\"HU-BE\",\"Borsod-Abauj-Zemplen\":\"HU-BZ\",\"Budapest\":\"HU-BU\",\"Csongrad\":\"HU-CS\",\"Fejer\":\"HU-FE\",\"Gyor-Moson-Sopron\":\"HU-GS\",\"Hajdu-Bihar\":\"HU-HB\",\"Heves\":\"HU-HE\",\"Jasz-Nagykun-Szolnok\":\"HU-JN\",\"Komarom-Esztergom\":\"HU-KE\",\"Nograd\":\"HU-NO\",\"Pest\":\"HU-PE\",\"Somogy\":\"HU-SO\",\"Szabolcs-Szatmar-Bereg\":\"HU-SZ\",\"Tolna\":\"HU-TO\",\"Vas\":\"HU-VA\",\"Veszprem\":\"HU-VE\",\"Zala\":\"HU-ZA\"},\"YT\":{\"Bandraboua\":\"\",\"Bandrele\":\"\",\"Mamoudzou\":\"\",\"Ouangani\":\"\",\"Pamandzi\":\"\",\"Sada\":\"\"},\"ID\":{\"Aceh\":\"ID-AC\",\"Bali\":\"ID-BA\",\"Banten\":\"ID-BT\",\"Bengkulu\":\"ID-BE\",\"Gorontalo\":\"ID-GO\",\"Jakarta Raya\":\"ID-JK\",\"Jambi\":\"ID-JA\",\"Jawa Barat\":\"ID-JB\",\"Jawa Tengah\":\"ID-JT\",\"Jawa Timur\":\"ID-JI\",\"Kalimantan Barat\":\"ID-KB\",\"Kalimantan Selatan\":\"ID-KS\",\"Kalimantan Tengah\":\"ID-KT\",\"Kalimantan Timur\":\"ID-KI\",\"Kalimantan Utara\":\"ID-KU\",\"Kepulauan Bangka Belitung\":\"ID-BB\",\"Kepulauan Riau\":\"ID-KR\",\"Lampung\":\"ID-LA\",\"Maluku\":\"ID-ML\",\"Maluku Utara\":\"ID-MU\",\"Nusa Tenggara Barat\":\"ID-NB\",\"Nusa Tenggara Timur\":\"ID-NT\",\"Papua\":\"ID-PP\",\"Papua Barat\":\"ID-PB\",\"Riau\":\"ID-RI\",\"Sulawesi Barat\":\"ID-SR\",\"Sulawesi Selatan\":\"ID-SN\",\"Sulawesi Tengah\":\"ID-ST\",\"Sulawesi Tenggara\":\"ID-SG\",\"Sulawesi Utara\":\"ID-SA\",\"Sumatera Barat\":\"ID-SB\",\"Sumatera Selatan\":\"ID-SS\",\"Sumatera Utara\":\"ID-SU\",\"Yogyakarta\":\"ID-YO\"},\"IE\":{\"Carlow\":\"IE-CW\",\"Cavan\":\"IE-CN\",\"Clare\":\"IE-CE\",\"Cork\":\"IE-CO\",\"Donegal\":\"IE-DL\",\"Dublin\":\"IE-D\",\"Galway\":\"IE-G\",\"Kerry\":\"IE-KY\",\"Kildare\":\"IE-KE\",\"Kilkenny\":\"IE-KK\",\"Laois\":\"IE-LS\",\"Leitrim\":\"IE-LM\",\"Limerick\":\"IE-LK\",\"Longford\":\"IE-LD\",\"Louth\":\"IE-LH\",\"Mayo\":\"IE-MO\",\"Meath\":\"IE-MH\",\"Monaghan\":\"IE-MN\",\"Offaly\":\"IE-OY\",\"Roscommon\":\"IE-RN\",\"Sligo\":\"IE-SO\",\"Tipperary\":\"IE-TA\",\"Waterford\":\"IE-WD\",\"Westmeath\":\"IE-WH\",\"Wexford\":\"IE-WX\",\"Wicklow\":\"IE-WW\"},\"IL\":{\"HaDarom\":\"IL-D\",\"HaMerkaz\":\"IL-M\",\"HaTsafon\":\"IL-Z\",\"Hefa\":\"IL-HA\",\"Tel Aviv\":\"IL-TA\",\"Yerushalayim\":\"IL-JM\"},\"IM\":{\"Isle of Man\":\"\"},\"IN\":{\"Andaman and Nicobar Islands\":\"IN-AN\",\"Andhra Pradesh\":\"IN-AP\",\"Arunachal Pradesh\":\"IN-AR\",\"Assam\":\"IN-AS\",\"Bihar\":\"IN-BR\",\"Chandigarh\":\"IN-CH\",\"Chhattisgarh\":\"IN-CT\",\"Dadra and Nagar Haveli\":\"IN-DN\",\"Dadra and Nagar Haveli and Daman and Diu\":\"IN-DH\",\"Delhi\":\"IN-DL\",\"Goa\":\"IN-GA\",\"Gujarat\":\"IN-GJ\",\"Haryana\":\"IN-HR\",\"Himachal Pradesh\":\"IN-HP\",\"Jammu and Kashmir\":\"IN-JK\",\"Jharkhand\":\"IN-JH\",\"Karnataka\":\"IN-KA\",\"Kerala\":\"IN-KL\",\"Lakshadweep\":\"IN-LD\",\"Madhya Pradesh\":\"IN-MP\",\"Maharashtra\":\"IN-MH\",\"Manipur\":\"IN-MN\",\"Meghalaya\":\"IN-ML\",\"Mizoram\":\"IN-MZ\",\"Nagaland\":\"IN-NL\",\"Odisha\":\"IN-OR\",\"Puducherry\":\"IN-PY\",\"Punjab\":\"IN-PB\",\"Rajasthan\":\"IN-RJ\",\"Sikkim\":\"IN-SK\",\"Tamil Nadu\":\"IN-TN\",\"Telangana\":\"IN-TG\",\"Tripura\":\"IN-TR\",\"Uttar Pradesh\":\"IN-UP\",\"Uttarakhand\":\"IN-UT\",\"West Bengal\":\"IN-WB\"},\"IO\":{\"British Indian Ocean Territory\":\"\"},\"ZA\":{\"Eastern Cape\":\"ZA-EC\",\"Free State\":\"ZA-FS\",\"Gauteng\":\"ZA-GP\",\"Kwazulu-Natal\":\"ZA-KZN\",\"Limpopo\":\"ZA-LP\",\"Mpumalanga\":\"ZA-MP\",\"North-West\":\"ZA-NW\",\"Northern Cape\":\"ZA-NC\",\"Western Cape\":\"ZA-WC\"},\"IQ\":{\"Al Anbar\":\"IQ-AN\",\"Al Basrah\":\"IQ-BA\",\"Al Muthanna\":\"IQ-MU\",\"Al Qadisiyah\":\"IQ-QA\",\"An Najaf\":\"IQ-NA\",\"Arbil\":\"IQ-AR\",\"As Sulaymaniyah\":\"IQ-SU\",\"Babil\":\"IQ-BB\",\"Baghdad\":\"IQ-BG\",\"Dahuk\":\"IQ-DA\",\"Dhi Qar\":\"IQ-DQ\",\"Diyala\":\"IQ-DI\",\"Karbala\'\":\"IQ-KA\",\"Kirkuk\":\"IQ-KI\",\"Maysan\":\"IQ-MA\",\"Ninawa\":\"IQ-NI\",\"Salah ad Din\":\"IQ-SD\",\"Wasit\":\"IQ-WA\"},\"IR\":{\"Alborz\":\"IR-30\",\"Ardabil\":\"IR-24\",\"Azarbayjan-e Gharbi\":\"IR-04\",\"Azarbayjan-e Sharqi\":\"IR-03\",\"Bushehr\":\"IR-18\",\"Chahar Mahal va Bakhtiari\":\"IR-14\",\"Esfahan\":\"IR-10\",\"Fars\":\"IR-07\",\"Gilan\":\"IR-01\",\"Golestan\":\"IR-27\",\"Hamadan\":\"IR-13\",\"Hormozgan\":\"IR-22\",\"Ilam\":\"IR-16\",\"Kerman\":\"IR-08\",\"Kermanshah\":\"IR-05\",\"Khorasan-e Jonubi\":\"IR-29\",\"Khorasan-e Razavi\":\"IR-09\",\"Khorasan-e Shomali\":\"IR-28\",\"Khuzestan\":\"IR-06\",\"Kohgiluyeh va Bowyer Ahmad\":\"IR-17\",\"Kordestan\":\"IR-12\",\"Lorestan\":\"IR-15\",\"Markazi\":\"IR-00\",\"Mazandaran\":\"IR-02\",\"Qazvin\":\"IR-26\",\"Qom\":\"IR-25\",\"Semnan\":\"IR-20\",\"Sistan va Baluchestan\":\"IR-11\",\"Tehran\":\"IR-23\",\"Yazd\":\"IR-21\",\"Zanjan\":\"IR-19\"},\"IS\":{\"Austurland\":\"IS-7\",\"Hofudborgarsvaedi\":\"IS-1\",\"Nordurland eystra\":\"IS-6\",\"Nordurland vestra\":\"IS-5\",\"Sudurland\":\"IS-8\",\"Sudurnes\":\"IS-2\",\"Vestfirdir\":\"IS-4\",\"Vesturland\":\"IS-3\"},\"IT\":{\"Abruzzo\":\"IT-65\",\"Basilicata\":\"IT-77\",\"Calabria\":\"IT-78\",\"Campania\":\"IT-72\",\"Emilia-Romagna\":\"IT-45\",\"Friuli-Venezia Giulia\":\"IT-36\",\"Lazio\":\"IT-62\",\"Liguria\":\"IT-42\",\"Lombardia\":\"IT-25\",\"Marche\":\"IT-57\",\"Molise\":\"IT-67\",\"Piemonte\":\"IT-21\",\"Puglia\":\"IT-75\",\"Sardegna\":\"IT-88\",\"Sicilia\":\"IT-82\",\"Toscana\":\"IT-52\",\"Trentino-Alto Adige\":\"IT-32\",\"Umbria\":\"IT-55\",\"Valle d\'Aosta\":\"IT-23\",\"Veneto\":\"IT-34\"},\"ZM\":{\"Central\":\"ZM-02\",\"Copperbelt\":\"ZM-08\",\"Eastern\":\"ZM-03\",\"Luapula\":\"ZM-04\",\"Lusaka\":\"ZM-09\",\"Muchinga\":\"ZM-10\",\"North-Western\":\"ZM-06\",\"Northern\":\"ZM-05\",\"Southern\":\"ZM-07\",\"Western\":\"ZM-01\"},\"JE\":{\"Jersey\":\"\"},\"ZW\":{\"Bulawayo\":\"ZW-BU\",\"Harare\":\"ZW-HA\",\"Manicaland\":\"ZW-MA\",\"Mashonaland Central\":\"ZW-MC\",\"Mashonaland East\":\"ZW-ME\",\"Mashonaland West\":\"ZW-MW\",\"Masvingo\":\"ZW-MV\",\"Matabeleland North\":\"ZW-MN\",\"Matabeleland South\":\"ZW-MS\",\"Midlands\":\"ZW-MI\"},\"JM\":{\"Clarendon\":\"JM-13\",\"Hanover\":\"JM-09\",\"Kingston\":\"JM-01\",\"Manchester\":\"JM-12\",\"Portland\":\"JM-04\",\"Saint Andrew\":\"JM-02\",\"Saint Ann\":\"JM-06\",\"Saint Catherine\":\"JM-14\",\"Saint Elizabeth\":\"JM-11\",\"Saint James\":\"JM-08\",\"Saint Mary\":\"JM-05\",\"Saint Thomas\":\"JM-03\",\"Trelawny\":\"JM-07\",\"Westmoreland\":\"JM-10\"},\"JO\":{\"\'Ajlun\":\"JO-AJ\",\"Al \'Aqabah\":\"JO-AQ\",\"Al \'Asimah\":\"JO-AM\",\"Al Balqa\'\":\"JO-BA\",\"Al Karak\":\"JO-KA\",\"Al Mafraq\":\"JO-MA\",\"At Tafilah\":\"JO-AT\",\"Az Zarqa\'\":\"JO-AZ\",\"Irbid\":\"JO-IR\",\"Jarash\":\"JO-JA\",\"Ma\'an\":\"JO-MN\",\"Madaba\":\"JO-MD\"},\"JP\":{\"Aichi\":\"JP-23\",\"Akita\":\"JP-05\",\"Aomori\":\"JP-02\",\"Chiba\":\"JP-12\",\"Ehime\":\"JP-38\",\"Fukui\":\"JP-18\",\"Fukuoka\":\"JP-40\",\"Fukushima\":\"JP-07\",\"Gifu\":\"JP-21\",\"Gunma\":\"JP-10\",\"Hiroshima\":\"JP-34\",\"Hokkaido\":\"JP-01\",\"Hyogo\":\"JP-28\",\"Ibaraki\":\"JP-08\",\"Ishikawa\":\"JP-17\",\"Iwate\":\"JP-03\",\"Kagawa\":\"JP-37\",\"Kagoshima\":\"JP-46\",\"Kanagawa\":\"JP-14\",\"Kochi\":\"JP-39\",\"Kumamoto\":\"JP-43\",\"Kyoto\":\"JP-26\",\"Mie\":\"JP-24\",\"Miyagi\":\"JP-04\",\"Miyazaki\":\"JP-45\",\"Nagano\":\"JP-20\",\"Nagasaki\":\"JP-42\",\"Nara\":\"JP-29\",\"Niigata\":\"JP-15\",\"Oita\":\"JP-44\",\"Okayama\":\"JP-33\",\"Okinawa\":\"JP-47\",\"Osaka\":\"JP-27\",\"Saga\":\"JP-41\",\"Saitama\":\"JP-11\",\"Shiga\":\"JP-25\",\"Shimane\":\"JP-32\",\"Shizuoka\":\"JP-22\",\"Tochigi\":\"JP-09\",\"Tokushima\":\"JP-36\",\"Tokyo\":\"JP-13\",\"Tottori\":\"JP-31\",\"Toyama\":\"JP-16\",\"Wakayama\":\"JP-30\",\"Yamagata\":\"JP-06\",\"Yamaguchi\":\"JP-35\",\"Yamanashi\":\"JP-19\"},\"KE\":{\"Baringo\":\"KE-01\",\"Bomet\":\"KE-02\",\"Bungoma\":\"KE-03\",\"Busia\":\"KE-04\",\"Elgeyo/Marakwet\":\"KE-05\",\"Embu\":\"KE-06\",\"Garissa\":\"KE-07\",\"Homa Bay\":\"KE-08\",\"Isiolo\":\"KE-09\",\"Kajiado\":\"KE-10\",\"Kakamega\":\"KE-11\",\"Kericho\":\"KE-12\",\"Kiambu\":\"KE-13\",\"Kilifi\":\"KE-14\",\"Kirinyaga\":\"KE-15\",\"Kisii\":\"KE-16\",\"Kisumu\":\"KE-17\",\"Kitui\":\"KE-18\",\"Kwale\":\"KE-19\",\"Laikipia\":\"KE-20\",\"Lamu\":\"KE-21\",\"Machakos\":\"KE-22\",\"Makueni\":\"KE-23\",\"Mandera\":\"KE-24\",\"Marsabit\":\"KE-25\",\"Meru\":\"KE-26\",\"Migori\":\"KE-27\",\"Mombasa\":\"KE-28\",\"Murang\'a\":\"KE-29\",\"Nairobi City\":\"KE-30\",\"Nakuru\":\"KE-31\",\"Nandi\":\"KE-32\",\"Narok\":\"KE-33\",\"Nyamira\":\"KE-34\",\"Nyandarua\":\"KE-35\",\"Nyeri\":\"KE-36\",\"Siaya\":\"KE-38\",\"Taita/Taveta\":\"KE-39\",\"Tharaka-Nithi\":\"KE-41\",\"Trans Nzoia\":\"KE-42\",\"Turkana\":\"KE-43\",\"Uasin Gishu\":\"KE-44\",\"Wajir\":\"KE-46\"},\"KG\":{\"Batken\":\"KG-B\",\"Bishkek Shaary\":\"KG-GB\",\"Chuy\":\"KG-C\",\"Jalal-Abad\":\"KG-J\",\"Naryn\":\"KG-N\",\"Osh Shaary\":\"KG-GO\",\"Talas\":\"KG-T\",\"Ysyk-Kol\":\"KG-Y\"},\"KH\":{\"Baat Dambang\":\"KH-2\",\"Banteay Mean Choay\":\"KH-1\",\"Kampong Chaam\":\"KH-3\",\"Kampong Chhnang\":\"KH-4\",\"Kampong Spueu\":\"KH-5\",\"Kampong Thum\":\"KH-6\",\"Kampot\":\"KH-7\",\"Kandaal\":\"KH-8\",\"Kaoh Kong\":\"KH-9\",\"Kracheh\":\"KH-10\",\"Krong Kaeb\":\"KH-23\",\"Krong Pailin\":\"KH-24\",\"Mondol Kiri\":\"KH-11\",\"Phnom Penh\":\"KH-12\",\"Pousaat\":\"KH-15\",\"Preah Sihanouk\":\"KH-18\",\"Prey Veaeng\":\"KH-14\",\"Rotanak Kiri\":\"KH-16\",\"Siem Reab\":\"KH-17\",\"Stueng Traeng\":\"KH-19\",\"Svaay Rieng\":\"KH-20\",\"Taakaev\":\"KH-21\"},\"KI\":{\"Gilbert Islands\":\"KI-G\"},\"KM\":{\"Grande Comore\":\"KM-G\"},\"KN\":{\"Saint Anne Sandy Point\":\"KN-02\",\"Saint George Basseterre\":\"KN-03\",\"Saint James Windward\":\"KN-05\",\"Saint John Capisterre\":\"KN-06\",\"Saint John Figtree\":\"KN-07\",\"Saint Mary Cayon\":\"KN-08\",\"Saint Paul Capisterre\":\"KN-09\",\"Saint Paul Charlestown\":\"KN-10\",\"Saint Peter Basseterre\":\"KN-11\",\"Saint Thomas Lowland\":\"KN-12\",\"Saint Thomas Middle Island\":\"KN-13\"},\"KP\":{\"P\'yongyang\":\"KP-01\"},\"KR\":{\"Busan-gwangyeoksi\":\"KR-26\",\"Chungcheongbuk-do\":\"KR-43\",\"Chungcheongnam-do\":\"KR-44\",\"Daegu-gwangyeoksi\":\"KR-27\",\"Daejeon-gwangyeoksi\":\"KR-30\",\"Gangwon-do\":\"KR-42\",\"Gwangju-gwangyeoksi\":\"KR-29\",\"Gyeonggi-do\":\"KR-41\",\"Gyeongsangbuk-do\":\"KR-47\",\"Gyeongsangnam-do\":\"KR-48\",\"Incheon-gwangyeoksi\":\"KR-28\",\"Jeju-teukbyeoljachido\":\"KR-49\",\"Jeollabuk-do\":\"KR-45\",\"Jeollanam-do\":\"KR-46\",\"Seoul-teukbyeolsi\":\"KR-11\",\"Ulsan-gwangyeoksi\":\"KR-31\"},\"KW\":{\"Al \'Asimah\":\"KW-KU\",\"Al Ahmadi\":\"KW-AH\",\"Al Farwaniyah\":\"KW-FA\",\"Al Jahra\'\":\"KW-JA\",\"Hawalli\":\"KW-HA\",\"Mubarak al Kabir\":\"KW-MU\"},\"KY\":{\"Cayman Islands\":\"\"},\"KZ\":{\"Almaty\":\"KZ-ALA\",\"Almaty oblysy\":\"KZ-ALM\",\"Aqmola oblysy\":\"KZ-AKM\",\"Aqtobe oblysy\":\"KZ-AKT\",\"Atyrau oblysy\":\"KZ-ATY\",\"Batys Qazaqstan oblysy\":\"KZ-ZAP\",\"Mangghystau oblysy\":\"KZ-MAN\",\"Nur-Sultan\":\"KZ-AST\",\"Ongtustik Qazaqstan oblysy\":\"KZ-YUZ\",\"Pavlodar oblysy\":\"KZ-PAV\",\"Qaraghandy oblysy\":\"KZ-KAR\",\"Qostanay oblysy\":\"KZ-KUS\",\"Qyzylorda oblysy\":\"KZ-KZY\",\"Shyghys Qazaqstan oblysy\":\"KZ-VOS\",\"Shymkent\":\"KZ-SHY\",\"Soltustik Qazaqstan oblysy\":\"KZ-SEV\",\"Zhambyl oblysy\":\"KZ-ZHA\"},\"LA\":{\"Bolikhamxai\":\"LA-BL\",\"Champasak\":\"LA-CH\",\"Houaphan\":\"LA-HO\",\"Khammouan\":\"LA-KH\",\"Louangphabang\":\"LA-LP\",\"Oudomxai\":\"LA-OU\",\"Phongsali\":\"LA-PH\",\"Savannakhet\":\"LA-SV\",\"Viangchan\":\"LA-VI\",\"Xaignabouli\":\"LA-XA\",\"Xekong\":\"LA-XE\",\"Xiangkhouang\":\"LA-XI\"},\"LB\":{\"Aakkar\":\"LB-AK\",\"Baalbek-Hermel\":\"LB-BH\",\"Beqaa\":\"LB-BI\",\"Beyrouth\":\"LB-BA\",\"Liban-Nord\":\"LB-AS\",\"Liban-Sud\":\"LB-JA\",\"Mont-Liban\":\"LB-JL\",\"Nabatiye\":\"LB-NA\"},\"LC\":{\"Anse la Raye\":\"LC-01\",\"Castries\":\"LC-02\",\"Dennery\":\"LC-05\",\"Gros Islet\":\"LC-06\",\"Laborie\":\"LC-07\",\"Soufriere\":\"LC-10\",\"Vieux Fort\":\"LC-11\"},\"LI\":{\"Balzers\":\"LI-01\",\"Eschen\":\"LI-02\",\"Gamprin\":\"LI-03\",\"Mauren\":\"LI-04\",\"Planken\":\"LI-05\",\"Ruggell\":\"LI-06\",\"Schaan\":\"LI-07\",\"Triesen\":\"LI-09\",\"Triesenberg\":\"LI-10\",\"Vaduz\":\"LI-11\"},\"LK\":{\"Central Province\":\"LK-2\",\"Eastern Province\":\"LK-5\",\"North Central Province\":\"LK-7\",\"North Western Province\":\"LK-6\",\"Northern Province\":\"LK-4\",\"Sabaragamuwa Province\":\"LK-9\",\"Southern Province\":\"LK-3\",\"Uva Province\":\"LK-8\",\"Western Province\":\"LK-1\"},\"LR\":{\"Bomi\":\"LR-BM\",\"Grand Bassa\":\"LR-GB\",\"Grand Gedeh\":\"LR-GG\",\"Margibi\":\"LR-MG\",\"Montserrado\":\"LR-MO\",\"Sinoe\":\"LR-SI\"},\"LS\":{\"Leribe\":\"LS-C\",\"Mafeteng\":\"LS-E\",\"Maseru\":\"LS-A\",\"Mokhotlong\":\"LS-J\",\"Quthing\":\"LS-G\",\"Thaba-Tseka\":\"LS-K\"},\"LT\":{\"Alytaus apskritis\":\"LT-AL\",\"Kauno apskritis\":\"LT-KU\",\"Klaipedos apskritis\":\"LT-KL\",\"Marijampoles apskritis\":\"LT-MR\",\"Panevezio apskritis\":\"LT-PN\",\"Siauliu apskritis\":\"LT-SA\",\"Taurages apskritis\":\"LT-TA\",\"Telsiu apskritis\":\"LT-TE\",\"Utenos apskritis\":\"LT-UT\",\"Vilniaus apskritis\":\"LT-VL\"},\"LU\":{\"Capellen\":\"LU-CA\",\"Clervaux\":\"LU-CL\",\"Diekirch\":\"LU-DI\",\"Echternach\":\"LU-EC\",\"Esch-sur-Alzette\":\"LU-ES\",\"Grevenmacher\":\"LU-GR\",\"Luxembourg\":\"LU-LU\",\"Mersch\":\"LU-ME\",\"Redange\":\"LU-RD\",\"Remich\":\"LU-RM\",\"Vianden\":\"LU-VD\",\"Wiltz\":\"LU-WI\"},\"LV\":{\"Adazu novads\":\"LV-011\",\"Aglonas novads\":\"LV-001\",\"Aizkraukles novads\":\"LV-002\",\"Aizputes novads\":\"LV-003\",\"Alojas novads\":\"LV-005\",\"Aluksnes novads\":\"LV-007\",\"Auces novads\":\"LV-010\",\"Babites novads\":\"LV-012\",\"Baldones novads\":\"LV-013\",\"Balvu novads\":\"LV-015\",\"Bauskas novads\":\"LV-016\",\"Beverinas novads\":\"LV-017\",\"Brocenu novads\":\"LV-018\",\"Carnikavas novads\":\"LV-020\",\"Cesu novads\":\"LV-022\",\"Cesvaines novads\":\"LV-021\",\"Dagdas novads\":\"LV-024\",\"Daugavpils novads\":\"LV-025\",\"Dobeles novads\":\"LV-026\",\"Dundagas novads\":\"LV-027\",\"Engures novads\":\"LV-029\",\"Erglu novads\":\"LV-030\",\"Gulbenes novads\":\"LV-033\",\"Iecavas novads\":\"LV-034\",\"Ikskiles novads\":\"LV-035\",\"Incukalna novads\":\"LV-037\",\"Jaunjelgavas novads\":\"LV-038\",\"Jaunpiebalgas novads\":\"LV-039\",\"Jaunpils novads\":\"LV-040\",\"Jekabpils novads\":\"LV-042\",\"Jelgava\":\"LV-JEL\",\"Jelgavas novads\":\"LV-041\",\"Jurmala\":\"LV-JUR\",\"Kandavas novads\":\"LV-043\",\"Kekavas novads\":\"LV-052\",\"Kokneses novads\":\"LV-046\",\"Kraslavas novads\":\"LV-047\",\"Kuldigas novads\":\"LV-050\",\"Lielvardes novads\":\"LV-053\",\"Liepaja\":\"LV-LPX\",\"Limbazu novads\":\"LV-054\",\"Livanu novads\":\"LV-056\",\"Lubanas novads\":\"LV-057\",\"Ludzas novads\":\"LV-058\",\"Madonas novads\":\"LV-059\",\"Malpils novads\":\"LV-061\",\"Nauksenu novads\":\"LV-064\",\"Ogres novads\":\"LV-067\",\"Olaines novads\":\"LV-068\",\"Ozolnieku novads\":\"LV-069\",\"Preilu novads\":\"LV-073\",\"Priekules novads\":\"LV-075\",\"Rezeknes novads\":\"LV-077\",\"Riebinu novads\":\"LV-078\",\"Riga\":\"LV-RIX\",\"Ropazu novads\":\"LV-080\",\"Rundales novads\":\"LV-083\",\"Salaspils novads\":\"LV-087\",\"Saldus novads\":\"LV-088\",\"Saulkrastu novads\":\"LV-089\",\"Sejas novads\":\"LV-090\",\"Siguldas novads\":\"LV-091\",\"Skrundas novads\":\"LV-093\",\"Smiltenes novads\":\"LV-094\",\"Stopinu novads\":\"LV-095\",\"Talsu novads\":\"LV-097\",\"Tukuma novads\":\"LV-099\",\"Vainodes novads\":\"LV-100\",\"Valkas novads\":\"LV-101\",\"Valmiera\":\"LV-VMR\",\"Varkavas novads\":\"LV-103\",\"Vecumnieku novads\":\"LV-105\",\"Ventspils novads\":\"LV-106\",\"Zilupes novads\":\"LV-110\"},\"LY\":{\"Al Butnan\":\"LY-BU\",\"Al Jabal al Akhdar\":\"LY-JA\",\"Al Jabal al Gharbi\":\"LY-JG\",\"Al Jafarah\":\"LY-JI\",\"Al Jufrah\":\"LY-JU\",\"Al Marj\":\"LY-MJ\",\"Al Marqab\":\"LY-MB\",\"Al Wahat\":\"LY-WA\",\"An Nuqat al Khams\":\"LY-NQ\",\"Az Zawiyah\":\"LY-ZA\",\"Banghazi\":\"LY-BA\",\"Darnah\":\"LY-DR\",\"Misratah\":\"LY-MI\",\"Murzuq\":\"LY-MQ\",\"Nalut\":\"LY-NL\",\"Sabha\":\"LY-SB\",\"Surt\":\"LY-SR\",\"Tarabulus\":\"LY-TB\"},\"MA\":{\"Beni-Mellal-Khenifra\":\"MA-05\",\"Casablanca-Settat\":\"MA-06\",\"Draa-Tafilalet\":\"MA-08\",\"Fes- Meknes\":\"MA-03\",\"Guelmim-Oued Noun (EH-partial)\":\"MA-10\",\"L\'Oriental\":\"MA-02\",\"Laayoune-Sakia El Hamra (EH-partial)\":\"MA-11\",\"Marrakech-Safi\":\"MA-07\",\"Rabat-Sale-Kenitra\":\"MA-04\",\"Souss-Massa\":\"MA-09\",\"Tanger-Tetouan-Al Hoceima\":\"MA-01\"},\"MC\":{\"Fontvieille\":\"MC-FO\",\"La Condamine\":\"MC-CO\",\"Monaco-Ville\":\"MC-MO\",\"Monte-Carlo\":\"MC-MC\",\"Saint-Roman\":\"MC-SR\"},\"MD\":{\"Anenii Noi\":\"MD-AN\",\"Balti\":\"MD-BA\",\"Basarabeasca\":\"MD-BS\",\"Bender\":\"MD-BD\",\"Briceni\":\"MD-BR\",\"Cahul\":\"MD-CA\",\"Calarasi\":\"MD-CL\",\"Cantemir\":\"MD-CT\",\"Causeni\":\"MD-CS\",\"Chisinau\":\"MD-CU\",\"Cimislia\":\"MD-CM\",\"Criuleni\":\"MD-CR\",\"Donduseni\":\"MD-DO\",\"Drochia\":\"MD-DR\",\"Dubasari\":\"MD-DU\",\"Edinet\":\"MD-ED\",\"Falesti\":\"MD-FA\",\"Floresti\":\"MD-FL\",\"Gagauzia, Unitatea teritoriala autonoma\":\"MD-GA\",\"Glodeni\":\"MD-GL\",\"Hincesti\":\"MD-HI\",\"Ialoveni\":\"MD-IA\",\"Leova\":\"MD-LE\",\"Nisporeni\":\"MD-NI\",\"Ocnita\":\"MD-OC\",\"Orhei\":\"MD-OR\",\"Rezina\":\"MD-RE\",\"Riscani\":\"MD-RI\",\"Singerei\":\"MD-SI\",\"Soldanesti\":\"MD-SD\",\"Soroca\":\"MD-SO\",\"Stefan Voda\":\"MD-SV\",\"Stinga Nistrului, unitatea teritoriala din\":\"MD-SN\",\"Straseni\":\"MD-ST\",\"Taraclia\":\"MD-TA\",\"Telenesti\":\"MD-TE\",\"Ungheni\":\"MD-UN\"},\"ME\":{\"Bar\":\"ME-02\",\"Berane\":\"ME-03\",\"Bijelo Polje\":\"ME-04\",\"Budva\":\"ME-05\",\"Cetinje\":\"ME-06\",\"Danilovgrad\":\"ME-07\",\"Herceg-Novi\":\"ME-08\",\"Kolasin\":\"ME-09\",\"Kotor\":\"ME-10\",\"Niksic\":\"ME-12\",\"Plav\":\"ME-13\",\"Pljevlja\":\"ME-14\",\"Pluzine\":\"ME-15\",\"Podgorica\":\"ME-16\",\"Rozaje\":\"ME-17\",\"Tivat\":\"ME-19\",\"Tuzi\":\"ME-24\",\"Ulcinj\":\"ME-20\",\"Zabljak\":\"ME-21\"},\"MF\":{\"Saint Martin (French Part)\":\"\"},\"MG\":{\"Antananarivo\":\"MG-T\",\"Antsiranana\":\"MG-D\",\"Fianarantsoa\":\"MG-F\",\"Mahajanga\":\"MG-M\",\"Toamasina\":\"MG-A\",\"Toliara\":\"MG-U\"},\"MH\":{\"Kwajalein\":\"MH-KWA\",\"Majuro\":\"MH-MAJ\"},\"MK\":{\"Aracinovo\":\"MK-802\",\"Berovo\":\"MK-201\",\"Bitola\":\"MK-501\",\"Bogdanci\":\"MK-401\",\"Bogovinje\":\"MK-601\",\"Bosilovo\":\"MK-402\",\"Brvenica\":\"MK-602\",\"Butel\":\"MK-803\",\"Caska\":\"MK-109\",\"Centar\":\"MK-814\",\"Centar Zupa\":\"MK-313\",\"Cesinovo-Oblesevo\":\"MK-210\",\"Cucer Sandevo\":\"MK-816\",\"Debar\":\"MK-303\",\"Delcevo\":\"MK-203\",\"Dojran\":\"MK-406\",\"Dolneni\":\"MK-503\",\"Gazi Baba\":\"MK-804\",\"Gevgelija\":\"MK-405\",\"Gostivar\":\"MK-604\",\"Ilinden\":\"MK-807\",\"Jegunovce\":\"MK-606\",\"Karbinci\":\"MK-205\",\"Kavadarci\":\"MK-104\",\"Kicevo\":\"MK-307\",\"Kisela Voda\":\"MK-809\",\"Kocani\":\"MK-206\",\"Kratovo\":\"MK-701\",\"Kriva Palanka\":\"MK-702\",\"Krusevo\":\"MK-505\",\"Kumanovo\":\"MK-703\",\"Lipkovo\":\"MK-704\",\"Makedonska Kamenica\":\"MK-207\",\"Mavrovo i Rostusa\":\"MK-607\",\"Mogila\":\"MK-506\",\"Negotino\":\"MK-106\",\"Novaci\":\"MK-507\",\"Novo Selo\":\"MK-408\",\"Ohrid\":\"MK-310\",\"Pehcevo\":\"MK-208\",\"Petrovec\":\"MK-810\",\"Plasnica\":\"MK-311\",\"Prilep\":\"MK-508\",\"Probistip\":\"MK-209\",\"Radovis\":\"MK-409\",\"Rankovce\":\"MK-705\",\"Resen\":\"MK-509\",\"Rosoman\":\"MK-107\",\"Saraj\":\"MK-811\",\"Sopiste\":\"MK-812\",\"Stip\":\"MK-211\",\"Struga\":\"MK-312\",\"Strumica\":\"MK-410\",\"Studenicani\":\"MK-813\",\"Suto Orizari\":\"MK-817\",\"Sveti Nikole\":\"MK-108\",\"Tearce\":\"MK-608\",\"Tetovo\":\"MK-609\",\"Valandovo\":\"MK-403\",\"Vasilevo\":\"MK-404\",\"Veles\":\"MK-101\",\"Vinica\":\"MK-202\",\"Vrapciste\":\"MK-603\",\"Zelenikovo\":\"MK-806\",\"Zelino\":\"MK-605\"},\"ML\":{\"Bamako\":\"ML-BKO\",\"Gao\":\"ML-7\",\"Kayes\":\"ML-1\",\"Kidal\":\"ML-8\",\"Koulikoro\":\"ML-2\",\"Mopti\":\"ML-5\",\"Segou\":\"ML-4\",\"Sikasso\":\"ML-3\",\"Tombouctou\":\"ML-6\"},\"MM\":{\"Ayeyarwady\":\"MM-07\",\"Bago\":\"MM-02\",\"Chin\":\"MM-14\",\"Kachin\":\"MM-11\",\"Kayah\":\"MM-12\",\"Kayin\":\"MM-13\",\"Magway\":\"MM-03\",\"Mandalay\":\"MM-04\",\"Mon\":\"MM-15\",\"Nay Pyi Taw\":\"MM-18\",\"Rakhine\":\"MM-16\",\"Sagaing\":\"MM-01\",\"Shan\":\"MM-17\",\"Tanintharyi\":\"MM-05\",\"Yangon\":\"MM-06\"},\"MN\":{\"Bayan-Olgiy\":\"MN-071\",\"Darhan uul\":\"MN-037\",\"Dornod\":\"MN-061\",\"Govi-Altay\":\"MN-065\",\"Hovd\":\"MN-043\",\"Omnogovi\":\"MN-053\",\"Orhon\":\"MN-035\",\"Selenge\":\"MN-049\",\"Tov\":\"MN-047\",\"Ulaanbaatar\":\"MN-1\"},\"MO\":{\"Macao\":\"\"},\"MP\":{\"Northern Mariana Islands\":\"\"},\"MQ\":{\"Martinique\":\"\"},\"MR\":{\"Dakhlet Nouadhibou\":\"MR-08\",\"Gorgol\":\"MR-04\",\"Inchiri\":\"MR-12\",\"Nouakchott Ouest\":\"MR-13\",\"Tiris Zemmour\":\"MR-11\",\"Trarza\":\"MR-06\"},\"MS\":{\"Saint Anthony\":\"\",\"Saint Peter\":\"\"},\"MT\":{\"Attard\":\"MT-01\",\"Balzan\":\"MT-02\",\"Birgu\":\"MT-03\",\"Birkirkara\":\"MT-04\",\"Birzebbuga\":\"MT-05\",\"Bormla\":\"MT-06\",\"Dingli\":\"MT-07\",\"Fgura\":\"MT-08\",\"Floriana\":\"MT-09\",\"Fontana\":\"MT-10\",\"Gharb\":\"MT-14\",\"Gharghur\":\"MT-15\",\"Ghasri\":\"MT-16\",\"Ghaxaq\":\"MT-17\",\"Gudja\":\"MT-11\",\"Gzira\":\"MT-12\",\"Hamrun\":\"MT-18\",\"Iklin\":\"MT-19\",\"Isla\":\"MT-20\",\"Kalkara\":\"MT-21\",\"Kercem\":\"MT-22\",\"Kirkop\":\"MT-23\",\"Lija\":\"MT-24\",\"Luqa\":\"MT-25\",\"Marsa\":\"MT-26\",\"Marsaskala\":\"MT-27\",\"Marsaxlokk\":\"MT-28\",\"Mdina\":\"MT-29\",\"Mellieha\":\"MT-30\",\"Mgarr\":\"MT-31\",\"Mosta\":\"MT-32\",\"Mqabba\":\"MT-33\",\"Msida\":\"MT-34\",\"Mtarfa\":\"MT-35\",\"Munxar\":\"MT-36\",\"Nadur\":\"MT-37\",\"Naxxar\":\"MT-38\",\"Paola\":\"MT-39\",\"Pembroke\":\"MT-40\",\"Pieta\":\"MT-41\",\"Qala\":\"MT-42\",\"Qormi\":\"MT-43\",\"Rabat Gozo\":\"MT-45\",\"Rabat Malta\":\"MT-46\",\"Safi\":\"MT-47\",\"Saint John\":\"MT-49\",\"Saint Julian\'s\":\"MT-48\",\"Saint Lucia\'s\":\"MT-53\",\"Saint Paul\'s Bay\":\"MT-51\",\"Sannat\":\"MT-52\",\"Santa Venera\":\"MT-54\",\"Siggiewi\":\"MT-55\",\"Sliema\":\"MT-56\",\"Swieqi\":\"MT-57\",\"Ta\' Xbiex\":\"MT-58\",\"Tarxien\":\"MT-59\",\"Valletta\":\"MT-60\",\"Xaghra\":\"MT-61\",\"Xewkija\":\"MT-62\",\"Xghajra\":\"MT-63\",\"Zabbar\":\"MT-64\",\"Zebbug Gozo\":\"MT-65\",\"Zejtun\":\"MT-67\",\"Zurrieq\":\"MT-68\"},\"MU\":{\"Black River\":\"MU-BL\",\"Flacq\":\"MU-FL\",\"Grand Port\":\"MU-GP\",\"Moka\":\"MU-MO\",\"Pamplemousses\":\"MU-PA\",\"Plaines Wilhems\":\"MU-PW\",\"Port Louis\":\"MU-PL\",\"Riviere du Rempart\":\"MU-RR\",\"Rodrigues Islands\":\"MU-RO\",\"Savanne\":\"MU-SA\"},\"MV\":{\"Addu City\":\"MV-01\",\"Faadhippolhu\":\"MV-03\",\"Felidhu Atoll\":\"MV-04\",\"Hahdhunmathi\":\"MV-05\",\"Male\":\"MV-MLE\",\"Mulaku Atoll\":\"MV-12\",\"North Maalhosmadulu\":\"MV-13\",\"North Thiladhunmathi\":\"MV-07\",\"South Ari Atoll\":\"MV-00\",\"South Huvadhu Atoll\":\"MV-28\",\"South Maalhosmadulu\":\"MV-20\",\"South Miladhunmadulu\":\"MV-25\",\"South Nilandhe Atoll\":\"MV-17\",\"South Thiladhunmathi\":\"MV-23\"},\"MW\":{\"Balaka\":\"MW-BA\",\"Blantyre\":\"MW-BL\",\"Chiradzulu\":\"MW-CR\",\"Dedza\":\"MW-DE\",\"Dowa\":\"MW-DO\",\"Karonga\":\"MW-KR\",\"Lilongwe\":\"MW-LI\",\"Machinga\":\"MW-MH\",\"Mangochi\":\"MW-MG\",\"Mchinji\":\"MW-MC\",\"Mzimba\":\"MW-MZ\",\"Nkhotakota\":\"MW-NK\",\"Salima\":\"MW-SA\",\"Zomba\":\"MW-ZO\"},\"MX\":{\"Aguascalientes\":\"MX-AGU\",\"Baja California\":\"MX-BCN\",\"Baja California Sur\":\"MX-BCS\",\"Campeche\":\"MX-CAM\",\"Chiapas\":\"MX-CHP\",\"Chihuahua\":\"MX-CHH\",\"Ciudad de Mexico\":\"MX-CMX\",\"Coahuila de Zaragoza\":\"MX-COA\",\"Colima\":\"MX-COL\",\"Durango\":\"MX-DUR\",\"Guanajuato\":\"MX-GUA\",\"Guerrero\":\"MX-GRO\",\"Hidalgo\":\"MX-HID\",\"Jalisco\":\"MX-JAL\",\"Mexico\":\"MX-MEX\",\"Michoacan de Ocampo\":\"MX-MIC\",\"Morelos\":\"MX-MOR\",\"Nayarit\":\"MX-NAY\",\"Nuevo Leon\":\"MX-NLE\",\"Oaxaca\":\"MX-OAX\",\"Puebla\":\"MX-PUE\",\"Queretaro\":\"MX-QUE\",\"Quintana Roo\":\"MX-ROO\",\"San Luis Potosi\":\"MX-SLP\",\"Sinaloa\":\"MX-SIN\",\"Sonora\":\"MX-SON\",\"Tabasco\":\"MX-TAB\",\"Tamaulipas\":\"MX-TAM\",\"Tlaxcala\":\"MX-TLA\",\"Veracruz de Ignacio de la Llave\":\"MX-VER\",\"Yucatan\":\"MX-YUC\",\"Zacatecas\":\"MX-ZAC\"},\"MY\":{\"Johor\":\"MY-01\",\"Kedah\":\"MY-02\",\"Kelantan\":\"MY-03\",\"Melaka\":\"MY-04\",\"Negeri Sembilan\":\"MY-05\",\"Pahang\":\"MY-06\",\"Perak\":\"MY-08\",\"Perlis\":\"MY-09\",\"Pulau Pinang\":\"MY-07\",\"Sabah\":\"MY-12\",\"Sarawak\":\"MY-13\",\"Selangor\":\"MY-10\",\"Terengganu\":\"MY-11\",\"Wilayah Persekutuan Kuala Lumpur\":\"MY-14\",\"Wilayah Persekutuan Labuan\":\"MY-15\",\"Wilayah Persekutuan Putrajaya\":\"MY-16\"},\"MZ\":{\"Cabo Delgado\":\"MZ-P\",\"Gaza\":\"MZ-G\",\"Inhambane\":\"MZ-I\",\"Manica\":\"MZ-B\",\"Maputo\":\"MZ-L\",\"Nampula\":\"MZ-N\",\"Niassa\":\"MZ-A\",\"Sofala\":\"MZ-S\",\"Tete\":\"MZ-T\",\"Zambezia\":\"MZ-Q\"},\"NA\":{\"Erongo\":\"NA-ER\",\"Hardap\":\"NA-HA\",\"Karas\":\"NA-KA\",\"Kavango East\":\"NA-KE\",\"Khomas\":\"NA-KH\",\"Kunene\":\"NA-KU\",\"Ohangwena\":\"NA-OW\",\"Omaheke\":\"NA-OH\",\"Omusati\":\"NA-OS\",\"Oshana\":\"NA-ON\",\"Oshikoto\":\"NA-OT\",\"Otjozondjupa\":\"NA-OD\",\"Zambezi\":\"NA-CA\"},\"NC\":{\"Province Nord\":\"\",\"Province Sud\":\"\"},\"NE\":{\"Agadez\":\"NE-1\",\"Diffa\":\"NE-2\",\"Dosso\":\"NE-3\",\"Niamey\":\"NE-8\",\"Tahoua\":\"NE-5\",\"Zinder\":\"NE-7\"},\"NF\":{\"Norfolk Island\":\"\"},\"NG\":{\"Abia\":\"NG-AB\",\"Abuja Federal Capital Territory\":\"NG-FC\",\"Adamawa\":\"NG-AD\",\"Akwa Ibom\":\"NG-AK\",\"Anambra\":\"NG-AN\",\"Bauchi\":\"NG-BA\",\"Bayelsa\":\"NG-BY\",\"Benue\":\"NG-BE\",\"Borno\":\"NG-BO\",\"Cross River\":\"NG-CR\",\"Delta\":\"NG-DE\",\"Edo\":\"NG-ED\",\"Ekiti\":\"NG-EK\",\"Enugu\":\"NG-EN\",\"Gombe\":\"NG-GO\",\"Imo\":\"NG-IM\",\"Jigawa\":\"NG-JI\",\"Kaduna\":\"NG-KD\",\"Kano\":\"NG-KN\",\"Katsina\":\"NG-KT\",\"Kebbi\":\"NG-KE\",\"Kogi\":\"NG-KO\",\"Kwara\":\"NG-KW\",\"Lagos\":\"NG-LA\",\"Nasarawa\":\"NG-NA\",\"Niger\":\"NG-NI\",\"Ogun\":\"NG-OG\",\"Ondo\":\"NG-ON\",\"Osun\":\"NG-OS\",\"Oyo\":\"NG-OY\",\"Plateau\":\"NG-PL\",\"Rivers\":\"NG-RI\",\"Sokoto\":\"NG-SO\",\"Taraba\":\"NG-TA\",\"Yobe\":\"NG-YO\",\"Zamfara\":\"NG-ZA\"},\"NI\":{\"Boaco\":\"NI-BO\",\"Carazo\":\"NI-CA\",\"Chinandega\":\"NI-CI\",\"Chontales\":\"NI-CO\",\"Costa Caribe Norte\":\"NI-AN\",\"Costa Caribe Sur\":\"NI-AS\",\"Esteli\":\"NI-ES\",\"Granada\":\"NI-GR\",\"Jinotega\":\"NI-JI\",\"Leon\":\"NI-LE\",\"Madriz\":\"NI-MD\",\"Managua\":\"NI-MN\",\"Masaya\":\"NI-MS\",\"Matagalpa\":\"NI-MT\",\"Nueva Segovia\":\"NI-NS\",\"Rio San Juan\":\"NI-SJ\",\"Rivas\":\"NI-RI\"},\"NL\":{\"Drenthe\":\"NL-DR\",\"Flevoland\":\"NL-FL\",\"Fryslan\":\"NL-FR\",\"Gelderland\":\"NL-GE\",\"Groningen\":\"NL-GR\",\"Limburg\":\"NL-LI\",\"Noord-Brabant\":\"NL-NB\",\"Noord-Holland\":\"NL-NH\",\"Overijssel\":\"NL-OV\",\"Utrecht\":\"NL-UT\",\"Zeeland\":\"NL-ZE\",\"Zuid-Holland\":\"NL-ZH\"},\"NO\":{\"Agder\":\"NO-42\",\"Innlandet\":\"NO-34\",\"More og Romsdal\":\"NO-15\",\"Nordland\":\"NO-18\",\"Oslo\":\"NO-03\",\"Rogaland\":\"NO-11\",\"Troms og Finnmark\":\"NO-54\",\"Trondelag\":\"NO-50\",\"Vestfold og Telemark\":\"NO-38\",\"Vestland\":\"NO-46\",\"Viken\":\"NO-30\"},\"NP\":{\"Bagmati\":\"NP-BA\",\"Bheri\":\"NP-BH\",\"Dhawalagiri\":\"NP-DH\",\"Gandaki\":\"NP-GA\",\"Janakpur\":\"NP-JA\",\"Karnali\":\"NP-KA\",\"Kosi\":\"NP-KO\",\"Lumbini\":\"NP-LU\",\"Mahakali\":\"NP-MA\",\"Mechi\":\"NP-ME\",\"Narayani\":\"NP-NA\",\"Rapti\":\"NP-RA\",\"Sagarmatha\":\"NP-SA\",\"Seti\":\"NP-SE\"},\"NR\":{\"Yaren\":\"NR-14\"},\"NU\":{\"Niue\":\"\"},\"NZ\":{\"Auckland\":\"NZ-AUK\",\"Bay of Plenty\":\"NZ-BOP\",\"Canterbury\":\"NZ-CAN\",\"Chatham Islands Territory\":\"NZ-CIT\",\"Gisborne\":\"NZ-GIS\",\"Hawke\'s Bay\":\"NZ-HKB\",\"Manawatu-Wanganui\":\"NZ-MWT\",\"Marlborough\":\"NZ-MBH\",\"Nelson\":\"NZ-NSN\",\"Northland\":\"NZ-NTL\",\"Otago\":\"NZ-OTA\",\"Southland\":\"NZ-STL\",\"Taranaki\":\"NZ-TKI\",\"Tasman\":\"NZ-TAS\",\"Waikato\":\"NZ-WKO\",\"Wellington\":\"NZ-WGN\",\"West Coast\":\"NZ-WTC\"},\"OM\":{\"Ad Dakhiliyah\":\"OM-DA\",\"Al Buraymi\":\"OM-BU\",\"Al Wusta\":\"OM-WU\",\"Az Zahirah\":\"OM-ZA\",\"Janub al Batinah\":\"OM-BJ\",\"Janub ash Sharqiyah\":\"OM-SJ\",\"Masqat\":\"OM-MA\",\"Musandam\":\"OM-MU\",\"Shamal al Batinah\":\"OM-BS\",\"Shamal ash Sharqiyah\":\"OM-SS\",\"Zufar\":\"OM-ZU\"},\"PA\":{\"Bocas del Toro\":\"PA-1\",\"Chiriqui\":\"PA-4\",\"Cocle\":\"PA-2\",\"Colon\":\"PA-3\",\"Darien\":\"PA-5\",\"Herrera\":\"PA-6\",\"Los Santos\":\"PA-7\",\"Ngobe-Bugle\":\"PA-NB\",\"Panama\":\"PA-8\",\"Veraguas\":\"PA-9\"},\"PE\":{\"Amazonas\":\"PE-AMA\",\"Ancash\":\"PE-ANC\",\"Apurimac\":\"PE-APU\",\"Arequipa\":\"PE-ARE\",\"Ayacucho\":\"PE-AYA\",\"Cajamarca\":\"PE-CAJ\",\"Cusco\":\"PE-CUS\",\"El Callao\":\"PE-CAL\",\"Huancavelica\":\"PE-HUV\",\"Huanuco\":\"PE-HUC\",\"Ica\":\"PE-ICA\",\"Junin\":\"PE-JUN\",\"La Libertad\":\"PE-LAL\",\"Lambayeque\":\"PE-LAM\",\"Lima\":\"PE-LIM\",\"Loreto\":\"PE-LOR\",\"Madre de Dios\":\"PE-MDD\",\"Moquegua\":\"PE-MOQ\",\"Pasco\":\"PE-PAS\",\"Piura\":\"PE-PIU\",\"Puno\":\"PE-PUN\",\"San Martin\":\"PE-SAM\",\"Tacna\":\"PE-TAC\",\"Tumbes\":\"PE-TUM\",\"Ucayali\":\"PE-UCA\"},\"PF\":{\"Iles Australes\":\"\",\"Iles Marquises\":\"\",\"Iles Sous-le-Vent\":\"\",\"Iles Tuamotu-Gambier\":\"\",\"Iles du Vent\":\"\"},\"PG\":{\"Bougainville\":\"PG-NSB\",\"Central\":\"PG-CPM\",\"East New Britain\":\"PG-EBR\",\"East Sepik\":\"PG-ESW\",\"Eastern Highlands\":\"PG-EHG\",\"Madang\":\"PG-MPM\",\"Manus\":\"PG-MRL\",\"Milne Bay\":\"PG-MBA\",\"Morobe\":\"PG-MPL\",\"National Capital District (Port Moresby)\":\"PG-NCD\",\"New Ireland\":\"PG-NIK\",\"Southern Highlands\":\"PG-SHM\",\"West New Britain\":\"PG-WBK\",\"West Sepik\":\"PG-SAN\",\"Western\":\"PG-WPD\",\"Western Highlands\":\"PG-WHM\"},\"PH\":{\"Abra\":\"PH-ABR\",\"Agusan del Norte\":\"PH-AGN\",\"Agusan del Sur\":\"PH-AGS\",\"Aklan\":\"PH-AKL\",\"Albay\":\"PH-ALB\",\"Antique\":\"PH-ANT\",\"Apayao\":\"PH-APA\",\"Aurora\":\"PH-AUR\",\"Basilan\":\"PH-BAS\",\"Bataan\":\"PH-BAN\",\"Batanes\":\"PH-BTN\",\"Batangas\":\"PH-BTG\",\"Benguet\":\"PH-BEN\",\"Biliran\":\"PH-BIL\",\"Bohol\":\"PH-BOH\",\"Bukidnon\":\"PH-BUK\",\"Bulacan\":\"PH-BUL\",\"Cagayan\":\"PH-CAG\",\"Camarines Norte\":\"PH-CAN\",\"Camarines Sur\":\"PH-CAS\",\"Camiguin\":\"PH-CAM\",\"Capiz\":\"PH-CAP\",\"Catanduanes\":\"PH-CAT\",\"Cavite\":\"PH-CAV\",\"Cebu\":\"PH-CEB\",\"Cotabato\":\"PH-NCO\",\"Davao Oriental\":\"PH-DAO\",\"Davao de Oro\":\"PH-COM\",\"Davao del Norte\":\"PH-DAV\",\"Davao del Sur\":\"PH-DAS\",\"Dinagat Islands\":\"PH-DIN\",\"Eastern Samar\":\"PH-EAS\",\"Guimaras\":\"PH-GUI\",\"Ifugao\":\"PH-IFU\",\"Ilocos Norte\":\"PH-ILN\",\"Ilocos Sur\":\"PH-ILS\",\"Iloilo\":\"PH-ILI\",\"Isabela\":\"PH-ISA\",\"Kalinga\":\"PH-KAL\",\"La Union\":\"PH-LUN\",\"Laguna\":\"PH-LAG\",\"Lanao del Norte\":\"PH-LAN\",\"Lanao del Sur\":\"PH-LAS\",\"Leyte\":\"PH-LEY\",\"Maguindanao\":\"PH-MAG\",\"Marinduque\":\"PH-MAD\",\"Masbate\":\"PH-MAS\",\"Mindoro Occidental\":\"PH-MDC\",\"Mindoro Oriental\":\"PH-MDR\",\"Misamis Occidental\":\"PH-MSC\",\"Misamis Oriental\":\"PH-MSR\",\"Mountain Province\":\"PH-MOU\",\"National Capital Region\":\"PH-00\",\"Negros Occidental\":\"PH-NEC\",\"Negros Oriental\":\"PH-NER\",\"Northern Samar\":\"PH-NSA\",\"Nueva Ecija\":\"PH-NUE\",\"Nueva Vizcaya\":\"PH-NUV\",\"Palawan\":\"PH-PLW\",\"Pampanga\":\"PH-PAM\",\"Pangasinan\":\"PH-PAN\",\"Quezon\":\"PH-QUE\",\"Quirino\":\"PH-QUI\",\"Rizal\":\"PH-RIZ\",\"Romblon\":\"PH-ROM\",\"Samar\":\"PH-WSA\",\"Sarangani\":\"PH-SAR\",\"Siquijor\":\"PH-SIG\",\"Sorsogon\":\"PH-SOR\",\"South Cotabato\":\"PH-SCO\",\"Southern Leyte\":\"PH-SLE\",\"Sultan Kudarat\":\"PH-SUK\",\"Sulu\":\"PH-SLU\",\"Surigao del Norte\":\"PH-SUN\",\"Surigao del Sur\":\"PH-SUR\",\"Tarlac\":\"PH-TAR\",\"Tawi-Tawi\":\"PH-TAW\",\"Zambales\":\"PH-ZMB\",\"Zamboanga Sibugay\":\"PH-ZSI\",\"Zamboanga del Norte\":\"PH-ZAN\",\"Zamboanga del Sur\":\"PH-ZAS\"},\"PK\":{\"Azad Jammu and Kashmir\":\"PK-JK\",\"Balochistan\":\"PK-BA\",\"Gilgit-Baltistan\":\"PK-GB\",\"Islamabad\":\"PK-IS\",\"Khyber Pakhtunkhwa\":\"PK-KP\",\"Punjab\":\"PK-PB\",\"Sindh\":\"PK-SD\"},\"PL\":{\"Dolnoslaskie\":\"PL-02\",\"Kujawsko-pomorskie\":\"PL-04\",\"Lodzkie\":\"PL-10\",\"Lubelskie\":\"PL-06\",\"Lubuskie\":\"PL-08\",\"Malopolskie\":\"PL-12\",\"Mazowieckie\":\"PL-14\",\"Opolskie\":\"PL-16\",\"Podkarpackie\":\"PL-18\",\"Podlaskie\":\"PL-20\",\"Pomorskie\":\"PL-22\",\"Slaskie\":\"PL-24\",\"Swietokrzyskie\":\"PL-26\",\"Warminsko-mazurskie\":\"PL-28\",\"Wielkopolskie\":\"PL-30\",\"Zachodniopomorskie\":\"PL-32\"},\"PM\":{\"Saint Pierre and Miquelon\":\"\"},\"PN\":{\"Pitcairn\":\"\"}};\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n tempObj.serverId = countryCodeMap[tempObj.country];\r\n\r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.province){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.province];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (542, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsProvinceTcpSessionDelay', '/application/performance/overview/drilldown/dimension/clientLocations/province/tcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, client_region AS city, ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND client_region IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND client_country = \'${parameter.country}\' AND client_province = \'${parameter.province}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,city\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (543, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsProvinceHttpResponseDelay', '/application/performance/overview/drilldown/dimension/clientLocations/province/httpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, client_region AS city, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND client_region IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND client_country = \'${parameter.country}\' AND client_province = \'${parameter.province}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,city\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (544, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsProvinceSslConDelay', '/application/performance/overview/drilldown/dimension/clientLocations/province/sslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT client_country AS country, client_province AS province, client_region AS city, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND client_region IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND client_country = \'${parameter.country}\' AND client_province = \'${parameter.province}\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,city\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n eturn letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (545, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsProvinceTcpLostlenPercent', '/application/performance/overview/drilldown/dimension/clientLocations/province/tcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, province AS province, city AS city, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM session_record_cn WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) AND country = \'${parameter.country}\' AND province = \'${parameter.province}\' AND city IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND side = \'client\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,city ORDER BY tcp_lostlen_percent DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (546, 'applicationPerformanceOverviewDrilldownDimensionClientLocationsProvincePacketRetransPercent', '/application/performance/overview/drilldown/dimension/clientLocations/province/packetRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, province AS province, city AS city, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_ratio FROM session_record_cn WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) AND country = \'${parameter.country}\' AND province = \'${parameter.province}\' AND city IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) AND side = \'client\' AND ${parameter.dimension} = \'${parameter.typeVal}\' GROUP BY country,province,city ORDER BY pkt_retrans_ratio DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'common_server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (547, 'applicationPerformanceOverviewDrilldownDimensionRecentEvents', '/application/performance/overview/drilldown/dimension/recentEvents', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT event_severity AS event_severity, event_type AS event_type, start_time AS start_time FROM performance_event WHERE start_time >= ${parameter.startTime} AND start_time < ${parameter.endTime} AND ${parameter.dimension} = \'${parameter.param}\' ORDER BY start_time DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \'server_ip\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'app_name\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (548, 'applicationPerformanceOverviewDrilldownDrilldownDimensionTrafficGraph', '/application/performance/overview/drilldown/drilldown/dimension/trafficGraph', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, ${parameter.dimension} AS ${parameter.label}, SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes_total, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets_total, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions, IFNULL(ROUND(AVG(avg_establish_latency_ms), 4),0) AS establish_latency_ms_avg, IFNULL(ROUND(AVG(avg_http_response_latency_ms), 4),0) AS http_response_latency_avg, IFNULL(ROUND(AVG(avg_ssl_con_latency_ms), 4),0) AS ssl_con_latency_avg, IFNULL(ROUND(AVG(tcp_lostlen_ratio), 4),0) AS tcp_lostlen_percent_avg, IFNULL(ROUND(AVG(pkt_retrans_ratio), 4),0) AS pkt_retrans_percent_avg FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND (${parameter.q})<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY stat_time,${parameter.label} ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"stat_time\") != -1){\r\n tempObj[\'statTime\'] = pojo[key]\r\n }else if(key.indexOf(\"bytes_total\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"packets_total\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"establish_latency_ms_avg\") != -1){\r\n tempObj[\'establishLatencyMsAvg\'] = pojo[key]\r\n }else if(key.indexOf(\"http_response_latency_avg\") != -1){\r\n tempObj[\'httpResponseLatencyAvg\'] = pojo[key]\r\n }else if(key.indexOf(\"ssl_con_latency_avg\") != -1){\r\n tempObj[\'sslConLatencyAvg\'] = pojo[key]\r\n }else if(key.indexOf(\"tcp_lostlen_percent_avg\") != -1){\r\n tempObj[\'tcpLostlenPercentAvg\'] = pojo[key]\r\n }else if(key.indexOf(\"pkt_retrans_percent_avg\") != -1){\r\n tempObj[\'pktRetransPercentAvg\'] = pojo[key]\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var bytes = [];\r\n var packets = [];\r\n var sessions = [];\r\n var establishLatencyMs = [];\r\n var httpResponseLatency = [];\r\n var sslConLatency = [];\r\n var tcpLostlenPercent = [];\r\n var pktRetransPercent = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"Bits\") != -1){\r\n bytes.push(key);\r\n } else if(key.indexOf(\"Packets\") != -1){\r\n packets.push(key);\r\n } else if(key.indexOf(\"Sessions\") != -1){\r\n sessions.push(key);\r\n } else if(key.indexOf(\"establishLatencyMsAvg\") != -1){\r\n establishLatencyMs.push(key);\r\n } else if(key.indexOf(\"httpResponseLatencyAvg\") != -1){\r\n httpResponseLatency.push(key);\r\n } else if(key.indexOf(\"sslConLatencyAvg\") != -1){\r\n sslConLatency.push(key);\r\n } else if(key.indexOf(\"tcpLostlenPercentAvg\") != -1){\r\n tcpLostlenPercent.push(key);\r\n } else if(key.indexOf(\"pktRetransPercentAvg\") != -1){\r\n pktRetransPercent.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"totalBitsRate\",\"bytes_total\");\r\n map.put(\"totalPacketsRate\",\"packets_total\");\r\n map.put(\"inboundBitsRate\",\"inbound_bytes\");\r\n map.put(\"inboundPacketsRate\",\"inbound_packets\");\r\n map.put(\"outboundBitsRate\",\"outbound_bytes\");\r\n map.put(\"outboundPacketsRate\",\"outbound_packets\");\r\n map.put(\"internalBitsRate\",\"internal_bytes\");\r\n map.put(\"internalPacketsRate\",\"internal_packets\");\r\n map.put(\"throughBitsRate\",\"through_bytes\");\r\n map.put(\"throughPacketsRate\",\"through_packets\");\r\n map.put(\"totalSessionsRate\",\"sessions\");\r\n map.put(\"establishLatencyMsAvg\",\"establish_latency_ms_avg\");\r\n map.put(\"httpResponseLatencyAvg\",\"http_response_latency_avg\");\r\n map.put(\"sslConLatencyAvg\",\"ssl_con_latency_avg\");\r\n map.put(\"tcpLostlenPercentAvg\",\"tcp_lostlen_percent_avg\");\r\n map.put(\"pktRetransPercentAvg\",\"pkt_retrans_percent_avg\");\r\n var type = {};\r\n type.bytes = bytes;\r\n type.packets = packets;\r\n type.sessions = sessions;\r\n type.establishLatencyMs = establishLatencyMs;\r\n type.httpResponseLatency = httpResponseLatency;\r\n type.sslConLatency = sslConLatency;\r\n type.tcpLostlenPercent = tcpLostlenPercent;\r\n type.pktRetransPercent = pktRetransPercent;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n if(typeKey[m].indexOf(\"Avg\") == -1){\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n } else {\r\n analysis.avg = (sumValue/list.length).toFixed(2);\r\n }\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n\r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n\r\n\r\n zong.values = values;\r\n zong.analysis = analysis;\r\n\r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n var len = old[0][\"totalBitsRate\"][\"values\"].length;\r\n for(var a in old){\r\n if(old[a].type == \'bytes\' || old[a].type == \'packets\'){\r\n var other = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n var sumValue = 0;\r\n for(var i=0; i<len; i++){\r\n var sum = 0;\r\n var tempArray = new java.util.ArrayList();\r\n for(var b in old[a]){\r\n if(b != \'type\'){\r\n if(b.indexOf(\"total\") != -1){\r\n sum += Number(old[a][b][\"values\"][i][1]);\r\n } else {\r\n sum -= Number(old[a][b][\"values\"][i][1]);\r\n }\r\n sum = sum>0?sum:0;\r\n }\r\n }\r\n tempArray.add(old[0][\"totalBitsRate\"][\"values\"][i][0]);\r\n tempArray.add(sum.toFixed(2));\r\n values.add(tempArray);\r\n sumValue += Number(sum);\r\n }\r\n analysis.avg = Math.round((sumValue / len)*100)/100 + \"\";\r\n\r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n\r\n other.values = values;\r\n other.analysis = analysis;\r\n old[a].other = other;\r\n }\r\n }\r\n }\r\n\r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-09 11:20:19', '2022-08-09 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (549, 'applicationPerformanceOverviewDrilldownDimensionTrafficAnalysis', '/application/performance/overview/drilldown/dimensionTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.label} AS ${parameter.label}, SUM(bytes_total) AS total_bytes, SUM(packets_total) AS total_packets, SUM(sessions) AS sessions, SUM(inbound_bytes) AS inbound_bytes, SUM(inbound_packets) AS inbound_packets, SUM(outbound_bytes) AS outbound_bytes, SUM(outbound_packets) AS outbound_packets, SUM(internal_bytes) AS internal_bytes, SUM(internal_packets) AS internal_packets, SUM(external_bytes) AS through_bytes, SUM(external_packets) AS through_packets FROM ( SELECT ${parameter.dimension} as ${parameter.label}, SUM(common_s2c_byte_num + common_c2s_byte_num) AS bytes_total, SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS packets_total, SUM(common_sessions) AS sessions, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS external_bytes, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS external_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(${parameter.label}) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label},client_zone,server_zone ) GROUP BY ${parameter.label} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'totalBytes\'){\r\n parameter.orderBy=\'total_bytes\';\r\n}else if(parameter.orderBy==\'totalPackets\'){\r\n parameter.orderBy=\'total_packets\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', '\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 19:56:02', '2022-08-03 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (550, 'applicationPerformanceOverviewDrilldownDimensionCycleTrafficAnalysis', '/application/performance/overview/drilldown/dimensionCycleTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.label} AS ${parameter.label}, SUM(bytes_total) AS total_bytes, SUM(packets_total) AS total_packets, SUM(sessions) AS sessions, SUM(inbound_bytes) AS inbound_bytes, SUM(inbound_packets) AS inbound_packets, SUM(outbound_bytes) AS outbound_bytes, SUM(outbound_packets) AS outbound_packets, SUM(internal_bytes) AS internal_bytes, SUM(internal_packets) AS internal_packets, SUM(external_bytes) AS through_bytes, SUM(external_packets) AS through_packets FROM ( SELECT ${parameter.dimension} as ${parameter.label}, SUM(common_s2c_byte_num + common_c2s_byte_num) AS bytes_total, SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS packets_total, SUM(common_sessions) AS sessions, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes, IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS external_bytes, IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS external_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label},client_zone,server_zone ) GROUP BY ${parameter.label} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'totalBytes\'){\r\n parameter.orderBy=\'total_bytes\';\r\n}else if(parameter.orderBy==\'totalPackets\'){\r\n parameter.orderBy=\'total_packets\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', '\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-03 22:35:23', '2022-08-03 22:35:25', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (551, 'applicationPerformanceOverviewDrilldownDimensionCycleDimensionTcpSessionDelay', '/application/performance/overview/drilldown/dimensionTcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} as ${parameter.label}, ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} as ${parameter.label}, ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms, ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent, ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (552, 'applicationPerformanceOverviewDrilldownDimensionCycleDimensionHttpResponseDelay', '/application/performance/overview/drilldown/dimensionHttpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} as ${parameter.label}, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_schema_type = \'HTTP\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} as ${parameter.label}, ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (553, 'applicationPerformanceOverviewDrilldownDimensionCycleDimensionSslConDelay', '/application/performance/overview/drilldown/dimensionSslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> SELECT ${parameter.dimension} as ${parameter.label}, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_schema_type = \'SSL\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} as ${parameter.label}, ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}\r\n\r\nif(parameter.orderBy==\'bytesTotal\'){\r\n parameter.orderBy=\'bytes_total\';\r\n}else if(parameter.orderBy==\'packetsTotal\'){\r\n parameter.orderBy=\'packets_total\';\r\n}else if(parameter.orderBy==\'sessions\'){\r\n parameter.orderBy=\'sessions\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-04 11:20:19', '2022-08-04 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (554, 'applicationPerformanceLocationNetworkMap', '/application/performance/location/networkMap', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country,<#if parameter.country?default(\'\')?trim? length gt 0> province AS province, <#if parameter.province?default(\'\')?trim? length gt 0> city AS city, </#if> </#if> SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} <#if parameter.country?default(\'\')?trim? length gt 0><#if parameter.province?default(\'\')?trim? length gt 0> AND notEmpty(city) AND country = \'${parameter.country}\' AND province = \'${parameter.province}\' <#else> AND notEmpty(province) AND country = \'${parameter.country}\' </#if> <#else> AND notEmpty(country) </#if> AND side = \'${parameter.side}\' GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> province, <#if parameter.province?default(\'\')?trim? length gt 0> city, </#if> </#if> country <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif(parameter.orderBy){parameter.orderBy = toLine(parameter.orderBy);}\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n tempObj.serverId = countryCodeMap[tempObj.country];\r\n \r\n if(!tempObj.serverId) {\r\n tempObj.serverId = \"\";\r\n }else{\r\n // 存在地区 \r\n if(tempObj.province){\r\n var regionCode = countCityMap[tempObj.serverId][tempObj.province];\r\n if(regionCode){\r\n tempObj.serverId = regionCode;\r\n }\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (555, 'applicationPerformanceLocationTcpSessionDelay', '/application/performance/location/tcpSessionDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, <#if parameter.country?default(\'\')?trim? length gt 0> province AS province, <#if parameter.province?default(\'\')?trim? length gt 0> city AS city, </#if> </#if> ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_establish_latency_ms) <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND province IN (<#if parameter.province?default(\'\')?trim? length gt 0> ${parameter.province} </#if>) AND notEmpty(city) <#else> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND notEmpty(province) </#if> <#else> AND notEmpty(country) </#if> AND side = \'${parameter.side}\' GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> province, <#if parameter.province?default(\'\')?trim? length gt 0> city, </#if> </#if> country ORDER BY establish_latency_ms DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-18 12:44:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (556, 'applicationPerformanceLocationHttpResponseDelay', '/application/performance/location/httpResponseDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, <#if parameter.country?default(\'\')?trim? length gt 0> province AS province, <#if parameter.province?default(\'\')?trim? length gt 0> city AS city, </#if> </#if> ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_http_response_latency_ms) <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND province IN (<#if parameter.province?default(\'\')?trim? length gt 0> ${parameter.province} </#if>) AND notEmpty(city) <#else> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND notEmpty(province) </#if> <#else> AND notEmpty(country) </#if> AND side = \'${parameter.side}\' GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> province, <#if parameter.province?default(\'\')?trim? length gt 0> city, </#if> </#if> country ORDER BY http_response_latency DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-18 12:45:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (557, 'applicationPerformanceLocationSslConDelay', '/application/performance/location/sslConDelay', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, <#if parameter.country?default(\'\')?trim? length gt 0> province AS province, <#if parameter.province?default(\'\')?trim? length gt 0> city AS city, </#if> </#if> ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_ssl_con_latency_ms) <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND province IN (<#if parameter.province?default(\'\')?trim? length gt 0> ${parameter.province} </#if>) AND notEmpty(city) <#else> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND notEmpty(province) </#if> <#else> AND notEmpty(country) </#if> AND side = \'${parameter.side}\' GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> province, <#if parameter.province?default(\'\')?trim? length gt 0> city, </#if> </#if> country ORDER BY ssl_con_latency DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-18 12:46:33', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (558, 'applicationPerformanceLocationTcpLostlenPercent', '/application/performance/location/tcpLostlenPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, <#if parameter.country?default(\'\')?trim? length gt 0> province AS province, <#if parameter.province?default(\'\')?trim? length gt 0> city AS city, </#if> </#if> ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND province IN (<#if parameter.province?default(\'\')?trim? length gt 0> ${parameter.province} </#if>) AND notEmpty(city) <#else> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND notEmpty(province) </#if> <#else> AND notEmpty(country) </#if> AND side = \'${parameter.side}\' GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> province, <#if parameter.province?default(\'\')?trim? length gt 0> city, </#if> </#if> country ORDER BY tcp_lostlen_percent DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-18 12:47:38', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (559, 'applicationPerformanceLocationPacketRetransPercent', '/application/performance/location/packetRetransPercent', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT country AS country, <#if parameter.country?default(\'\')?trim? length gt 0> province AS province, <#if parameter.province?default(\'\')?trim? length gt 0> city AS city, </#if> </#if> ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) <#if parameter.country?default(\'\')?trim? length gt 0> <#if parameter.province?default(\'\')?trim? length gt 0> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND province IN (<#if parameter.province?default(\'\')?trim? length gt 0> ${parameter.province} </#if>) AND notEmpty(city) <#else> AND country IN (<#if parameter.country?default(\'\')?trim? length gt 0> ${parameter.country} </#if>) AND notEmpty(province) </#if> <#else> AND notEmpty(country) </#if> AND side = \'${parameter.side}\' GROUP BY <#if parameter.country?default(\'\')?trim? length gt 0> province, <#if parameter.province?default(\'\')?trim? length gt 0> city, </#if> </#if> country ORDER BY pkt_retrans_percent DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-18 12:48:21', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (560, 'applicationPerformanceLocationThoughput', '/application/performance/location/thoughput', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes, SUM(traffic_inbound_byte) AS inbound_bytes, SUM(traffic_outbound_byte) AS outbound_bytes, SUM(traffic_internal_byte) AS internal_bytes, SUM(traffic_through_byte) AS through_bytes, SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS total_packets, SUM(traffic_inbound_pkt) AS inbound_packets, SUM(traffic_outbound_pkt) AS outbound_packets, SUM(traffic_internal_pkt) AS internal_packets, SUM(traffic_through_pkt) AS through_packets, SUM(common_sessions) AS sessions FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} <#if parameter.country?default(\'\')?trim? length gt 0> AND country = \'${parameter.country}\' </#if> <#if parameter.province?default(\'\')?trim? length gt 0> AND province = \'${parameter.province}\' </#if> AND side = \'${parameter.side}\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"stat_time\") != -1){\r\n tempObj[\'statTime\'] = pojo[key]\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n\r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.type = key;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (561, 'applicationPerformanceLocationTcpConnectionEstablishLatency', '/application/performance/location/tcpConnectionEstablishLatency', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_establish_latency_ms) <#if parameter.country?default(\'\')?trim? length gt 0> AND country = \'${parameter.country}\' </#if> <#if parameter.province?default(\'\')?trim? length gt 0> AND province = \'${parameter.province}\' </#if> AND side = \'${parameter.side}\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n\r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.type = key;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (562, 'applicationPerformanceLocationHttpResponseLatency', '/application/performance/location/httpResponseLatency', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_http_response_latency_ms) <#if parameter.country?default(\'\')?trim? length gt 0> AND country = \'${parameter.country}\' </#if> <#if parameter.province?default(\'\')?trim? length gt 0> AND province = \'${parameter.province}\' </#if> AND side = \'${parameter.side}\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n\r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n\r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.type = key;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (563, 'applicationPerformanceLocationSslHandshakeLatency', '/application/performance/location/sslHandshakeLatency', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(avg_ssl_con_latency_ms) <#if parameter.country?default(\'\')?trim? length gt 0> AND country = \'${parameter.country}\' </#if> <#if parameter.province?default(\'\')?trim? length gt 0> AND province = \'${parameter.province}\' </#if> AND side = \'${parameter.side}\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g,\r\n function(all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a, b) {\r\n return a.statTime - b.statTime;\r\n}\r\n\r\nif (result.success) {\r\n var o = {};\r\n o.resultType = \"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if (list.length > 0) {\r\n for (var i in list) {\r\n var pojo = list[i];\r\n var tempObj = {};\r\n for (var key in pojo) {\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new Array();\r\n var obj = list[0];\r\n for (var key in obj) {\r\n if (key === \"statTime\") {\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n\r\n for (var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for (var j in list) {\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n\r\n list.sort(function sortByField(a, b) {\r\n return b[key] - a[key];\r\n });\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.type = key;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code = 200;\r\n result.data = o;\r\n result.msg = result.message;\r\n result.message = null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (564, 'applicationPerformanceLocationPacketsLoss', '/application/performance/location/packetsLoss', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(tcp_lostlen_ratio) <#if parameter.country?default(\'\')?trim? length gt 0> AND country = \'${parameter.country}\' </#if> <#if parameter.province?default(\'\')?trim? length gt 0> AND province = \'${parameter.province}\' </#if> AND side = \'${parameter.side}\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g,\r\n function(all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a, b) {\r\n return a.statTime - b.statTime;\r\n}\r\n\r\nif (result.success) {\r\n var o = {};\r\n o.resultType = \"matrix\";\r\n o.result = new java.util.ArrayList();\r\n\r\n var list = result.data;\r\n if (list.length > 0) {\r\n for (var i in list) {\r\n var pojo = list[i];\r\n var tempObj = {};\r\n for (var key in pojo) {\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n var fields = new Array();\r\n var obj = list[0];\r\n for (var key in obj) {\r\n if (key === \"statTime\") {\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n\r\n for (var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime);\r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n\r\n var sumValue = 0\r\n for (var j in list) {\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n\r\n list.sort(function sortByField(a, b) {\r\n return b[key] - a[key];\r\n });\r\n\r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.type = key;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code = 200;\r\n result.data = o;\r\n result.msg = result.message;\r\n result.message = null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (565, 'applicationPerformanceLocationPacketsRetrains', '/application/performance/location/packetsRetrains', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_region WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND isNotNull(pkt_retrans_ratio) <#if parameter.country?default(\'\')?trim? length gt 0> AND country = \'${parameter.country}\' </#if> <#if parameter.province?default(\'\')?trim? length gt 0> AND province = \'${parameter.province}\' </#if> AND side = \'${parameter.side}\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.statTime - b.statTime;\r\n}\r\n\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"matrix\";\r\n o.result = new java.util.ArrayList();\r\n \r\n var list = result.data;\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n list[i] = tempObj;\r\n }\r\n \r\n var fields = new Array();\r\n var obj = list[0];\r\n for(var key in obj) {\r\n if(key === \"statTime\"){\r\n continue;\r\n }\r\n fields.push(key);\r\n }\r\n \r\n for(var i = 0; i < fields.length; i++) {\r\n // 先按照时间排序\r\n list.sort(sortByStatTime); \r\n var key = fields[i];\r\n var values = new java.util.ArrayList();\r\n var aggregation = {};\r\n aggregation.first = list[0][key];\r\n aggregation.last = list[list.length - 1][key];\r\n \r\n var sumValue = 0\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add((pojo[key]).toString());\r\n values.add(tempArray);\r\n sumValue += Number(pojo[key]);\r\n }\r\n \r\n list.sort(function sortByField(a,b){ \r\n return b[key]-a[key];\r\n });\r\n \r\n var lineObj = {};\r\n lineObj.values = values;\r\n lineObj.type = key;\r\n o.result.add(lineObj);\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n \r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (566, 'overviewEventList', '/overview/event/list', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT event_${parameter.type} AS event_${parameter.type}, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND end_time < ${parameter.endTime} GROUP BY event_${parameter.type}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (567, 'overviewEventRecentEvents', '/overview/event/recentEvents', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT CAST(event_id as string) as event_id, event_severity AS event_severity, event_key AS event_key, event_type AS event_type FROM performance_event WHERE start_time >= ${parameter.startTime} AND end_time < ${parameter.endTime} ORDER BY start_time DESC <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (568, 'overviewEventDimensionEvents', '/overview/event/dimensionEvents', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.dimension} AS ${parameter.label}, event_severity AS event_severity, event_type AS event_type, COUNT(*) AS count FROM performance_event WHERE start_time >= ${parameter.startTime} AND end_time < ${parameter.endTime} AND ${parameter.filter} GROUP BY ${parameter.dimension},event_severity,event_type ORDER BY count DESC <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nif(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n parameter.filter = \"entity_type = \'app\'\";\r\n }else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'app_name\';\r\n parameter.label = \'app_name\';\r\n parameter.filter = \"entity_type = \'app\'\";\r\n }\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-10 19:56:02', '2022-08-10 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (569, 'applicationPerformanceOverviewAppNetworkAnalysis', '/application/performance/overview/appNetworkAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT app_subcategory AS app_subcategory, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_application WHERE <#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} <#else> stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} </#if> AND app_subcategory IN (\'multimedia-streaming\',\'social-networking\',\'file-sharing\',\'gaming\',\'email\',\'voip-video\') GROUP BY app_subcategory\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (570, 'applicationPerformanceOverviewDimensionNetworkAnalysis', '/application/performance/overview/dimensionNetworkAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM ${parameter.tableName} WHERE <#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} <#else> stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} </#if> AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>)<#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', ' \r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){ \r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (571, 'applicationPerformanceOverviewDrilldownDimensioNetworkAnalysis', '/application/performance/overview/drilldown/dimension/networkAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.dimension} AS ${parameter.label}, ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms_avg, ROUND(QUANTILE(avg_establish_latency_ms,0.50)) AS establish_latency_ms_p50, ROUND(QUANTILE(avg_establish_latency_ms,0.90)) AS establish_latency_ms_p90, ROUND(QUANTILE(avg_establish_latency_ms,0.95)) AS establish_latency_ms_p95, ROUND(QUANTILE(avg_establish_latency_ms,0.99)) AS establish_latency_ms_p99, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency_avg, ROUND(QUANTILE(avg_http_response_latency_ms,0.50)) AS http_response_latency_p50, ROUND(QUANTILE(avg_http_response_latency_ms,0.90)) AS http_response_latency_p90, ROUND(QUANTILE(avg_http_response_latency_ms,0.95)) AS http_response_latency_p95, ROUND(QUANTILE(avg_http_response_latency_ms,0.99)) AS http_response_latency_p99, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency_avg, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.50)) AS ssl_con_latency_p50, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.90)) AS ssl_con_latency_p90, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.95)) AS ssl_con_latency_p95, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent_avg, ROUND(QUANTILE(tcp_lostlen_ratio,0.50), 4) AS tcp_lostlen_percent_p50, ROUND(QUANTILE(tcp_lostlen_ratio,0.90), 4) AS tcp_lostlen_percent_p90, ROUND(QUANTILE(tcp_lostlen_ratio,0.95), 4) AS tcp_lostlen_percent_p95, ROUND(QUANTILE(tcp_lostlen_ratio,0.99), 4) AS tcp_lostlen_percent_p99, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent_avg, ROUND(QUANTILE(pkt_retrans_ratio,0.50), 4) AS pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_ratio,0.90), 4) AS pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_ratio,0.95), 4) AS pkt_retrans_percent_p95, ROUND(QUANTILE(pkt_retrans_ratio,0.99), 4) AS pkt_retrans_percent_p99 FROM ${parameter.tableName} WHERE <#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} <#else> stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if> GROUP BY ${parameter.label}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (572, 'dnsOverviewTotalTrafficAnalysis', '/dns/overview/totalTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT granularity AS granularity, SUM(total_bytes) AS bytes_total, SUM(inbound_bytes) AS inbound_bytes, SUM(outbound_bytes) AS outbound_bytes, SUM(query_num) as query_num FROM ( SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS granularity, client_zone, server_zone, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, COUNT(*) AS query_num FROM session_record_cn AS a WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' GROUP BY granularity,client_zone,server_zone ORDER BY granularity ) GROUP BY granularity ORDER BY granularity ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"granularity\") != -1){\r\n tempObj[\'granularity\'] = pojo[key]\r\n }else if(key.indexOf(\"bytes_total\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key == \'query_num\'){\r\n tempObj[\'totalQueryRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var bytes = [];\r\n var queries = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"Bits\") != -1){\r\n bytes.push(key);\r\n } else if(key.indexOf(\"Query\") != -1){\r\n queries.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"totalBitsRate\",\"bytes_total\");\r\n map.put(\"inboundBitsRate\",\"inbound_bytes\");\r\n map.put(\"outboundBitsRate\",\"outbound_bytes\");\r\n map.put(\"totalQueryRate\",\"query_num\");\r\n var type = {};\r\n type.bytes = bytes;\r\n type.queries = queries;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"granularity\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 10:03:32', '2022-09-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (573, 'dnsOverviewDimensionAnalysis', '/dns/overview/dimensionAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.dimension} AS ${parameter.label}, SUM(query_num) AS query_num, SUM(internal_query_num) AS total_internal_query_num, SUM(external_query_num) AS total_external_query_num, ROUND(AVG(avg_response_latency_ms),4) AS dns_response_latency_avg, SUM(traffic_inbound_byte + traffic_outbound_byte) AS total_bytes FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} <#if parameter.type?default(\'\')?trim? length gt 0 && parameter.type!=\'qtype\' && parameter.type!=\'rcode\'> AND notEmpty(${parameter.dimension}) </#if> GROUP BY ${parameter.dimension} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY query_num desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy==\'queryRate\') {\r\nparameter.orderBy=\'query_num\'\r\n}\r\nif (parameter.orderBy) {\r\nparameter.orderBy = toLine(parameter.orderBy);\r\n}\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'dnsServer\'){\r\n parameter.dimension = \'server_ip\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \'server_city\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'dnsServerIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_isp\';\r\n} else if(parameter.type==\'dnsServerOrganization\'){\r\n parameter.dimension = \'server_org\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_organization\';\r\n} else if(parameter.type==\'dnsServerRole\'){\r\n parameter.dimension = \'arrayJoin(server_role)\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_role\';\r\n} else if(parameter.type==\'qname\'){\r\n parameter.dimension = \'qname\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'qname\';\r\n} else if(parameter.type==\'sld\'){\r\n parameter.dimension = \'qname_sld\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'sld\';\r\n} else if(parameter.type==\'tld\'){\r\n parameter.dimension = \'qname_tld\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'tld\';\r\n} else if(parameter.type==\'qtype\'){\r\n parameter.dimension = \'qtype\';\r\n parameter.tableName = \'metric_dns_qtype\';\r\n parameter.label = \'qtype\';\r\n} else if(parameter.type==\'rcode\'){\r\n parameter.dimension = \'rcode\';\r\n parameter.tableName = \'metric_dns_rcode\';\r\n parameter.label = \'rcode\';\r\n} else if(parameter.type==\'a\'){\r\n parameter.dimension = \'rr_a\';\r\n parameter.tableName = \'metric_dns_rr_a\';\r\n parameter.label = \'a\';\r\n} else if(parameter.type==\'aaaa\'){\r\n parameter.dimension = \'rr_aaaa\';\r\n parameter.tableName = \'metric_dns_rr_aaaa\';\r\n parameter.label = \'aaaa\';\r\n} else if(parameter.type==\'cname\'){\r\n parameter.dimension = \'rr_cname\';\r\n parameter.tableName = \'metric_dns_rr_cname\';\r\n parameter.label = \'cname\';\r\n}', '\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'query_num\'){\r\n tempObj[\'queryRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2);\r\n }\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 19:56:02', '2022-09-16 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (574, 'dnsOverviewDimensionCycleAnalysis', '/dns/overview/dimensionCycleAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.dimension} AS ${parameter.label}, SUM(query_num) AS query_num, ROUND(AVG(avg_response_latency_ms),4) AS dns_response_latency_avg, SUM(traffic_inbound_byte + traffic_outbound_byte) AS total_bytes FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff}<#if parameter.type?default(\'\')?trim? length gt 0><#if parameter.type==\'qtype\' || parameter.type == \'rcode\'> AND ${parameter.dimension} IN(<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#else> AND ${parameter.dimension} IN(<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) </#if></#if> GROUP BY ${parameter.dimension}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'dnsServer\'){\r\n parameter.dimension = \'server_ip\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \'server_city\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'dnsServerIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_isp\';\r\n} else if(parameter.type==\'dnsServerOrganization\'){\r\n parameter.dimension = \'server_org\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_organization\';\r\n} else if(parameter.type==\'dnsServerRole\'){\r\n parameter.dimension = \'arrayJoin(server_role)\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_role\';\r\n} else if(parameter.type==\'qname\'){\r\n parameter.dimension = \'qname\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'qname\';\r\n} else if(parameter.type==\'sld\'){\r\n parameter.dimension = \'qname_sld\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'sld\';\r\n} else if(parameter.type==\'tld\'){\r\n parameter.dimension = \'qname_tld\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'tld\';\r\n} else if(parameter.type==\'qtype\'){\r\n parameter.dimension = \'qtype\';\r\n parameter.tableName = \'metric_dns_qtype\';\r\n parameter.label = \'qtype\';\r\n} else if(parameter.type==\'rcode\'){\r\n parameter.dimension = \'rcode\';\r\n parameter.tableName = \'metric_dns_rcode\';\r\n parameter.label = \'rcode\';\r\n} else if(parameter.type==\'a\'){\r\n parameter.dimension = \'rr_a\';\r\n parameter.tableName = \'metric_dns_rr_a\';\r\n parameter.label = \'a\';\r\n} else if(parameter.type==\'aaaa\'){\r\n parameter.dimension = \'rr_aaaa\';\r\n parameter.tableName = \'metric_dns_rr_aaaa\';\r\n parameter.label = \'aaaa\';\r\n} else if(parameter.type==\'cname\'){\r\n parameter.dimension = \'rr_cname\';\r\n parameter.tableName = \'metric_dns_rr_cname\';\r\n parameter.label = \'cname\';\r\n}', '\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'query_num\'){\r\n tempObj[\'queryRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2);\r\n }\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 19:56:02', '2022-09-16 19:56:09', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (575, 'dnsOverviewDrilldownList', '/dns/overview/drilldown/list', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ${parameter.dimension} AS ${parameter.label} FROM ${parameter.tableName} WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} <#if parameter.type?default(\'\')?trim? length gt 0 && parameter.type!=\'qtype\' && parameter.type!=\'rcode\'> AND notEmpty(${parameter.dimension}) </#if> <#if parameter.name?default(\'\')?trim? length gt 0> AND ${parameter.dimension} like \'%${parameter.name}%\' </#if> GROUP BY ${parameter.dimension} ORDER BY SUM(traffic_inbound_byte + traffic_outbound_byte) DESC <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'dnsServer\'){\r\n parameter.dimension = \'server_ip\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \'server_city\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'dnsServerIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_isp\';\r\n} else if(parameter.type==\'dnsServerOrganization\'){\r\n parameter.dimension = \'server_org\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_organization\';\r\n} else if(parameter.type==\'dnsServerRole\'){\r\n parameter.dimension = \'arrayJoin(server_role)\';\r\n parameter.tableName = \'metric_dns_server_ip\';\r\n parameter.label = \'dns_server_role\';\r\n} else if(parameter.type==\'qname\'){\r\n parameter.dimension = \'qname\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'qname\';\r\n} else if(parameter.type==\'sld\'){\r\n parameter.dimension = \'qname_sld\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'sld\';\r\n} else if(parameter.type==\'tld\'){\r\n parameter.dimension = \'qname_tld\';\r\n parameter.tableName = \'metric_dns_qname\';\r\n parameter.label = \'tld\';\r\n} else if(parameter.type==\'qtype\'){\r\n parameter.dimension = \'qtype\';\r\n parameter.tableName = \'metric_dns_qtype\';\r\n parameter.label = \'qtype\';\r\n} else if(parameter.type==\'rcode\'){\r\n parameter.dimension = \'rcode\';\r\n parameter.tableName = \'metric_dns_rcode\';\r\n parameter.label = \'rcode\';\r\n} else if(parameter.type==\'a\'){\r\n parameter.dimension = \'rr_a\';\r\n parameter.tableName = \'metric_dns_rr_a\';\r\n parameter.label = \'a\';\r\n} else if(parameter.type==\'aaaa\'){\r\n parameter.dimension = \'rr_aaaa\';\r\n parameter.tableName = \'metric_dns_rr_aaaa\';\r\n parameter.label = \'aaaa\';\r\n} else if(parameter.type==\'cname\'){\r\n parameter.dimension = \'rr_cname\';\r\n parameter.tableName = \'metric_dns_rr_cname\';\r\n parameter.label = \'cname\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"Object\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var val = \'\';\r\n for (var key in pojo){ \r\n val = pojo[key];\r\n }\r\n o.result[i] = val;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 19:20:50', '2022-09-16 19:20:52', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (576, 'dnsOverviewDrilldownTrafficAnalysis', '/dns/overview/drilldown/trafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT granularity AS granularity, SUM(total_bytes) AS bytes_total, SUM(inbound_bytes) AS inbound_bytes, SUM(outbound_bytes) AS outbound_bytes, SUM(query_num) as query_num FROM ( SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS granularity, client_zone, server_zone, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes, IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes, COUNT(*) AS query_num FROM session_record_cn AS a WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'DNS\' <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY granularity,client_zone,server_zone ORDER BY granularity ) GROUP BY granularity ORDER BY granularity ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"granularity\") != -1){\r\n tempObj[\'granularity\'] = pojo[key]\r\n }else if(key.indexOf(\"bytes_total\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key == \'query_num\'){\r\n tempObj[\'totalQueryRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var bytes = [];\r\n var queries = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"Bits\") != -1){\r\n bytes.push(key);\r\n } else if(key.indexOf(\"Query\") != -1){\r\n queries.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"totalBitsRate\",\"bytes_total\");\r\n map.put(\"inboundBitsRate\",\"inbound_bytes\");\r\n map.put(\"outboundBitsRate\",\"outbound_bytes\");\r\n map.put(\"totalQueryRate\",\"query_num\");\r\n var type = {};\r\n type.bytes = bytes;\r\n type.queries = queries;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"granularity\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 10:03:32', '2022-09-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (577, 'dnsOverviewDrilldownDimensionAnalysis', '/dns/overview/drilldown/dimensionAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.label}, SUM(total_bytes) AS total_bytes, SUM(query_num) AS query_num, SUM(total_internal_query_num) AS total_internal_query_num, SUM(total_external_query_num) AS total_external_query_num, ROUND(AVG(dns_response_latency_avg)) AS dns_response_latency_avg FROM ( SELECT ${parameter.dimension} AS ${parameter.label}, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, COUNT(*) AS query_num, IF(client_zone = \'internal\', SUM(common_sessions), 0) AS total_internal_query_num, IF(client_zone = \'external\', SUM(common_sessions), 0) AS total_external_query_num, ROUND(AVG(dns_response_latency_ms)) AS dns_response_latency_avg FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} <#if parameter.type?default(\'\')?trim? length gt 0 && parameter.type!=\'qtype\' && parameter.type!=\'rcode\'> AND notEmpty(${parameter.label}) </#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> AND ${parameter.filter} </#if> AND common_schema_type = \'DNS\' GROUP BY ${parameter.label},client_zone ) GROUP BY ${parameter.label} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY query_num desc </#if> LIMIT 10\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy==\'queryRate\') {\r\nparameter.orderBy=\'query_num\'\r\n}\r\nif (parameter.orderBy) {\r\nparameter.orderBy = toLine(parameter.orderBy);\r\n}\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nif(parameter.type==\'dnsServer\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'dns_server\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'dnsServerIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'dns_server_isp\';\r\n} else if(parameter.type==\'dnsServerOrganization\'){\r\n parameter.dimension = \'dns_server_org\';\r\n parameter.label = \'dns_server_org\';\r\n} else if(parameter.type==\'dnsServerRole\'){\r\n parameter.dimension = \'arrayJoin(dns_server_role)\';\r\n parameter.label = \'dns_server_role\';\r\n} else if(parameter.type==\'qname\'){\r\n parameter.dimension = \'dns_qname\';\r\n parameter.label = \'qname\';\r\n} else if(parameter.type==\'sld\'){\r\n parameter.dimension = \'cutToFirstSignificantSubdomain(dns_qname)\';\r\n parameter.label = \'sld\';\r\n} else if(parameter.type==\'tld\'){\r\n parameter.dimension = \'topLevelDomain(dns_qname)\';\r\n parameter.label = \'tld\';\r\n} else if(parameter.type==\'qtype\'){\r\n parameter.dimension = \'dns_qtype\';\r\n parameter.label = \'qtype\';\r\n} else if(parameter.type==\'rcode\'){\r\n parameter.dimension = \'dns_rcode\';\r\n parameter.label = \'rcode\';\r\n} else if(parameter.type==\'a\'){\r\n parameter.dimension = \"arrayJoin(tupleElement(tupleElement(JSONExtract(dns_rr,\'Tuple(rr Nested(name String, type UInt32, a String))\'), \'rr\'), \'a\'))\";\r\n parameter.label = \'a\';\r\n if(parameter.q){\r\n parameter.filter = \"notEmpty(dns_rr) AND has(JSONExtractArrayRaw(JSON_QUERY(\'$.rr[*].type\', dns_rr) ), \'1\')\";\r\n }\r\n} else if(parameter.type==\'aaaa\'){\r\n parameter.dimension = \"arrayJoin(tupleElement(tupleElement(JSONExtract(dns_rr,\'Tuple(rr Nested(name String, type UInt32, aaaa String))\'), \'rr\'), \'aaaa\'))\";\r\n parameter.label = \'aaaa\';\r\n if(parameter.q){\r\n parameter.filter = \"notEmpty(dns_rr) and has(JSONExtractArrayRaw(JSON_QUERY(\'$.rr[*].type\', dns_rr) ), \'28\')\";\r\n }\r\n} else if(parameter.type==\'cname\'){\r\n parameter.dimension = \"arrayJoin(tupleElement(tupleElement(JSONExtract(dns_rr,\'Tuple(rr Nested(name String, type UInt32, cname String))\'), \'rr\'), \'cname\'))\";\r\n parameter.label = \'cname\';\r\n if(parameter.q){\r\n parameter.filter = \"notEmpty(dns_rr) and has(JSONExtractArrayRaw(JSON_QUERY(\'$.rr[*].type\', dns_rr) ), \'5\')\";\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'query_num\'){\r\n tempObj[\'queryRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2);\r\n }\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 10:03:32', '2022-09-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (578, 'dnsOverviewDrilldownDimensionCycleAnalytsis', '/dns/overview/drilldown/dimensionCycleAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.dimension} AS ${parameter.label}, SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes, COUNT(*) AS query_num, ROUND(AVG(dns_response_latency_ms)) AS dns_response_latency_avg FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} - ${parameter.timeDiff} AND common_recv_time < ${parameter.endTime} - ${parameter.timeDiff} <#if parameter.type?default(\'\')?trim? length gt 0><#if parameter.type == \'qtype\' || parameter.type == \'rcode\'> AND ${parameter.label} IN(<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#else> AND ${parameter.label} IN(<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) </#if></#if> <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if><#if parameter.filter?default(\'\')?trim? length gt 0> AND ${parameter.filter} </#if> AND common_schema_type = \'DNS\' GROUP BY ${parameter.label}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';\r\nif(parameter.type==\'dnsServer\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'dns_server\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'dnsServerIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'dns_server_isp\';\r\n} else if(parameter.type==\'dnsServerOrganization\'){\r\n parameter.dimension = \'dns_server_org\';\r\n parameter.label = \'dns_server_org\';\r\n} else if(parameter.type==\'dnsServerRole\'){\r\n parameter.dimension = \'arrayJoin(dns_server_role)\';\r\n parameter.label = \'dns_server_role\';\r\n} else if(parameter.type==\'qname\'){\r\n parameter.dimension = \'dns_qname\';\r\n parameter.label = \'qname\';\r\n} else if(parameter.type==\'sld\'){\r\n parameter.dimension = \'cutToFirstSignificantSubdomain(dns_qname)\';\r\n parameter.label = \'sld\';\r\n} else if(parameter.type==\'tld\'){\r\n parameter.dimension = \'topLevelDomain(dns_qname)\';\r\n parameter.label = \'tld\';\r\n} else if(parameter.type==\'qtype\'){\r\n parameter.dimension = \'dns_qtype\';\r\n parameter.label = \'qtype\';\r\n} else if(parameter.type==\'rcode\'){\r\n parameter.dimension = \'dns_rcode\';\r\n parameter.label = \'rcode\';\r\n} else if(parameter.type==\'a\'){\r\n parameter.dimension = \"arrayJoin(tupleElement(tupleElement(JSONExtract(dns_rr,\'Tuple(rr Nested(name String, type UInt32, a String))\'), \'rr\'), \'a\'))\";\r\n parameter.label = \'a\';\r\n if(parameter.q){\r\n parameter.filter = \"notEmpty(dns_rr) AND has(JSONExtractArrayRaw(JSON_QUERY(\'$.rr[*].type\', dns_rr) ), \'1\')\";\r\n }\r\n} else if(parameter.type==\'aaaa\'){\r\n parameter.dimension = \"arrayJoin(tupleElement(tupleElement(JSONExtract(dns_rr,\'Tuple(rr Nested(name String, type UInt32, aaaa String))\'), \'rr\'), \'aaaa\'))\";\r\n parameter.label = \'aaaa\';\r\n if(parameter.q){\r\n parameter.filter = \"notEmpty(dns_rr) and has(JSONExtractArrayRaw(JSON_QUERY(\'$.rr[*].type\', dns_rr) ), \'28\')\";\r\n }\r\n} else if(parameter.type==\'cname\'){\r\n parameter.dimension = \"arrayJoin(tupleElement(tupleElement(JSONExtract(dns_rr,\'Tuple(rr Nested(name String, type UInt32, cname String))\'), \'rr\'), \'cname\'))\";\r\n parameter.label = \'cname\';\r\n if(parameter.q){\r\n parameter.filter = \"notEmpty(dns_rr) and has(JSONExtractArrayRaw(JSON_QUERY(\'$.rr[*].type\', dns_rr) ), \'5\')\";\r\n }\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'query_num\'){\r\n tempObj[\'queryRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2);\r\n }\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-16 10:03:32', '2022-09-16 13:03:36', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (579, 'linkOverviewAnalysis', '/link/overview/analysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT arrayJoin(splitByChar(\'_\', concat(toString(common_egress_link_id), \'_\', toString(common_ingress_link_id)))) AS link_id,SUM(IF(toString(common_egress_link_id) = link_id, traffic_outbound_byte, 0)) AS egress_bytes,SUM(IF(toString(common_ingress_link_id) = link_id, traffic_inbound_byte, 0)) AS ingress_bytes FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} GROUP BY link_id\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \"egress_bytes\"){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n if(key == \"ingress_bytes\"){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 09:54:24', '2022-09-23 09:54:26', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (580, 'linkOverviewNextHopAnalysis', '/link/overview/nextHopAnalysis', 'v1', 'GET', '/', ' {\r\n \"query\": \"SELECT egress_link_direction AS egress_link_direction, ingress_link_direction AS ingress_link_direction, SUM(traffic_outbound_byte) AS egress_bytes, SUM(traffic_inbound_byte) AS ingress_bytes FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} GROUP BY egress_link_direction, ingress_link_direction\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'egress_bytes\'){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n if(key == \'ingress_bytes\'){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 09:58:36', '2022-09-23 09:58:38', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (581, 'linkOverviewQuadrupleEgressAnalysis', '/link/overview/quadrupleEgressAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT IF(client_zone = \'internal\' AND server_zone = \'external\', client_province, IF(client_zone = \'external\' AND server_zone = \'internal\', server_province, NULL)) AS internal_location,IF(client_zone = \'internal\' AND server_zone = \'external\', server_province, IF(client_zone = \'external\' AND server_zone = \'internal\', client_province, NULL)) AS external_location,egress_link_direction AS egress_link_direction,common_egress_link_id AS common_egress_link_id,SUM(traffic_outbound_byte) AS egress_bytes FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(egress_link_direction) AND notEmpty(internal_location) AND notEmpty(external_location) GROUP BY internal_location,egress_link_direction,common_egress_link_id,external_location ORDER BY egress_bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'egress_bytes\'){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (582, 'linkOverviewQuadrupleIngressAnalysis', '/link/overview/quadrupleIngressAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT IF(client_zone = \'external\' AND server_zone = \'internal\', server_province, IF(client_zone = \'internal\' AND server_zone = \'external\', client_province, NULL)) AS internal_location,IF(client_zone = \'external\' AND server_zone = \'internal\', client_province, IF(client_zone = \'internal\' AND server_zone = \'external\', server_province, NULL)) AS external_location,ingress_link_direction AS ingress_link_direction,common_ingress_link_id AS common_ingress_link_id,SUM(traffic_inbound_byte) AS ingress_bytes FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(ingress_link_direction) AND notEmpty(external_location) AND notEmpty(internal_location) GROUP BY external_location,ingress_link_direction,common_ingress_link_id,internal_location ORDER BY ingress_bytes DESC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'ingress_bytes\'){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (583, 'linkOverviewBigramAnalysis', '/link/overview/bigramAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT common_egress_link_id AS egress_link_id,common_ingress_link_id AS ingress_link_id,SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes,SUM(traffic_outbound_byte) AS egress_bytes,SUM(traffic_inbound_byte) AS ingress_bytes,ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms,ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency,ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency,ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent,ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} GROUP BY egress_link_id,ingress_link_id\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'egress_bytes\'){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n if(key == \'ingress_bytes\'){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (584, 'linkOverviewBigramNextHopAnalysis', '/link/overview/bigramNextHopAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT egress_link_direction AS egress_link_direction,ingress_link_direction AS ingress_link_direction,SUM(common_c2s_byte_num + common_s2c_byte_num) AS total_bytes,SUM(traffic_outbound_byte) AS egress_bytes,SUM(traffic_inbound_byte) AS ingress_bytes,ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms,ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency,ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency,ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent,ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND (notEmpty(egress_link_direction) AND notEmpty(ingress_link_direction)) GROUP BY egress_link_direction,ingress_link_direction\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'egress_bytes\'){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n if(key == \'ingress_bytes\'){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (585, 'linkOverviewDrilldownTotalTrafficAnalysis', '/link/overview/drilldown/totalTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(stat_time,\'PT${parameter.step}S\',\'zero\') AS stat_time,SUM(IF( ${parameter.egressParam}, traffic_outbound_byte, 0)) AS egress_bytes,SUM(IF( ${parameter.ingressParam}, traffic_inbound_byte, 0)) AS ingress_bytes,SUM(IF( ${parameter.egressParam}, traffic_outbound_pkt, 0)) AS egress_pkt,SUM(IF( ${parameter.ingressParam}, traffic_inbound_pkt, 0)) AS ingress_pkt,(egress_bytes + ingress_bytes) AS bytes_total,(egress_pkt + ingress_pkt) AS packets_total FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY stat_time ORDER BY bytes_total DESC <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.stat_time - b.stat_time;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"stat_time\") != -1){\r\n tempObj[\'stat_time\'] = pojo[key]\r\n }else if(key.indexOf(\"bytes_total\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"ingress_bytes\") != -1){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"egress_bytes\") != -1){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key == \'packets_total\'){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key == \'ingress_pkt\'){\r\n tempObj[\'ingressPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key == \'egress_pkt\'){\r\n tempObj[\'egressPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var bytes = [];\r\n var packets = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"Bits\") != -1){\r\n bytes.push(key);\r\n } else if(key.indexOf(\"Packets\") != -1){\r\n packets.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"totalBitsRate\",\"bytes_total\");\r\n map.put(\"ingressBitsRate\",\"ingress_bytes\");\r\n map.put(\"egressBitsRate\",\"egress_bytes\");\r\n map.put(\"totalPacketsRate\",\"packets_total\");\r\n map.put(\"ingressPacketsRate\",\"ingress_pkt\");\r\n map.put(\"egressPacketsRate\",\"egress_pkt\");\r\n var type = {};\r\n type.bytes = bytes;\r\n type.packets = packets;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"stat_time\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (586, 'linkOverviewDrilldownNetworkAnalysis', '/link/overview/drilldown/networkAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT SUM(IF( ${parameter.egressParam}, traffic_outbound_byte, 0) + IF( ${parameter.ingressParam}, traffic_inbound_byte, 0)) as total_bytes,SUM(IF( ${parameter.egressParam}, traffic_outbound_pkt, 0) + IF( ${parameter.ingressParam}, traffic_inbound_pkt, 0)) AS total_packets,ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms,ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency,ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency,ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent,ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\nparameter.timeDiff = parameter.endTime - parameter.startTime', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'total_bytes\'){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (587, 'linkOverviewDrilldownQuadrupleEgressAnalysis', '/link/overview/drilldown/quadrupleEgressAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT IF(client_zone = \'internal\' AND server_zone = \'external\', client_province, IF(client_zone = \'external\' AND server_zone = \'internal\', server_province, NULL)) AS internal_location,IF(client_zone = \'internal\' AND server_zone = \'external\', server_province, IF(client_zone = \'external\' AND server_zone = \'internal\', client_province, NULL)) AS external_location,egress_link_direction AS egress_link_direction,common_egress_link_id AS common_egress_link_id,SUM(traffic_outbound_byte) AS egress_bytes FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(egress_link_direction) AND notEmpty(internal_location) AND notEmpty(external_location) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY internal_location,egress_link_direction,common_egress_link_id,external_location\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\nparameter.timeDiff = parameter.endTime - parameter.startTime', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'egress_bytes\'){\r\n tempObj[\'egressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (588, 'linkOverviewDrilldownQuadrupleIngressAnalysis', '/link/overview/drilldown/quadrupleIngressAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT IF(client_zone = \'external\' AND server_zone = \'internal\', server_province, IF(client_zone = \'internal\' AND server_zone = \'external\', client_province, NULL)) AS internal_location,IF(client_zone = \'external\' AND server_zone = \'internal\', client_province, IF(client_zone = \'internal\' AND server_zone = \'external\', server_province, NULL)) AS external_location,ingress_link_direction AS ingress_link_direction,common_ingress_link_id AS common_ingress_link_id,SUM(traffic_inbound_byte) AS ingress_bytes FROM metric_link WHERE stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} AND notEmpty(ingress_link_direction) AND notEmpty(external_location) AND notEmpty(internal_location) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY external_location,ingress_link_direction,common_ingress_link_id,internal_location\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'ingress_bytes\'){\r\n tempObj[\'ingressBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:00:44', '2022-09-23 10:00:46', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (589, 'linkOverviewDrilldownDimensionAnalysis', '/link/overview/drilldown/dimension/analysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT ${parameter.label} AS ${parameter.label},SUM(bytes_total) AS total_bytes,SUM(packets_total) AS total_packets,SUM(sessions) AS sessions,SUM(inbound_bytes) AS inbound_bytes,SUM(inbound_packets) AS inbound_packets,SUM(outbound_bytes) AS outbound_bytes,SUM(outbound_packets) AS outbound_packets,SUM(internal_bytes) AS internal_bytes,SUM(internal_packets) AS internal_packets,SUM(external_bytes) AS through_bytes,SUM(external_packets) AS through_packets FROM ( SELECT ${parameter.dimension} as ${parameter.label},SUM(common_s2c_byte_num + common_c2s_byte_num) AS bytes_total,SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS packets_total,SUM(common_sessions) AS sessions,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS external_bytes,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS external_packets FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND notEmpty(${parameter.label}) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label},client_zone,server_zone) GROUP BY ${parameter.label} <#if parameter.orderBy?default(\'\')?trim? length gt 0> ORDER BY ${parameter.orderBy} desc <#else> ORDER BY total_bytes desc </#if> <#if parameter.limit?default(\'\')?trim? length gt 0> LIMIT ${parameter.limit} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n} else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n} else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n} else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n} else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n} else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n} else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n} else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n} else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n} else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n} else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n} else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }else if(key.indexOf(\"sessions\") != -1){\r\n tempObj[\'sessionsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2)\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:44:53', '2022-09-23 10:44:54', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (590, 'linkOverviewDrilldownDimensionCycleAnalysis', '/link/overview/drilldown/dimension/cycleAnalysis', 'v1', 'GET', '/', ' {\r\n \"query\": \"SELECT ${parameter.dimension} AS ${parameter.label},SUM(common_c2s_byte_num + common_s2c_byte_num) AS bytes,SUM(common_c2s_pkt_num + common_s2c_pkt_num) AS packets,SUM(common_sessions) AS sessions FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label}\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n} else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n} else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n} else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n} else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n} else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n} else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n} else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n} else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n} else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n} else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n} else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n if(key == \'bytes\'){\r\n tempObj[\'bitsRate\'] = (pojo[key] / parameter.timeDiff).toFixed(2) * 8;\r\n }\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:45:33', '2022-09-23 10:45:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (591, 'linkOverviewDrilldownDimensionNetworkAnalysis', '/link/overview/drilldown/dimension/networkAnalysis', 'v1', 'GET', '/', ' {\r\n \"query\": \"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'>SELECT ${parameter.dimension} AS ${parameter.label},ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label},ROUND(AVG(common_establish_latency_ms)) AS establish_latency_ms,ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4) AS tcp_lostlen_percent,ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n} else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n} else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n} else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n} else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n} else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n} else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n} else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n} else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n} else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n} else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n} else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:45:33', '2022-09-23 10:45:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (592, 'linkOverviewDrilldownDimensionHttpResponseDelay', '/link/overview/drilldown/dimension/httpResponseDelay', 'v1', 'GET', '/', ' {\r\n \"query\": \"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'>SELECT ${parameter.dimension} AS ${parameter.label},ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_schema_type = \'HTTP\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label},ROUND(AVG(http_response_latency_ms)) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n} else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n} else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n} else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n} else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n} else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n} else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n} else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n} else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n} else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n} else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n} else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:45:33', '2022-09-23 10:45:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (593, 'linkOverviewDrilldownDimensionSslConDelay', '/link/overview/drilldown/dimension/sslConDelay', 'v1', 'GET', '/', ' {\r\n \"query\": \"<#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'>SELECT ${parameter.dimension} AS ${parameter.label},ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime}-${parameter.timeDiff} AND common_recv_time < ${parameter.endTime}-${parameter.timeDiff} AND common_schema_type = \'SSL\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} <#else> SELECT ${parameter.dimension} AS ${parameter.label},ROUND(AVG(ssl_con_latency_ms)) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' AND ${parameter.label} IN (<#if parameter.params?default(\'\')?trim? length gt 0> ${parameter.params} </#if>) <#if parameter.q?default(\'\')?trim? length gt 0> AND (${parameter.q}) </#if> GROUP BY ${parameter.label} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'function toLine(name) { return name.replace(/([A-Z])/g,\"_$1\").toLowerCase(); }\r\nif (parameter.orderBy) {\r\n parameter.orderBy = toLine(parameter.orderBy);\r\n}\r\n\r\nif (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(common_client_ip,\'_\',common_server_ip)))\";\r\n parameter.label = \'ip\';\r\n } else if(parameter.type==\'country\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_country,\'_\',server_country)))\";\r\n parameter.label = \'country\';\r\n} else if(parameter.type==\'asn\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_asn,\'_\',server_asn)))\";\r\n parameter.label = \'asn\';\r\n} else if(parameter.type==\'appLabel\'){\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n} else if(parameter.type==\'appCompany\'){\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n} else if(parameter.type==\'domain\'){\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n} else if(parameter.type==\'l7Protocol\'){\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n} else if(parameter.type==\'idcRenter\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_idc_renter,\'_\',server_idc_renter)))\";\r\n parameter.label = \'idc_renter\';\r\n} else if(parameter.type==\'province\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_province,\'_\',server_province)))\";\r\n parameter.label = \'province\';\r\n} else if(parameter.type==\'city\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_region,\'_\',server_region)))\";\r\n parameter.label = \'city\';\r\n} else if(parameter.type==\'isp\'){\r\n parameter.dimension = \"arrayJoin(splitByChar(\'_\',concat(client_isp,\'_\',server_isp)))\";\r\n parameter.label = \'isp\';\r\n} else if(parameter.type==\'appSubcategory\'){\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n} else if(parameter.type==\'domainCategoryName\'){\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n} else if(parameter.type==\'httpHost\'){\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n} else if(parameter.type==\'sslSni\'){\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n} else if(parameter.type==\'protocolPort\'){\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.dimension = \'common_client_ip\';\r\n parameter.label = \'client_ip\';\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.dimension = \'common_server_ip\';\r\n parameter.label = \'server_ip\';\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.dimension = \'client_country\';\r\n parameter.label = \'client_country\';\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.dimension = \'server_country\';\r\n parameter.label = \'server_country\';\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.dimension = \'client_province\';\r\n parameter.label = \'client_province\';\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.dimension = \'server_province\';\r\n parameter.label = \'server_province\';\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.dimension = \'client_region\';\r\n parameter.label = \'client_city\';\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.dimension = \'server_region\';\r\n parameter.label = \'server_city\';\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.dimension = \'client_isp\';\r\n parameter.label = \'client_isp\';\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.dimension = \'server_isp\';\r\n parameter.label = \'server_isp\';\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.dimension = \'client_idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.dimension = \'server_idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.dimension = \'client_asn\';\r\n parameter.label = \'client_asn\';\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.dimension = \'server_asn\';\r\n parameter.label = \'server_asn\';\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"table\";\r\n o.result=result.data;\r\n if(o.result.length > 0){\r\n for(var i in o.result){\r\n var pojo = o.result[i];\r\n var tempObj = {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result[i] = tempObj;\r\n }\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-09-23 10:45:33', '2022-09-23 10:45:34', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (594, 'applicationPerformanceOverviewTotalTrafficAnalysis', '/application/performance/overview/totalTrafficAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT granularity AS granularity,SUM(total_bytes) AS total_bytes,SUM(total_packets) AS total_packets,SUM(total_sessions) AS total_sessions,SUM(inbound_bytes) AS inbound_bytes,SUM(inbound_packets) AS inbound_packets,SUM(outbound_bytes) AS outbound_bytes,SUM(outbound_packets) AS outbound_packets,SUM(internal_bytes) AS internal_bytes,SUM(internal_packets) AS internal_packets,SUM(external_bytes) AS through_bytes,SUM(external_packets) AS through_packets FROM ( SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS granularity,client_zone,server_zone,SUM(common_s2c_byte_num + common_c2s_byte_num) AS total_bytes,SUM(common_s2c_pkt_num + common_c2s_pkt_num) AS total_packets,SUM(common_sessions) AS total_sessions,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_byte_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_byte_num), 0)) AS inbound_bytes,IF(client_zone = \'internal\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num), IF(client_zone = \'external\' AND server_zone = \'internal\', SUM(common_c2s_pkt_num), 0)) AS inbound_packets,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_byte_num), 0)) AS outbound_bytes,IF(client_zone = \'external\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num), IF(client_zone = \'internal\' AND server_zone = \'external\', SUM(common_c2s_pkt_num), 0)) AS outbound_packets,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS internal_bytes,IF(client_zone = \'internal\' AND server_zone = \'internal\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS internal_packets,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_byte_num + common_c2s_byte_num),0) AS external_bytes,IF(client_zone = \'external\' AND server_zone = \'external\' , SUM(common_s2c_pkt_num + common_c2s_pkt_num), 0) AS external_packets FROM session_record_cn AS a WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} GROUP BY granularity,client_zone,server_zone ORDER BY granularity ) GROUP BY granularity ORDER BY granularity ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', ' if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"granularity\") != -1){\r\n tempObj[\'granularity\'] = pojo[key]\r\n }else if(key.indexOf(\"total_bytes\") != -1){\r\n tempObj[\'totalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"total_packets\") != -1){\r\n tempObj[\'totalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"total_sessions\") != -1){\r\n tempObj[\'totalSessionsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"inbound_bytes\") != -1){\r\n tempObj[\'inboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"inbound_packets\") != -1){\r\n tempObj[\'inboundPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"outbound_bytes\") != -1){\r\n tempObj[\'outboundBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"outbound_packets\") != -1){\r\n tempObj[\'outboundPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"internal_bytes\") != -1){\r\n tempObj[\'internalBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"internal_packets\") != -1){\r\n tempObj[\'internalPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }else if(key.indexOf(\"through_bytes\") != -1){\r\n tempObj[\'throughBitsRate\'] = (pojo[key] / parameter.step).toFixed(2) * 8\r\n }else if(key.indexOf(\"through_packets\") != -1){\r\n tempObj[\'throughPacketsRate\'] = (pojo[key] / parameter.step).toFixed(2)\r\n }\r\n }\r\n list[i] = tempObj;\r\n }\r\n var bytes = [];\r\n var packets = [];\r\n var sessions = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"Bits\") != -1){\r\n bytes.push(key);\r\n } else if(key.indexOf(\"Packets\") != -1){\r\n packets.push(key);\r\n } else if(key.indexOf(\"Sessions\") != -1){\r\n sessions.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"totalBitsRate\",\"bytes_total\");\r\n map.put(\"totalPacketsRate\",\"packets_total\");\r\n map.put(\"totalSessionsRate\",\"total_sessions\");\r\n map.put(\"inboundBitsRate\",\"inbound_bytes\");\r\n map.put(\"inboundPacketsRate\",\"inbound_packets\");\r\n map.put(\"outboundBitsRate\",\"outbound_bytes\");\r\n map.put(\"outboundPacketsRate\",\"outbound_packets\");\r\n map.put(\"internalBitsRate\",\"internal_bytes\");\r\n map.put(\"internalPacketsRate\",\"internal_packets\");\r\n map.put(\"throughBitsRate\",\"through_bytes\");\r\n map.put(\"throughPacketsRate\",\"through_packets\");\r\n var type = {};\r\n type.bytes = bytes;\r\n type.packets = packets;\r\n type.sessions = sessions;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"granularity\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n var len = old[0][\"totalBitsRate\"][\"values\"].length;\r\n for(var a in old){\r\n if(old[a].type == \'bytes\' || old[a].type == \'packets\'){\r\n var other = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n var sumValue = 0;\r\n for(var i=0; i<len; i++){\r\n var sum = 0;\r\n var tempArray = new java.util.ArrayList();\r\n for(var b in old[a]){\r\n if(b != \'type\'){\r\n if(b.indexOf(\"total\") != -1){\r\n sum += Number(old[a][b][\"values\"][i][1]);\r\n } else {\r\n sum -= Number(old[a][b][\"values\"][i][1]);\r\n }\r\n sum = sum>0?sum:0;\r\n }\r\n }\r\n tempArray.add(old[0][\"totalBitsRate\"][\"values\"][i][0]);\r\n tempArray.add(sum.toFixed(2));\r\n values.add(tempArray);\r\n sumValue += Number(sum);\r\n }\r\n analysis.avg = Math.round((sumValue / len)*100)/100 + \"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n other.values = values;\r\n other.analysis = analysis;\r\n old[a].other = other;\r\n }\r\n }\r\n }\r\n \r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-10-31 09:46:02', '2022-10-31 09:46:04', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (595, 'applicationPerformanceOverviewNetworkAnalysis', '/application/performance/overview/totalNetworkAnalysis', 'v1', 'GET', '/', '{\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS stat_time,IFNULL(ROUND(AVG(common_establish_latency_ms)),0) AS establish_latency_ms,IFNULL(ROUND(SUM(common_c2s_tcp_lostlen + common_s2c_tcp_lostlen)/SUM(common_c2s_byte_num + common_s2c_byte_num + common_c2s_tcp_lostlen + common_s2c_tcp_lostlen),4),0) AS tcp_lostlen_percent,IFNULL(ROUND(SUM(common_c2s_pkt_retrans + common_s2c_pkt_retrans)/ SUM(common_c2s_pkt_num + common_s2c_pkt_num),4),0) AS pkt_retrans_percent FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_l4_protocol IN (\'IPv4_TCP\', \'IPv6_TCP\') GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"stat_time\") != -1){\r\n tempObj[\'statTime\'] = pojo[key]\r\n }else if(key.indexOf(\"establish_latency_ms\") != -1){\r\n tempObj[\'establishLatencyMs\'] = pojo[key]\r\n }else if(key.indexOf(\"http_response_latency\") != -1){\r\n tempObj[\'httpResponseLatency\'] = pojo[key]\r\n }else if(key.indexOf(\"ssl_con_latency\") != -1){\r\n tempObj[\'sslConLatency\'] = pojo[key]\r\n }else if(key.indexOf(\"tcp_lostlen_percent\") != -1){\r\n tempObj[\'tcpLostlenPercent\'] = pojo[key]\r\n }else if(key.indexOf(\"pkt_retrans_percent\") != -1){\r\n tempObj[\'pktRetransPercent\'] = pojo[key]\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var establishLatencyMs = [];\r\n var httpResponseLatency = [];\r\n var sslConLatency = [];\r\n var tcpLostlenPercent = [];\r\n var pktRetransPercent = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"establishLatencyMs\") != -1){\r\n establishLatencyMs.push(key);\r\n } else if(key.indexOf(\"httpResponseLatency\") != -1){\r\n httpResponseLatency.push(key);\r\n } else if(key.indexOf(\"sslConLatency\") != -1){\r\n sslConLatency.push(key);\r\n } else if(key.indexOf(\"tcpLostlenPercent\") != -1){\r\n tcpLostlenPercent.push(key);\r\n } else if(key.indexOf(\"pktRetransPercent\") != -1){\r\n pktRetransPercent.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n map.put(\"establishLatencyMs\",\"establish_latency_ms\");\r\n map.put(\"httpResponseLatency\",\"http_response_latency\");\r\n map.put(\"sslConLatency\",\"ssl_con_latency\");\r\n map.put(\"tcpLostlenPercent\",\"tcp_lostlen_percent\");\r\n map.put(\"pktRetransPercent\",\"pkt_retrans_percent\");\r\n var type = {};\r\n type.establishLatencyMs = establishLatencyMs;\r\n type.tcpLostlenPercent = tcpLostlenPercent;\r\n type.pktRetransPercent = pktRetransPercent;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-10-31 10:18:31', '2022-10-31 10:18:32', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (596, 'applicationPerformanceOverviewHttpResponseDelay', '/application/performance/overview/totalHttpResponseDelay', 'v1', 'GET', '/', ' {\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS stat_time,IFNULL(ROUND(AVG(http_response_latency_ms)),0) AS http_response_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'HTTP\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"stat_time\") != -1){\r\n tempObj[\'statTime\'] = pojo[key]\r\n }else if(key.indexOf(\"establish_latency_ms\") != -1){\r\n tempObj[\'establishLatencyMs\'] = pojo[key]\r\n }else if(key.indexOf(\"http_response_latency\") != -1){\r\n tempObj[\'httpResponseLatency\'] = pojo[key]\r\n }else if(key.indexOf(\"ssl_con_latency\") != -1){\r\n tempObj[\'sslConLatency\'] = pojo[key]\r\n }else if(key.indexOf(\"tcp_lostlen_percent\") != -1){\r\n tempObj[\'tcpLostlenPercent\'] = pojo[key]\r\n }else if(key.indexOf(\"pkt_retrans_percent\") != -1){\r\n tempObj[\'pktRetransPercent\'] = pojo[key]\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var establishLatencyMs = [];\r\n var httpResponseLatency = [];\r\n var sslConLatency = [];\r\n var tcpLostlenPercent = [];\r\n var pktRetransPercent = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"establishLatencyMs\") != -1){\r\n establishLatencyMs.push(key);\r\n } else if(key.indexOf(\"httpResponseLatency\") != -1){\r\n httpResponseLatency.push(key);\r\n } else if(key.indexOf(\"sslConLatency\") != -1){\r\n sslConLatency.push(key);\r\n } else if(key.indexOf(\"tcpLostlenPercent\") != -1){\r\n tcpLostlenPercent.push(key);\r\n } else if(key.indexOf(\"pktRetransPercent\") != -1){\r\n pktRetransPercent.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n var type = {};\r\n type.httpResponseLatency = httpResponseLatency;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-10-31 10:20:59', '2022-10-31 10:21:03', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (597, 'applicationPerformanceOverviewSslConDelay', '/application/performance/overview/totalSslConDelay', 'v1', 'GET', '/', ' {\r\n \"query\": \"SELECT TIME_FLOOR_WITH_FILL(common_recv_time,\'PT${parameter.step}S\',\'zero\') AS stat_time,IFNULL(ROUND(AVG(ssl_con_latency_ms)),0) AS ssl_con_latency FROM session_record_cn WHERE common_recv_time >= ${parameter.startTime} AND common_recv_time < ${parameter.endTime} AND common_schema_type = \'SSL\' GROUP BY stat_time ORDER BY stat_time ASC\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n/*计算step,series最多显示100个点,单位:s*/\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\nparameter.step = parameter.step>=30?parameter.step:30;\r\nparameter.timeDiff = parameter.endTime - parameter.startTime;\r\n\r\nparameter.endTime = \'toDateTime(\'+parameter.endTime+\')\';\r\nparameter.startTime = \'toDateTime(\'+parameter.startTime+\')\';', 'function f(a,b) {\r\n if(a-b>0){\r\n return 1;\r\n } else if(a-b==0){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n}\r\n\r\nfunction getPercentile(list, p){\r\n var n = list.length;\r\n list.sort(f);\r\n var px = p*(n-1);\r\n var i = Math.floor(px);\r\n var g = px - i;\r\n if(g==0){\r\n return list[i];\r\n }else{\r\n return (1-g)*list[i]+g*list[i+1];\r\n }\r\n}\r\n\r\nfunction toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nfunction sortByStatTime(a,b){ \r\n return a.granularity - b.granularity;\r\n}\r\n\r\nif(result.success){\r\n var o = {};\r\n o.resultType=\"object\";\r\n var old = new java.util.ArrayList();\r\n var list = result.data;\r\n var newList = new java.util.ArrayList();\r\n for(var i in list){\r\n newList.add(list[i]);\r\n }\r\n if(list.length > 0){\r\n for(var i in list){\r\n var pojo = list[i];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n if(key.indexOf(\"stat_time\") != -1){\r\n tempObj[\'statTime\'] = pojo[key]\r\n }else if(key.indexOf(\"establish_latency_ms\") != -1){\r\n tempObj[\'establishLatencyMs\'] = pojo[key]\r\n }else if(key.indexOf(\"http_response_latency\") != -1){\r\n tempObj[\'httpResponseLatency\'] = pojo[key]\r\n }else if(key.indexOf(\"ssl_con_latency\") != -1){\r\n tempObj[\'sslConLatency\'] = pojo[key]\r\n }else if(key.indexOf(\"tcp_lostlen_percent\") != -1){\r\n tempObj[\'tcpLostlenPercent\'] = pojo[key]\r\n }else if(key.indexOf(\"pkt_retrans_percent\") != -1){\r\n tempObj[\'pktRetransPercent\'] = pojo[key]\r\n }\r\n }\r\n list[i] = tempObj;\r\n list[i].statTime = list[i].statTime;\r\n }\r\n var establishLatencyMs = [];\r\n var httpResponseLatency = [];\r\n var sslConLatency = [];\r\n var tcpLostlenPercent = [];\r\n var pktRetransPercent = [];\r\n for(var key in list[0]){\r\n if(key.indexOf(\"establishLatencyMs\") != -1){\r\n establishLatencyMs.push(key);\r\n } else if(key.indexOf(\"httpResponseLatency\") != -1){\r\n httpResponseLatency.push(key);\r\n } else if(key.indexOf(\"sslConLatency\") != -1){\r\n sslConLatency.push(key);\r\n } else if(key.indexOf(\"tcpLostlenPercent\") != -1){\r\n tcpLostlenPercent.push(key);\r\n } else if(key.indexOf(\"pktRetransPercent\") != -1){\r\n pktRetransPercent.push(key);\r\n }\r\n }\r\n var map = new java.util.HashMap();\r\n var type = {};\r\n type.sslConLatency = sslConLatency;\r\n for(var key in type){\r\n var obj = {};\r\n obj.type = key;\r\n var typeKey = type[key];\r\n for(var m in typeKey){\r\n var zong = {};\r\n var analysis = {};\r\n var values = new java.util.ArrayList();\r\n list.sort(sortByStatTime);\r\n var sumValue = 0;\r\n for(var j in list){\r\n var pojo = list[j];\r\n var tempArray = new java.util.ArrayList();\r\n tempArray.add(pojo[\"statTime\"]);\r\n tempArray.add(pojo[typeKey[m]] + \"\");\r\n values.add(tempArray);\r\n }\r\n for(var i in newList){\r\n var pojo = newList[i];\r\n var field = map.get(typeKey[m]);\r\n var value = Number(pojo[field]);\r\n sumValue += value;\r\n }\r\n analysis.avg = (sumValue/parameter.timeDiff).toFixed(2);\r\n if(key==\"bytes\"){\r\n analysis.avg = analysis.avg * 8;\r\n }\r\n analysis.avg=analysis.avg+\"\";\r\n \r\n var plist = [];\r\n for(var k=0; k<values.length; k++){\r\n plist.push(values[k][1]);\r\n }\r\n plist.sort(f);\r\n plist.sort(f);\r\n analysis.max = plist[plist.length-1]+\"\";\r\n analysis.min = plist[0]+\"\";\r\n analysis.p95 = getPercentile(plist, 0.95)+\"\";\r\n \r\n \r\n zong.values = values;\r\n zong.analysis = analysis;\r\n \r\n obj[typeKey[m]] = zong;\r\n }\r\n old.add(obj);\r\n }\r\n }\r\n o.result = old;\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-10-31 10:21:54', '2022-10-31 10:21:56', 1, ''); -INSERT INTO `galaxy_proxy` VALUES (598, 'applicationPerformanceOverviewDrilldownDimensioAllNetworkAnalysis', '/application/performance/overview/drilldown/dimension/allNetworkAnalysis', 'v1', 'GET', '/', '{\r\n \"query\":\"SELECT ROUND(AVG(avg_establish_latency_ms), 4) AS establish_latency_ms_avg, ROUND(QUANTILE(avg_establish_latency_ms,0.50)) AS establish_latency_ms_p50, ROUND(QUANTILE(avg_establish_latency_ms,0.90)) AS establish_latency_ms_p90, ROUND(QUANTILE(avg_establish_latency_ms,0.95)) AS establish_latency_ms_p95, ROUND(QUANTILE(avg_establish_latency_ms,0.99)) AS establish_latency_ms_p99, ROUND(AVG(avg_http_response_latency_ms), 4) AS http_response_latency_avg, ROUND(QUANTILE(avg_http_response_latency_ms,0.50)) AS http_response_latency_p50, ROUND(QUANTILE(avg_http_response_latency_ms,0.90)) AS http_response_latency_p90, ROUND(QUANTILE(avg_http_response_latency_ms,0.95)) AS http_response_latency_p95, ROUND(QUANTILE(avg_http_response_latency_ms,0.99)) AS http_response_latency_p99, ROUND(AVG(avg_ssl_con_latency_ms), 4) AS ssl_con_latency_avg, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.50)) AS ssl_con_latency_p50, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.90)) AS ssl_con_latency_p90, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.95)) AS ssl_con_latency_p95, ROUND(QUANTILE(avg_ssl_con_latency_ms,0.99)) AS ssl_con_latency_p99, ROUND(AVG(tcp_lostlen_ratio), 4) AS tcp_lostlen_percent_avg, ROUND(QUANTILE(tcp_lostlen_ratio,0.50), 4) AS tcp_lostlen_percent_p50, ROUND(QUANTILE(tcp_lostlen_ratio,0.90), 4) AS tcp_lostlen_percent_p90, ROUND(QUANTILE(tcp_lostlen_ratio,0.95), 4) AS tcp_lostlen_percent_p95, ROUND(QUANTILE(tcp_lostlen_ratio,0.99), 4) AS tcp_lostlen_percent_p99, ROUND(AVG(pkt_retrans_ratio), 4) AS pkt_retrans_percent_avg, ROUND(QUANTILE(pkt_retrans_ratio,0.50), 4) AS pkt_retrans_percent_p50, ROUND(QUANTILE(pkt_retrans_ratio,0.90), 4) AS pkt_retrans_percent_p90, ROUND(QUANTILE(pkt_retrans_ratio,0.95), 4) AS pkt_retrans_percent_p95, ROUND(QUANTILE(pkt_retrans_ratio,0.99), 4) AS pkt_retrans_percent_p99 FROM ${parameter.tableName} WHERE <#if parameter.cycle?default(\'\')?trim? length gt 0 && parameter.cycle ==\'1\'> stat_time >= ${parameter.startTime}-${parameter.timeDiff} AND stat_time < ${parameter.endTime}-${parameter.timeDiff} <#else> stat_time >= ${parameter.startTime} AND stat_time < ${parameter.endTime} </#if><#if parameter.filter?default(\'\')?trim? length gt 0> ${parameter.filter} </#if>\",\r\n \"option\": \"real-time\",\r\n \"format\": \"json\"\r\n}', '{}', 'if (!parameter.endTime) {\r\n parameter.endTime = parseInt(+new Date()/1000);\r\n}\r\nif (!parameter.startTime) {\r\n parameter.startTime = parameter.endTime - 60 * 60;\r\n}\r\n\r\nparameter.timeDiff = parameter.endTime - parameter.startTime\r\nparameter.step = (parameter.endTime-parameter.startTime)/100;\r\n\r\nif(parameter.type==\'ip\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'ip\';\r\n}else if(parameter.type==\'country\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'country\';\r\n}else if(parameter.type==\'asn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'asn\';\r\n}else if(parameter.type==\'appLabel\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'common_app_label\';\r\n parameter.label = \'app_label\';\r\n}else if(parameter.type==\'appCompany\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_company\';\r\n parameter.label = \'app_company\';\r\n}else if(parameter.type==\'domain\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain\';\r\n parameter.label = \'domain\';\r\n}else if(parameter.type==\'l7Protocol\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \'common_l7_protocol\';\r\n parameter.label = \'l7_protocol\';\r\n}else if(parameter.type==\'idcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'idc_renter\';\r\n}else if(parameter.type==\'province\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'province\';\r\n}else if(parameter.type==\'city\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'city\';\r\n}else if(parameter.type==\'isp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'isp\';\r\n}else if(parameter.type==\'appSubcategory\'){\r\n parameter.tableName = \'metric_application\';\r\n parameter.dimension = \'app_subcategory\';\r\n parameter.label = \'app_subcategory\';\r\n}else if(parameter.type==\'domainCategoryName\'){\r\n parameter.tableName = \'metric_domain\';\r\n parameter.dimension = \'domain_category_name\';\r\n parameter.label = \'domain_category_name\';\r\n}else if(parameter.type==\'httpHost\'){\r\n parameter.tableName = \'metric_http_host\';\r\n parameter.dimension = \'http_host\';\r\n parameter.label = \'http_host\';\r\n}else if(parameter.type==\'sslSni\'){\r\n parameter.tableName = \'metric_ssl_sni\';\r\n parameter.dimension = \'ssl_sni\';\r\n parameter.label = \'ssl_sni\';\r\n}else if(parameter.type==\'protocolPort\'){\r\n parameter.tableName = \'metric_protocol\';\r\n parameter.dimension = \"concat(common_l7_protocol,\':\',toString(common_server_port))\";\r\n parameter.label = \'protocol_port\';\r\n}else if(parameter.type==\'clientIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'client_ip\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIp\'){\r\n parameter.tableName = \'metric_ip\';\r\n parameter.dimension = \'ip\';\r\n parameter.label = \'server_ip\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'client_country\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCountry\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'country\';\r\n parameter.label = \'server_country\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'client_province\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverProvince\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'province\';\r\n parameter.label = \'server_province\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'client_city\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverCity\'){\r\n parameter.tableName = \'metric_region\';\r\n parameter.dimension = \'city\';\r\n parameter.label = \'server_city\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'client_isp\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIsp\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'isp\';\r\n parameter.label = \'server_isp\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'client_idc_renter\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverIdcRenter\'){\r\n parameter.tableName = \'metric_idc_renter\';\r\n parameter.dimension = \'idc_renter\';\r\n parameter.label = \'server_idc_renter\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}else if(parameter.type==\'clientAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'client_asn\';\r\n parameter.filter = \"AND side = \'client\'\";\r\n}else if(parameter.type==\'serverAsn\'){\r\n parameter.tableName = \'metric_asn\';\r\n parameter.dimension = \'asn\';\r\n parameter.label = \'server_asn\';\r\n parameter.filter = \"AND side = \'server\'\";\r\n}', 'function toHump(name) {\r\n return name.replace(/\\_(\\w)/g, function(all, letter){\r\n return letter.toUpperCase();\r\n });\r\n}\r\n\r\nif(result.success){\r\n var o={};\r\n o.resultType=\"object\"\r\n o.result={};\r\n if(result.data.length > 0){\r\n var pojo = result.data[0];\r\n var tempObj= {};\r\n for (var key in pojo){\r\n var tempKey = toHump(key);\r\n tempObj[tempKey] = pojo[key];\r\n }\r\n o.result = tempObj;\r\n }\r\n result.code=200;\r\n result.data=o;\r\n result.msg = result.message;\r\n result.message=null;\r\n}', '2022-08-08 11:20:19', '2022-08-08 11:20:22', 1, ''); - -SET FOREIGN_KEY_CHECKS = 1;
\ No newline at end of file diff --git a/cn-admin/src/main/resources/db/R__AZ_sys_config.sql b/cn-admin/src/main/resources/db/R__AZ_sys_config.sql index c017a32..5bddb75 100644 --- a/cn-admin/src/main/resources/db/R__AZ_sys_config.sql +++ b/cn-admin/src/main/resources/db/R__AZ_sys_config.sql @@ -7,9 +7,6 @@ REPLACE INTO `sys_config` VALUES (null, 'email', '{"enable": 1,"host": "192.168. REPLACE INTO `sys_config` VALUES (null, 's3_accessKey', 'default', 1, NULL); REPLACE INTO `sys_config` VALUES (null, 's3_secretKey', 'default', 1, NULL); REPLACE INTO `sys_config` VALUES (null, 's3_bucket_name', 'report-hos-bucket', 1, NULL); -REPLACE INTO `sys_config` VALUES (null, 'driver_enable', '1', 1, NULL); -REPLACE INTO `sys_config` VALUES (null, 'pdf_width', '1000', 1, NULL); -REPLACE INTO `sys_config` VALUES (null, 'pdf_height', '1700', 1, NULL); REPLACE INTO `sys_config` VALUES (null, 'lang', 'zh', 1, NULL); REPLACE INTO `sys_config` VALUES (null, 'date_format', 'YYYY-MM-DD HH:mm:ss', 1, NULL); REPLACE INTO `sys_config` VALUES (null, 'system_bgImg', '', 1, NULL); diff --git a/cn-admin/src/main/resources/mapper/galaxy/GalaxyProxyDao.xml b/cn-admin/src/main/resources/mapper/galaxy/GalaxyProxyDao.xml deleted file mode 100644 index 0b6f3da..0000000 --- a/cn-admin/src/main/resources/mapper/galaxy/GalaxyProxyDao.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="net.geedge.modules.galaxy.dao.GalaxyProxyDao"> - - <resultMap id="galaxyProxyResult" type="net.geedge.modules.galaxy.entity.GalaxyProxy"> - <result property="id" column="id"></result> - <result property="name" column="name"></result> - <result property="path" column="path"></result> - <result property="version" column="version"></result> - <result property="method" column="method"></result> - <result property="targetUrl" column="target_url"></result> - <result property="targetParam" column="target_param"></result> - <result property="targetHeader" column="target_header"></result> - <result property="preHandle" column="pre_handle"></result> - <result property="postHandle" column="post_handle"></result> - <result property="ctime" column="ctime"></result> - <result property="utime" column="utime"></result> - <result property="remark" column="remark"></result> - <result property="state" column="state"></result> - </resultMap> - - <insert id="insertGalaxyProxyList" parameterType="java.util.List"> - insert into galaxy_proxy (name, path, version, method, target_url, target_param, target_header, pre_handle, post_handle, ctime, utime, state, remark) values - <foreach item="item" collection="list" separator=","> - ( - #{item.name},#{item.path}, - #{item.version},#{item.method},#{item.targetUrl}, - #{item.targetParam},#{item.targetHeader},#{item.preHandle}, - #{item.postHandle},#{item.ctime},#{item.utime}, - #{item.state},#{item.remark} - ) - </foreach> - - </insert> - <delete id="deleteTable"> - delete from galaxy_proxy where 1=1 - </delete> - <select id="selectInfo" resultMap="galaxyProxyResult"> - select * from galaxy_proxy where id = #{id} - </select> - - <select id="queryPage" resultMap="galaxyProxyResult"> - select * from - galaxy_proxy - <where> - <if test="params.q !=null and params.q !=''"> - and (path like CONCAT('%', #{params.q}, '%') or target_url like CONCAT('%', #{params.q}, '%') or target_param like CONCAT('%', #{params.q}, '%') or target_header like CONCAT('%', #{params.q}, '%') or remark like CONCAT('%', #{params.q}, '%') ) - </if> - </where> - </select> -</mapper>
\ No newline at end of file @@ -42,7 +42,7 @@ <swagger.version>2.7.0</swagger.version> <mibble.version>2.9.3</mibble.version> <log4j2.version>2.16.0</log4j2.version> - <magic.version>2.0.2</magic.version> + <magic.version>2.1.1</magic.version> </properties> <dependencies> |
