通过自定义监控,用户能随心所欲的监控需要监控的数据。
用户通过调用API 上报自定义监控的数据,系统对上报数据进行统计并绘制成图表展示。
通过自定义监控功能,帮助您了解应用各个环节的运行情况,快速定位应用的性能瓶颈,以便于针对性的优化应用,提高应用整体性能:
1. 监控内部函数的执行数据,便于定位应用内部热点函数
2. 监控外部API的调用情况,便于对API的调用进行优化
3. 监控缓存服务的命中率,便于选择更优的缓存策略
在您希望上报自定义监控数据的地方,调用EWS提供的API,即可完成数据上报。
1. 配置依赖:
在项目的pom.xml中添加:
<dependency> <groupId>com.taobao.tae</groupId> <artifactId>monitor-service</artifactId> <version>1.0.0</version> </dependency>
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); }
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的次数/上报总次数。