自定义监控

更新时间:2016/01/18 访问次数:33280

简介

通过自定义监控,用户能随心所欲的监控需要监控的数据。 
用户通过调用API 上报自定义监控的数据,系统对上报数据进行统计并绘制成图表展示。

具体使用场景

通过自定义监控功能,帮助您了解应用各个环节的运行情况,快速定位应用的性能瓶颈,以便于针对性的优化应用,提高应用整体性能:

1. 监控内部函数的执行数据,便于定位应用内部热点函数

2. 监控外部API的调用情况,便于对API的调用进行优化

3. 监控缓存服务的命中率,便于选择更优的缓存策略

如何接入自定义监控功能

在您希望上报自定义监控数据的地方,调用EWS提供的API,即可完成数据上报。

JAVA接入说明

1. 配置依赖:

在项目的pom.xml中添加:

<dependency>
	<groupId>com.taobao.tae</groupId>
	<artifactId>monitor-service</artifactId>
	<version>1.0.0</version>
</dependency>

依赖JAR包下载  EWS Maven使用文档

 

2. API介绍:

JAVA API包括下面三个方法:

/**
* 记录一次调用,不记录耗时和是否成功。
* @param category: 统计类别
* @param keyName:  统计关键字
*/
public static void logStat(String category, String keyName)
/**
* 记录一次调用和耗时,不记录是否成功。
* @param category:     统计类别
* @param keyName:      统计关键字
* @param responseTime: 调用的耗时,单位毫秒
*/
public static void logStat(String category, String keyName, long responseTime)
/**
* 记录一次调用、耗时和是否成功。
* @param category:     统计类别
* @param keyName:      统计关键字
* @param responseTime: 调用的耗时,单位毫秒
* @param success:      调用是否成功
*/
public static void logStat(String category, String keyName, long responseTime, boolean success)
	

 

3. 调用示例:

以上报缓存命中率为例:

//设置开始时间
long begin = System.currentTimeMillis();
//分类和key
String category = "cacheHits";
String keyName = "testKey";
//初始化Memcache客户端
MemCachedClient client = new MemCachedClient();  
Object value = client.get(key);
if(value != null){
//缓存命中后通过打点API上报 缓存调用的耗时、结果
MonitorService.logStat(category, keyName, System.currentTimeMillis() - begin, true);
}
else{
//缓存命中失败后通过打点API上报 缓存调用的耗时、结果
MonitorService.logStat(category, keyName, System.currentTimeMillis() - begin, false);
}

PHP接入说明

1. API介绍:

/*
 * 记录一次调用、耗时和是否成功。
 * @param category:     统计类别
 * @param keyName:      统计关键字
 * @param responseTime: 调用的耗时,单位毫秒
 * @param success:      调用是否成功
 */
public function logStat($category, $keyName, $responseTime = 0, $success = true)
/**
* 手动刷新将本次请求前面的监控打点写入文件。不调用在请求结束时也会写入文件,重复调用不会重复写入
*/
public function flush()

2. 调用示例:

// 生成调用对象,单例模式
$stub= Alibaba::Stubmonitor();
$category = 'category';
$keyWord = 'key';
$responseTime = 10; // 实际使用中通过计算填入实际的响应时间
$success = true;
$stub->logStat($category, $keyWord, $responseTime, $success);   //记录信息到内存,请求结束时会自动写入到文件
$stub->flush(); // 手动刷新将本次请求前面的监控打点写入文件。不调用在请求结束时也会写入文件,重复调用不会重复写入

本地开发:

本地开发需要使用特定SDK,请点击下载offline-sdk

下载SDK解压后请在本地的 php.ini 中配置:

auto_prepend_file = [tae.php 的路径]

也可以在自己的php代码中直接include包含tae.php文件

include_once "/xxxx/tae.php";

注意:tae.php位于SDK解压后根目录下。线下sdk是方便用户本地调试,模拟线上服务,接口与线上相同,为了让线下内置日志服务、缓存服务运行正常,**请确保tmp文件夹(SDK解压后根目录下)存在并可写**,线上内置服务无此限制。并且在代码发布到线上之前请在php文件中将上面的include那行代码注释掉

自定义监控数据查看

在EWS工作站依次点击:服务监控 -> 服务名称  -> 自定义监控。  自定义监控页面展示用户调用API所上报数据的统计情况。  目前支持的上报数据包括:统计类别(category),关键字(keyName),耗时(responseTime),是否成功(success)。  监控数据展示如下图示:

点击“查看趋势图”查看具体监控项详情,如下图示:

平均次数

自定义监控数据单位时间的平均上报次数,最细数据粒度为1分钟。 

平均耗时

自定义监控数据的平均耗时,单位时间内上报responseTime的总和/上报总次数。

总次数

展示自定义监控数据上报累计总次数。

成功率

成功率 = 上报success为true的次数/上报总次数。

注意事项

  • 监控项数据默认保留两位小数。
  • 新添加的监控项要过1 - 5分钟才会出现在监控视图。
  • 线上监控项默认采集500个,如果监控项超过500个还继续增加,半小时后新的监控项会替换掉不使用的老监控项。
  • 线下测试时,自定义监控数据会记录到HOME目录 + /.tae_monitor_log/.dotMonitor.log。
  • 监控项不建议使用特殊字符。

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部