package com.sohu.cache.stats.instance; import com.sohu.cache.entity.InstanceCommandStats; import com.sohu.cache.entity.InstanceInfo; import com.sohu.cache.entity.InstanceStats; import java.util.List; import java.util.Map; /** * 实例统计方法 * Created by yijunzhang on 14-9-17. */ public interface InstanceStatsCenter { /** * 根据实例id获取实例的静态信息 * * @param instanceId 实例id * @return 实例信息对象 */ InstanceInfo getInstanceInfo(long instanceId); /** * 根据实例id获取实例的实施统计&是否在线&redis实时统计信息 * * @param instanceId 实例id * @return 实例实时状态信息 */ InstanceStats getInstanceStats(long instanceId); /** * 根据实例id,起止时间,命令名称获取实例对应命令的执行次数曲线 * * @param instanceId 实例id * @param beginTime 起始时间 闭区间 yyyyMMddHHmm * @param endTime 结束时间 闭区间 yyyyMMddHHmm * @param commandName 命令名称 * @return 实例命令执行对象的列表 */ List<InstanceCommandStats> getCommandStatsList(Long instanceId, long beginTime, long endTime, String commandName); /** * 根据appId,起止时间,统计指标名称 获取实例对应指标统计列表 * * @param appId 实例id * @param beginTime 起始时间 闭区间 yyyyMMddHHmm * @param endTime 结束时间 闭区间 yyyyMMddHHmm * @param commands 命令名称 * @return 应用下 所有实例 命令执行对象的列表 * <br/> * Map<Integer, Map<String, List<InstanceCommandStats>>> : Map<InstanceId,Map<CommandName,List<InstanceCommandStats>>> */ Map<Integer, Map<String, List<InstanceCommandStats>>> getStandardStatsList(Long appId, long beginTime, long endTime, List<String> commands); /** * 在实例上执行命令 * * @param host * @param port * @param command * @return */ public String executeCommand(String host, int port, String command); /** * 在实例上执行命令 * * @param instanceId * @param command * @return */ public String executeCommand(Long instanceId, String command); /** * 获取所有统计信息 * @return */ public List<InstanceStats> getInstanceStats(); /** * 按照机器获取实例列表 * @param ip * @return */ List<InstanceStats> getInstanceStats(String ip); /** * 将一个对象(如统计信息)保存到mysql里 * * @param infoMap 统计信息对象 * @param ip ip * @param port port * @param dbType * @return 成功保存返回true,否则返回false */ public boolean saveStandardStats(Map<String, Object> infoMap, String ip, int port, String dbType); /** * 根据收集时间查询某一个实例或机器的统计信息 * * @param collectTime 时间点,格式:yyyyMMddHHmm * @param ip ip * @param port port * @param dbType * @return 该时间点对应的统计信息 */ public Map<String, Object> queryStandardInfoMap(long collectTime, String ip, int port, String dbType); /** * 查询一段时间内,实例或机器的统计信息的列表,如实例或机器一天中每分钟的统计数据 * * @param beginTime 起始时间,格式:yyyyMMddHHmm * @param endTime 结束时间,格式:yyyyMMddHHmm * @param ip ip * @param port port * @param dbType * @return 该时间区间内,对应的统计信息的列表 */ public List<Map<String, Object>> queryDiffMapList(long beginTime, long endTime, String ip, int port, String dbType); /** * 清理{day}之前的数据 * * @param day */ public void cleanUpStandardStats(int day); }