CacheCloud 1.3-机器监控功能

CacheCloud将在1.3版本添加机器监控统计功能,目前已经在master分支提交了部分代码,如果需要使用还要做部分源码改动(去掉某些注释~哈哈)

1
ps: 目前该功能只对master分支有效。

一. 功能展示

CacheCloud会每5分钟收集机器的相关指标,例如CPU、内存、负载、网络、磁盘等绘制成报表,例如下面分别是从全局、CPU、内存、磁盘展示:

1.全局

2.CPU

3.网络

4.硬盘

这些报表的作用无需多说,后期会添加相应的报警功能。

二. 入口

  1. 管理后台:机器管理列表有有个监控按钮。
  1. 用户端:实例列表点击机器的IP地址。

三. 使用方法

1. 将cachecloud-open-web/nmon放到和cachecloud部署的同级目录,例如下面所示。

2. 去掉注释代码

去掉com.sohu.cache.schedule.jobs.ServerJob的注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.sohu.cache.schedule.jobs;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.SchedulerContext;
import org.quartz.SchedulerException;
import org.springframework.context.ApplicationContext;
import com.sohu.cache.server.ServerStatusCollector;
import com.sohu.cache.util.ConstUtils;
/**
* 基于服务器的job
*/
public class ServerJob extends CacheBaseJob {
@Override
public void action(JobExecutionContext context) {
try {
JobDataMap dataMap = context.getMergedJobDataMap();
SchedulerContext schedulerContext = context.getScheduler().getContext();
ApplicationContext applicationContext = (ApplicationContext)schedulerContext.get(APPLICATION_CONTEXT_KEY);
ServerStatusCollector serverStatusCollector = applicationContext.getBean("serverStatusCollector", ServerStatusCollector.class);
String ip = dataMap.getString(ConstUtils.HOST_KEY);
serverStatusCollector.fetchServerStatus(ip);
} catch (SchedulerException e) {
logger.error(e.getMessage(), e);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}

3. 可能要修改数据库

默认machine_info的collect字段为1(表示会收集机器信息),如果不是请自行修改:

1
update machine_info set collect=1;

4. 重启cachecloud

四.可能产生的问题

  1. cachecloud在第一次收集机器的统计信息时,会打印一些异常日志,这是正常现象,可以忽略。

  2. cachecloud使用nmon实现对Linux各种发行版的兼容,也不能排除有些特殊类型,如果有异常可以进群讨论。
    (QQ群:534429768)

  3. 没有统计:检查collect字段是否为1,quartz job是否启动等等。