Authored by qinchao

监控对象管理

... ... @@ -17,6 +17,7 @@ import com.monitor.model.request.HostInfoReq;
import com.monitor.model.request.MObjectHostInfoReq;
import com.monitor.model.request.MObjectInfoReq;
import com.monitor.model.response.BaseResponse;
import com.monitor.mysql.mapper.HostInfoMapper;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -50,6 +51,9 @@ public class MObjectInfoCtrl {
@Autowired
ITypeInfoService typeInfoService;
@Autowired
HostInfoMapper hostInfoMapper;
@RequestMapping(value = "/queryHost", method = RequestMethod.POST)
public BaseResponse queryMObjectHost(@RequestBody MObjectHostInfoReq request) {
... ... @@ -279,11 +283,15 @@ public class MObjectInfoCtrl {
@RequestMapping(value = "/asyMobjectHost")
public BaseResponse asyMobjectHost(int moTypeId) {
StringBuilder sb=new StringBuilder();
TypeInfo typeInfo=typeInfoService.queryTypeInfo(moTypeId);
sb.append("开始同步监控对象"+moTypeId);
if(typeInfo!=null&&StringUtils.isNotBlank(typeInfo.getTags())){
MObjectInfoReq mObjectInfoReq = new MObjectInfoReq();
mObjectInfoReq.setTypeIds(""+typeInfo.getTypeId());
mObjectInfoReq.setMoTypeId(typeInfo.getTypeId());
mObjectInfoReq.setMoTypeName(typeInfo.getTypeName());
mObjectInfoReq.setMoTags(typeInfo.getDescr());
sb.append("---").append(typeInfo.getTypeName()).append(":");
//根据typeinfo的主机标签查询出主机
List<String> hostTagsList=new ArrayList<String>();
List<Integer> cloudTagsList=new ArrayList<Integer>();
... ... @@ -307,33 +315,81 @@ public class MObjectInfoCtrl {
}
}
if(hostTagsList.size()>0){
//List<HostInfo> newhostInfos =hostInfoMapper.selectHostInfosByTagListAndCloudTypeList(hostTagsList,cloudTagsList);
List<HostInfo> newhostInfos =hostInfoMapper.selectHostInfosByTagListAndCloudTypeList(hostTagsList,cloudTagsList);
List<MObjectInfo> oldMobjects = mobjectService.queryMObjectsInfoByType(moTypeId);
//
List<String> newIps=new ArrayList<String>();
if(newhostInfos!=null&&newhostInfos.size()>0){
for(HostInfo hostInfo:newhostInfos){
newIps.add(hostInfo.getHostIp());
}
}
Map<String,List<Integer>> oldMobjectsMap=new HashMap<String,List<Integer>>();
if(oldMobjects!=null&&oldMobjects.size()>0){
for(MObjectInfo mObjectInfo:oldMobjects){
if(oldMobjectsMap.keySet().contains(mObjectInfo.getMoHostIp())){
oldMobjectsMap.get(mObjectInfo.getMoHostIp()).add(mObjectInfo.getMoId());
}else{
List<Integer> tmpLs=new ArrayList<Integer>();
tmpLs.add(mObjectInfo.getMoId());
oldMobjectsMap.put(mObjectInfo.getMoHostIp(),tmpLs);
}
}
}
List<String> needAddIpList=new ArrayList<String>();
List<Integer> needDelMobjectIdList=new ArrayList<Integer>();
for(String ip :newIps){
if(!oldMobjectsMap.keySet().contains(ip)){
needAddIpList.add(ip);
}
}
String tmpDelips="";
for(String ip:oldMobjectsMap.keySet()){
if(!newIps.contains(ip)){
if(tmpDelips.length()>0){
tmpDelips+=",";
}
tmpDelips += ip;
needDelMobjectIdList.addAll(oldMobjectsMap.get(ip));
}
}
sb.append("删除hostip:").append(tmpDelips);
//删除
mobjectService.deleteMObjectInfo(needDelMobjectIdList);
//新增
sb.append("新增hostip:").append(StringUtils.join(needAddIpList,","));
mObjectInfoReq.setMoHostIp(StringUtils.join(needAddIpList,","));
addMobjectWithCheckFlag(mObjectInfoReq,false);
}
// mObjectInfoReq.setMoHostIp();
}
return null;
BaseResponse rtn= new BaseResponse();
rtn.setData(sb.toString());
return rtn;
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public BaseResponse addMObject(@RequestBody MObjectInfoReq request) {
return addMobjectWithCheckFlag(request,true);
}
DEBUG.debug("Add mObject: {}", request);
private BaseResponse addMobjectWithCheckFlag(MObjectInfoReq request,boolean checkFlag){
BaseResponse response = new BaseResponse();
try {
if (null != request&&StringUtils.isNotBlank(request.getMoHostIp())) {
if (!checkHost(request.getMoHostIp())) {
if(checkFlag){
if (!checkHost(request.getMoHostIp())) {
response.setCode(400);
response.setCode(400);
response.setMessage("Host " + request.getMoHostIp() + " does not exist...");
response.setMessage("Host " + request.getMoHostIp() + " does not exist...");
return response;
return response;
}
}
String allIps=request.getMoHostIp();
for(String ip:allIps.split(",")){
MObjectInfo info = new MObjectInfo();
... ... @@ -344,19 +400,13 @@ public class MObjectInfoCtrl {
mobjectService.addMObjectInfo(info);
}
}
} catch (Exception e) {
DEBUG.error("Failed to Add mobjects: {} , eror: {} ", request, e);
response.setCode(400);
response.setMessage(e.getMessage());
}
return response;
}
... ...
... ... @@ -21,6 +21,8 @@ public interface IMObjectInfoService {
void deleteMObjectInfo(int id);
void deleteMObjectInfo(List<Integer> idList);
void updateMObjectInfo(MObjectInfo info);
boolean checkMoNameExist(String name);
... ...
... ... @@ -100,6 +100,13 @@ public class MObjectInfoServiceImpl implements IMObjectInfoService {
}
@Override
public void deleteMObjectInfo(List<Integer> idList){
if(idList!=null&&idList.size()>0){
mObjectInfoMapper.deleteMoInfoList(idList);
}
}
@Override
public void updateMObjectInfo(MObjectInfo info) {
mObjectInfoMapper.updateMoInfo(info);
}
... ...
... ... @@ -12,6 +12,8 @@ public interface MObjectInfoMapper {
void deleteMoInfo(int moId);
void deleteMoInfoList(List<Integer> moIds);
void updateMoInfo(MObjectInfo moInfo);
List<MObjectInfo> getAllMosInfo();
... ...
... ... @@ -33,6 +33,14 @@
DELETE FROM mobject_info WHERE id = #{moId}
</delete>
<delete id="deleteMoInfoList">
DELETE FROM mobject_info WHERE id in
<foreach collection="list" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</delete>
<update id="updateMoInfo" parameterType="com.model.MObjectInfo">
UPDATE mobject_info SET alias=#{moName},host_ip=#{moHostIp},type_id=#{moTypeId},tags=#{moTags},url=#{moUrl} WHERE id = #{moId}
</update>
... ...
... ... @@ -11,10 +11,11 @@
<id property="typeIsLeaf" column="isLeaf"></id>
<id property="typeParentId" column="parent_id"></id>
<result property="tags" column="tags" jdbcType="VARCHAR" />
<result property="cloudTags" column="cloud_tags" jdbcType="VARCHAR" />
<result property="descr" column="descr" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List"> id, alias, isLeaf, parent_id ,tags,descr </sql>
<sql id="Base_Column_List"> id, alias, isLeaf, parent_id ,tags,descr,cloud_tags </sql>
<select id="getAllTypesInfo" resultType="com.model.TypeInfo" resultMap="typeInfoMap">
SELECT
... ... @@ -34,7 +35,7 @@
</select>
<insert id="insertTypeInfo" useGeneratedKeys="true" keyProperty="typeId" parameterType="com.model.TypeInfo">
INSERT INTO type_info(alias,isLeaf,parent_id,tags,descr) VALUES (#{typeName},#{typeIsLeaf},#{typeParentId},#{tags},#{descr})
INSERT INTO type_info(alias,isLeaf,parent_id,tags,descr,cloud_tags) VALUES (#{typeName},#{typeIsLeaf},#{typeParentId},#{tags},#{descr},#{cloudTags})
</insert>
<delete id="deleteTypeInfo" parameterType="int">
... ... @@ -47,7 +48,7 @@
</update>
<update id="updateTypeInfoTag" parameterType="com.model.TypeInfo">
UPDATE type_info SET tags=#{tags},descr=#{descr}
UPDATE type_info SET tags=#{tags},descr=#{descr},cloud_tags=#{cloudTags}
WHERE id=#{typeId}
</update>
... ...