业务架构-领域模型驱动开发-需求分析

CAT使用总结

2018-01-29  本文已影响2146人  清歌笑染红尘

简介

CAT基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。
CAT支持的监控消息类型包括:

Logview


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

可视化Logview


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

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


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


Transaction

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

Transaction实时报表

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

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

Transaction历史统计报表


Even

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

Event实时报表

Event历史报表

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历史报表

Heartbeat实时报表

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

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

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

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

Dependency实时报表

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

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

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

Metric实时报表

公司核心业务指标监控

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

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

Matrix实时报表

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

调用链路排行

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

Cross实时报表

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

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

客户端调用

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

服务端调用

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

Storage实时报表

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

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

埋点方案

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()---");
    }

}

优缺点对比

优点

缺点

上一篇下一篇

猜你喜欢

热点阅读