package com.sohu.cache.machine; import java.util.List; import java.util.Map; import com.sohu.cache.constant.MachineInfoEnum.TypeEnum; import com.sohu.cache.entity.InstanceInfo; import com.sohu.cache.entity.InstanceStats; import com.sohu.cache.entity.MachineInfo; import com.sohu.cache.entity.MachineStats; /** * 基于host的操作 * * User: lingguo * Date: 14-6-12 * Time: 上午10:32 */ public interface MachineCenter { /** * 为当前host创建trigger,并部署 * * @param hostId 机器id * @param ip ip * @return 是否部署成功 */ public boolean deployMachineCollection(final long hostId, final String ip); /** * 为当前host删除trigger,取消部署 * * @param hostId 机器id * @param ip ip * @return 是否取消部署成功 */ public boolean unDeployMachineCollection(final long hostId, final String ip); /** * 收集host的状态信息 * * @param hostId 机器id * @param collectTime 收集时间 * @param ip ip * @return 机器的信息 */ public Map<String, Object> collectMachineInfo(final long hostId, final long collectTime, final String ip); /** * 异步收集host的状态信息 * * @param hostId 机器id * @param collectTime 收集时间 * @param ip ip */ public void asyncCollectMachineInfo(final long hostId, final long collectTime, final String ip); /** * 为当前机器的监控删除trigger * * @param hostId 机器id * @param ip ip * @return 取消部署成功返回true, 否则返回false */ public boolean unDeployMachineMonitor(final long hostId, final String ip); /** * 为当前机器的监控创建trigger * * @param hostId 机器id * @param ip ip * @return 部署成功返回true, 否则返回false */ public boolean deployMachineMonitor(final long hostId, final String ip); /** * 监控机器的状态信息,向上层汇报或者报警 * * @param hostId 机器id * @param ip ip * @return */ public void monitorMachineStats(final long hostId, final String ip); /** * 异步监控机器的状态信息,向上层汇报或者报警 * * @param hostId 机器id * @param ip ip * @return */ public void asyncMonitorMachineStats(final long hostId, final String ip); /** * 在主机ip上的端口port上启动一个进程,并check是否启动成功; * * @param ip ip * @param port 端口 * @param shell shell命令 * @return 是否成功 */ public boolean startProcessAtPort(String ip, int port, final String shell); /** * 执行shell命令并获取返回结果 * * @param ip * @param shell * @return */ public String executeShell(final String ip, String shell); /** * 根据类型返回机器可用端口 * * @param ip * @param type * @return */ public Integer getAvailablePort(final String ip, final int type); /** * 创建远程文件 * * @param host * @param fileName * @param content * @return 是否创建成功 */ public String createRemoteFile(final String host, String fileName, List<String> content); /** * 获取机器列表 * @param ipLike * @return */ public List<MachineStats> getMachineStats(String ipLike); /** * 获取全部机器列表 * @return */ public List<MachineStats> getAllMachineStats(); /** * 根据ip获取机器信息 * @param ip * @return */ public MachineInfo getMachineInfoByIp(String ip); MachineStats getMachineMemoryDetail(String ip); /** * 获取一台机器的所有实例 * @param ip * @return */ List<InstanceInfo> getMachineInstanceInfo(String ip); /** * 获取一台机器的所有实例统计信息 * @param ip * @return */ List<InstanceStats> getMachineInstanceStatsByIp(String ip); /** * 获取指定机器某个redis端口的最近日志 * @param maxLineNum * @return */ String showInstanceRecentLog(InstanceInfo instanceInfo, int maxLineNum); /** * 根据机器类型获取机器列表 * @param typeEnum * @return */ List<MachineInfo> getMachineInfoByType(TypeEnum typeEnum); /** * 为当前ip创建trigger,并部署 * * @param hostId 机器id * @param ip ip * @return 是否部署成功 */ public boolean deployServerCollection(long hostId, String ip); /** * 为当前服务器状态收集删除trigger * @param hostId 机器id * @param ip ip * @return 取消部署成功返回true, 否则返回false */ public boolean unDeployServerCollection(final long hostId, final String ip); /** * 获取机器下实例数map * @return */ public Map<String, Integer> getMachineInstanceCountMap(); }