CAT使用总结

简介

CAT基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。
CAT支持的监控消息类型包括:
  • Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
  • Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
  • Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
  • Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
  • Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息

Logview


CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric和Trace信息。

可视化Logview


[图片上传失败...(image-9b83ca-1517378766023)]

分布式Logview树【一台机器调用另外一台机器】


[图片上传失败...(image-538c7d-1517378766023)]


Transaction

一段代码运行时间、次数,比如URL、Cache、SQL执行次数和响应时间

Transaction实时报表

  • Type统计界面

[图片上传失败...(image-f87703-1517378766023)]

  • Name统计界

[图片上传失败...(image-c16591-1517378766023)]

Transaction历史统计报表

  • Transaction\Event月报表支持每天的趋势图,以天为单位,如下图
    [图片上传失败...(image-289e1b-1517378766023)]
  • Transaction\Event报表日报表、周报表支持同比、环比对比,时间精度为5分钟
    [图片上传失败...(image-b3ed04-1517378766023)]

Even

一行代码运行次数,比如出现一个异常

Event实时报表

  • Type统计界面
    [图片上传失败...(image-687c55-1517378766023)]

  • Name统计界面
    [图片上传失败...(image-ad3617-1517378766023)]

  • 一个小时内详细指标统计
    [图片上传失败...(image-d1697d-1517378766023)]

Event历史报表

  • Transaction\Event月报表支持每天的趋势图,以天为单位,如下图
    [图片上传失败...(image-51d8ca-1517378766023)]
  • Transaction\Event报表日报表、周报表支持同比、环比对比,时间精度为5分钟
    [图片上传失败...(image-bf44fa-1517378766023)]

Problem

根据Transaction\Event数据分析出来系统可能出现的异常,包括访问较慢的程序,

Problem实时报表

Problem的类型如下:

代码 详解
error Log4j记录的错误异常
call 表示在远程调用中transaction中出错
sql 表示在数据库的调用中transaction中出错
url 表示在url请求中调用transaction中出错
failure 业务程序Transaction的失败(除了call\sql\url之外)
heartbeat 心跳消息
long-url 执行慢的url请求(可以进行进行时间筛选)
long-service 执行慢的service请求(可以进行进行时间筛选)
long-sql 执行慢的sql请求(可以进行进行时间筛选)

[图片上传失败...(image-a87ac4-1517378766023)]

点击机器IP,进入某一台机器出现的具体问题,这个包括了All中出现的所有错误统计之外,还增加了以分钟和线程为单位的错误分布图,具体如下:

[图片上传失败...(image-8fda4d-1517378766023)]

Problem历史报表

  • 在选择了特定的域、报表类型、时间和IP之后,点击[:: show ::] 查看某一Type下的Problem出现次数的分布图。(当前这一天、上一天、上周这一天)
    [图片上传失败...(image-8df6a1-1517378766023)]
  • 进一步,可以查看该Type下,某个Status的Problem出现次数的分布图。(当前这一天、上一天、上周这一天)
    [图片上传失败...(image-eec2c3-1517378766023)]

Heartbeat实时报表

JVM内部一些状态信息,Memory,Thread等

  • Thread信息包括
名称 详细
Active Thread 系统当前活动线程
Daemon Thread 系统后台线程
Total Started Thread 系统总共开启线程
Started Thread 系统每分钟新启动的线程
Cat Started Thread 系统中CAT客户端启动线程
Pigeon Started Thread 系统中Pigeon客户端启动线程数
  • System Info信息包括
名称 详细
NewGc Count 新生代GC次数
OldGc Count 旧生代GC次数
System Load Average 系统Load详细信息
  • Memery Info信息包括
名称 详细
Memory Free 系统memoryFree情况
Heap Usage Java虚拟机堆的使用情况
None Heap Usage Java虚拟机Perm的使用情况
  • Disk Info信息包括

详细|
---|---
/根的使用情况|
/data盘的使用情况|

  • Cat Info信息包括

详细|
---|---
Cat每分钟产生消息数|
Cat每分钟丢掉的消息数|
Cat每分钟产生消息大小|

Dependency实时报表

系统之间实时调用数据信息,包括远程服务、数据库、缓存等

名称 详细
时间统计粒度 分钟
形状:圆形 SOA的一个服务或者一个Web
形状:矩形 数据库一个实例
形状:菱形 缓存一种集群(MemoryCached)
状态:红色 Error
状态:黄色 Warning
状态:绿色 OK
浮层 点击节点可以直接查询这一分钟内这个节点的详细状态

[图片上传失败...(image-c91a1d-1517378766023)]

  • 应用监控大盘
    把所有核心项目用监控大盘方式展示,能全局看到项目目前问题。
    [图片上传失败...(image-f67934-1517378766023)]

