|
|
package com.monitor.middleware.redis.controller;
|
|
|
|
|
|
import com.model.MObjectInfo;
|
|
|
import com.monitor.cmdb.service.IMObjectInfoService;
|
|
|
import com.monitor.cmdb.service.ITypeInfoService;
|
|
|
import com.monitor.middleware.redis.constants.Constants;
|
|
|
import com.monitor.middleware.redis.model.RedisInfo;
|
|
|
import com.monitor.middleware.redis.model.RedisVo;
|
|
|
import com.monitor.middleware.redis.model.TwemproxyInfo;
|
|
|
import com.monitor.middleware.redis.model.TwemproxyVo;
|
|
|
import com.monitor.model.response.BaseResponse;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Created by yoho on 2016/9/21.
|
|
|
*/
|
|
|
@RestController
|
|
|
@RequestMapping(value = "redisMonitor")
|
|
|
public class RedisCtrl {
|
|
|
|
|
|
@Autowired
|
|
|
IMObjectInfoService imObjectInfoService;
|
|
|
|
|
|
@Autowired
|
|
|
ITypeInfoService iTypeInfoService;
|
|
|
|
|
|
@RequestMapping(value = "/allTwemproxy")
|
|
|
public BaseResponse queryAllTwemproxy() {
|
|
|
BaseResponse response = new BaseResponse();
|
|
|
|
|
|
List<TwemproxyVo> twemproxyVOList = new ArrayList<>();
|
|
|
|
|
|
for (Map.Entry<String, TwemproxyInfo> entry : Constants.TWEMPROXY_INFO_MAP.entrySet()) {
|
|
|
|
|
|
TwemproxyVo twemproxyVO = buildTwemproxyVO(entry.getKey(), entry.getValue());
|
|
|
|
|
|
twemproxyVOList.add(twemproxyVO);
|
|
|
}
|
|
|
|
|
|
response.setData(twemproxyVOList);
|
|
|
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 后台视图 转 前台视图
|
|
|
*
|
|
|
* @param key
|
|
|
* @param value
|
|
|
* @return
|
|
|
*/
|
|
|
private TwemproxyVo buildTwemproxyVO(String key, TwemproxyInfo value) {
|
|
|
|
|
|
TwemproxyVo twemproxyVO = new TwemproxyVo();
|
|
|
|
|
|
twemproxyVO.setUrl(key);
|
|
|
|
|
|
twemproxyVO.setConnections(String.valueOf(value.getCurrConnections()));
|
|
|
|
|
|
MObjectInfo mObjectInfo = imObjectInfoService.queryMObjectInfo(Integer.parseInt(value.getMoId()));
|
|
|
|
|
|
twemproxyVO.setName(value.getType());
|
|
|
|
|
|
twemproxyVO.setAlias(mObjectInfo.getMoName());
|
|
|
|
|
|
if (mObjectInfo.getMoHostIp().startsWith("172.")) {
|
|
|
twemproxyVO.setNetwork("AWS");
|
|
|
} else {
|
|
|
twemproxyVO.setNetwork("QCloud");
|
|
|
}
|
|
|
|
|
|
String redisList = "";
|
|
|
|
|
|
for (Map.Entry<String, Long> entry : value.getRequestMap().entrySet()) {
|
|
|
|
|
|
redisList += entry.getKey() + "\r\n";
|
|
|
}
|
|
|
|
|
|
twemproxyVO.setRedisList(redisList);
|
|
|
|
|
|
if (value.test()) {
|
|
|
twemproxyVO.setState("OK");
|
|
|
} else {
|
|
|
twemproxyVO.setState("Not-OK");
|
|
|
}
|
|
|
|
|
|
long updateDays = value.getUpTime() / (60 * 60 * 24);
|
|
|
|
|
|
twemproxyVO.setTaskCtime(String.valueOf(updateDays) + " Days");
|
|
|
|
|
|
twemproxyVO.setType(iTypeInfoService.queryTypeInfo(mObjectInfo.getMoTypeId()).getTypeName());
|
|
|
|
|
|
return twemproxyVO;
|
|
|
}
|
|
|
|
|
|
|
|
|
@RequestMapping(value = "/allRedis")
|
|
|
public BaseResponse queryAllRedis(@RequestParam("twemproxy") String twemproxy) {
|
|
|
BaseResponse response = new BaseResponse();
|
|
|
|
|
|
List<RedisVo> redisInfoList = new ArrayList<>();
|
|
|
|
|
|
TwemproxyInfo twemproxyInfo = Constants.TWEMPROXY_INFO_MAP.get(twemproxy);
|
|
|
|
|
|
for (Map.Entry<String, Long> entry : twemproxyInfo.getRequestMap().entrySet()) {
|
|
|
|
|
|
RedisInfo redisInfo = Constants.REDIS_INFO_MAP.get(entry.getKey());
|
|
|
|
|
|
RedisVo redisVo = buildRedisVo(redisInfo);
|
|
|
|
|
|
redisInfoList.add(redisVo);
|
|
|
}
|
|
|
|
|
|
response.setData(redisInfoList);
|
|
|
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
|
|
|
private RedisVo buildRedisVo(RedisInfo redisInfo) {
|
|
|
RedisVo redisVo = new RedisVo();
|
|
|
|
|
|
redisVo.setIp(redisInfo.getIp());
|
|
|
|
|
|
redisVo.setPort(redisInfo.getPort());
|
|
|
|
|
|
redisVo.setRole(redisInfo.getRole());
|
|
|
|
|
|
redisVo.setMaxMem(redisInfo.getMaxMem());
|
|
|
|
|
|
redisVo.setUsedMem(redisInfo.getUsedMem());
|
|
|
|
|
|
redisVo.setMemUsedRate(redisInfo.getUsedRate() + " %");
|
|
|
|
|
|
redisVo.setRssRate(String.valueOf(redisInfo.getRssRate()));
|
|
|
|
|
|
if (redisInfo.test()) {
|
|
|
redisVo.setStatus("OK");
|
|
|
} else {
|
|
|
redisVo.setStatus("NOT-OK");
|
|
|
}
|
|
|
|
|
|
if (StringUtils.equals("master", redisInfo.getRole())) {
|
|
|
//组织slave信息
|
|
|
redisVo.setMasterOrSlave(redisInfo.getSlaves());
|
|
|
} else {
|
|
|
//组织master信息
|
|
|
redisVo.setMasterOrSlave(redisInfo.getMasters());
|
|
|
}
|
|
|
|
|
|
redisVo.setOpSec(String.valueOf(redisInfo.getOpCaps()));
|
|
|
|
|
|
redisVo.setRequestSec(String.valueOf(redisInfo.getReqCaps()));
|
|
|
|
|
|
redisVo.setHitRate(redisInfo.getHitRate()+" %");
|
|
|
|
|
|
return redisVo;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|