package com.sohu.cache.stats.app;
import com.sohu.cache.constant.AppTopology;
import com.sohu.cache.constant.TimeDimensionalityEnum;
import com.sohu.cache.entity.AppCommandGroup;
import com.sohu.cache.entity.AppCommandStats;
import com.sohu.cache.entity.AppStats;
import com.sohu.cache.entity.InstanceSlowLog;
import com.sohu.cache.web.vo.AppDetailVO;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* app级别的查询、统计和汇总
*
* Created by lingguo on 14-6-26.
*/
public interface AppStatsCenter {
/**
* 通过时间区间查询app的分钟统计数据
*
* @param appId
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @return
*/
public List<AppStats> getAppStatsListByMinuteTime(final long appId, long beginTime, long endTime);
/**
* 通过时间区间查询app的分钟统计数据
*
* @param appId
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @return
*/
public List<AppStats> getAppStatsList(final long appId, long beginTime, long endTime, TimeDimensionalityEnum timeDimensionalityEnum);
/**
* 查询一天中应用的命令执行次数的top5
*
* @param appId 应用id
* @param begin 日期格式:yyyyMMddHHmm
* @param end 日期格式:yyyyMMddHHmm
* @return
*/
public List<AppCommandStats> getTop5AppCommandStatsList(final long appId, long begin, long end);
/**
* 查询一天中应用的命令执行次数的top5
*
* @param appId 应用id
* @param begin 日期格式:yyyyMMddHHmm
* @param end 日期格式:yyyyMMddHHmm
* @return
*/
public List<AppCommandStats> getTopLimitAppCommandStatsList(final long appId, long begin, long end, int limit);
/**
* 查询应用的配置和节点信息
*
* @param appId
* @return
*/
public Map<AppTopology, Object> queryAppTopology(final long appId);
/**
* 查询应用指定时间段,指定命令名的结果集合
*
* @param appId 应用id
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @param commandName 命令名
* @return
*/
public List<AppCommandStats> getCommandStatsListV2(long appId, long beginTime, long endTime, TimeDimensionalityEnum timeDimensionalityEnum, String commandName);
/**
* 查询应用指定时间段,指定命令名的结果集合
*
* @param appId 应用id
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @param commandName 命令名
* @return
*/
public List<AppCommandStats> getCommandStatsList(long appId, long beginTime, long endTime, String commandName);
/**
* 查询应用指定时间段,指定命令名的结果集合
*
* @param appId 应用id
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @return
*/
public List<AppCommandStats> getCommandStatsList(long appId, long beginTime, long endTime);
/**
* 查询应用指定时间段,指定命令名的结果集合
*
* @param appId 应用id
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @return
*/
public List<AppCommandStats> getCommandStatsListV2(long appId, long beginTime, long endTime, TimeDimensionalityEnum timeDimensionalityEnum);
/**
* 查询应用指定命令的峰值
*
* @param appId 应用id
* @param beginTime 时间,格式:yyyyMMddHHmm
* @param endTime 时间,格式:yyyyMMddHHmm
* @param commandName 命令名
* @return
*/
public AppCommandStats getCommandClimax(long appId, Long beginTime, Long endTime, String commandName);
/**
* 获取应用详细信息
*
* @param appId
* @return
*/
public AppDetailVO getAppDetail(long appId);
/**
* 获取应用命令调用次数分布
* @param appId
* @param beginTime
* @param endTime
* @return
*/
public List<AppCommandGroup> getAppCommandGroup(long appId, Long beginTime, Long endTime);
/**
* 在appId级别执行命令
*
* @param appId
* @param command
* @return
*/
public String executeCommand(long appId, String command);
/**
* 按照appId获取实例所有慢查询日志
* @param appId
* @param startDate
* @param endDate
* @return
*/
public List<InstanceSlowLog> getInstanceSlowLogByAppId(long appId, Date startDate, Date endDate);
/**
* 按照appId获取每个实例慢查询个数
* @param appId
* @param startDate
* @param endDate
* @return
*/
public Map<String, Long> getInstanceSlowLogCountMapByAppId(Long appId, Date startDate, Date endDate);
}