Metric实时报表

公司核心业务指标监控

“当前值”表示当前实际值,“基线值”表示根据历史趋势算出来当天的基准线

[图片上传失败...(image-957773-1517378766023)]

Matrix实时报表

一次请求(URL、Service)中的调用链路统计,包括远程调用、sql调用、缓存调用

  • Ratio表示访问次数,Min是最少,Max是最大,Avg是平均
  • Cost表示时间消耗,Min是最少,Max是最大,Avg是平均
    [图片上传失败...(image-cd39f1-1517378766023)]

调用链路排行

包括远程调用、sql调用、缓存调用最多排行
[图片上传失败...(image-1c669-1517378766023)]

Cross实时报表

SOA系统用关于RPC调用的报表(支持粒度服务、IP、方法)

统计参数包括:访问量,错误量,响应时间,QPS

客户端调用

[图片上传失败...(image-3cd72e-1517378766023)]

服务端调用

[图片上传失败...(image-2e5d04-1517378766023)]

Storage实时报表

监控一段时间内数据库、Cache访问情况:各种操作访问次数、响应时间、错误次数、长时间访问量等等。

长时间访问定义:操作响应时间超过1秒(数据库),操作响应时间超过50毫秒(cache)

  • 统计报表

    • 可以选择相应操作,查看该操作的各项访问指标。数据库默认操作:select,update,delete,insert;cache默认操作:add,get,mGet,remove
    • Domain是访问该数据库或cache的应用名,All是所有应用操作数据汇总
    • Count: 操作数;Long:长时间操作数;Avg:响应时间;Error:操作错误数
    • 点击查询可以在当前报表上过滤不同操作访问情况,方便分析数据
      [图片上传失败...(image-b90a6b-1517378766023)]
  • 统计曲线图

    • 图表展示当前应用操作数据库或cache情况
    • 图表展示的操作种类,与查询报表中的操作对应一致
      [图片上传失败...(image-bfe9a-1517378766023)]

埋点方案

spring-boot

与spring-boot的整合就是在spring-boot的项目中添加一个配置类。配置类中配置的是由cat提供的过滤器

以上的方案只能监控URL的执行情况,具体内部执行情况无法监控。

mybatis

对于mybatis的监控是通过编写mybatis插件,然后添加如下配置:

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="plugins">
            <array>
                <bean class="com.mybatis.CatMybatisPlugins"></bean>
            </array>
        </property>
        <property name="mapperLocations">
            <list>
                <value>classpath:com/mybatis/*.xml</value>
            </list>
        </property>
    </bean> 

以上方案能够检测到sql的执行情况。

Spring AOP ANNOTATION 监控方法执行时间

NOTE : cat不推荐使用aop方法埋点,会有少量性能损耗,推荐使用api,这样type和name以及成功状态可以更加灵活。

通过定义注解切面来监控方法执行时间。使用用例如下:

public interface UserService {

    public void delete(Object entity);
    
    public void getAllObjects();
    
    public void save(Object entity);
    
    public void update(Object entity);
}

public class UserServiceImpl implements UserService {

    @Override
    @CatAnnotation
    public void delete(Object entity) {
        sleep(30);
        System.out.println("UserServiceImpl---删除方法:delete()---");
    }

    @Override
    @CatAnnotation
    public void getAllObjects() {
        sleep(40);
        System.out.println("UserServiceImpl---查找所有方法:getAllObjects()---");
    }

    @Override
    @CatAnnotation
    public void save(Object entity) {
        sleep(10);
        System.out.println("UserServiceImpl---保存方法:save()---");
    }

    private void sleep(int time) {
        try {
            Thread.sleep(time);
        } catch (Exception e) {
        }
    }

    @Override
    @CatAnnotation
    public void update(Object entity) {
        sleep(20);
        System.out.println("UserServiceImpl---更新方法:update()---");
    }

}

优缺点对比

优点

  • 可扩展:支持分布式、跨IDC部署,横向扩展。
  • 高可用:所有应用都可以倒下了,需要监控还站着,告诉它们发生了什么。
  • 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。
  • 全量数据:小概率事件是常态,百万分之一的概率,碰到了就是100%。
  • 高吞吐:要想还原真相,需要全方位的监控和度量,必须要有超强的处理吞吐能力。
  • 故障容忍:CAT本身故障不应该影响业务正常运转,CAT挂了,应用不该受影响,只是监控能力暂时减弱。
  • 不保证可靠:允许消息丢失,这是一个很重要的trade-off,虽然目前CAT可以做到4个9的可靠性。

缺点

  • 并不能直接识别应用系统框架服务,这款产品具有很强的侵入性,需要用户调用Cat API自定义监控打点以及监控纬度数据,侧重于业务监控 。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容