点评cat系列-简介
面上有很多优秀的 OS 级监控系统 (比如 falcon), 这些监控系统主要聚焦在 CPU/IO/Mem/Disk 和应用端口, falcon 甚至可以监控到 JVM. 但对于应用系统内部的一些监控, 比如程序的 exception/接口性能/调用链, 这些系统级的监控系统就不太好用了.
大众点评开源的 cat, 就是一个为数不多的面向应用的监控系统, 而且应该最好的一个.
======================
cat 使用场景:
======================
亮点:
1. [Event 类]: 使用 cat 收集程序抛出的 exception. cat 有报错大盘界面.
2. [Transaction 类]: 性能监控, 跨越边界的行为往往会引起性能问题.
3. [Event 类]: 实时监某系统访问频率.
4. [Transaction 类]: 分布式调用链监控, 这在微服务架构中尤其重要.
其他场景:
1. [Heatbeat 类]: 监控业务系统自身的一些指标, 比如 cpu/io 等. 程序需要主动定期执行心跳汇报指令.
2. [Metric 类]: 监控单位时间内的一些业务指标, 这些指标可以是累加计数类, 也可以是数值类. 对于累加计数类,
Cat 提供发送 alert 功能, 我们可以将报警以邮件/微信形式发送出去.

======================
Cat 内部机制:
======================
1. 业务应用: 业务应用通过 cat 的客户端进行埋点.
2. cat 客户端 (Cat-client): cat 客户端负责将埋点消息以队列形式传递到 cat 消费机.
cat 客户端和 cat 消费机之间是通过 TCP 长连接方式通讯的, 另外又是异步的消息队列, 所以性能很好.
3. cat 消费机 (Cat-consumer): cat 消费机不断地从网络中取出消息树, 然后转到服务端的消费队列中.
4. 控制台 (cat-home): cat-home 负责 Web UI 展现, 所有的 cat 节点都可作为控制台.
5. 告警端 (alarm-machine), 启动告警线程, 进行规则匹配, 发送告警信息, cat 集群中只有一个节点可以作为告警机.
6. 任务机 (job-machine), 做一些离线的任务,合并天、周、月等报表, cat 集群中只有一个节点可以作为任务机.
7. cat 原始日志转储 (Cat-consumer 组件之一), cat 原始日志转储可以认为是一个特殊的报表分析器, 它不生成报表, 仅仅是将消息存储到本地文件系统.
cat 所有服务器组件, 包括 cat-consumer 和 cat-home , 都是运行在同一个 JVM 内部的, 所以每个 cat 服务端既可以作为 consumer, 也可以作为 home, 另外一个 cat 集群可以跨多个数据中心.
实时报表: CAT 会生成每小时的报表, 对于当前小时, 是基于内存的, 所以 cat 能显示实时报表, 即使是多台机器构成的 cat 集群, 在报表上呈现的也是所有机器汇总, 而不是单台机器的汇总. cat 会展现单位时间内指标的总和, 对于数值类 metric, cat 会自动计算平均值等统计指标.
c

消息树可以嵌套

======================
Message-ID 格式
======================
Message-ID 格式: applicationName-ip-time-seq
第一段:是应用名 applicationName, 所以 applicationName 取名不要太长, 以减少网络开销.
第二段:是当前这台机器的 IP 的 16 进制格式.
第三段:是系统当前时间除以小时得到的整点数.
第四段:是表示当前这个客户端在当前小时的顺序递增号 (AtomicInteger 自增,每小时结束后重置).
======================
参考
======================
深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署
https://blog.csdn.net/caohao0591/article/details/80693289
官网:
http://unidal.org/ http://cat.meituan.com/
发布历史
http://unidal.org/cat/r/home?op=view&docName=release
源码和文档
https://github.com/dianping/cat
透过 CAT,来看分布式实时监控系统的设计与实现
http://www.chanpin100.com/article/45629
深度剖析开源分布式监控 CAT
https://tech.meituan.com/CAT_in_Depth_Java_Application_Monitoring.html
大众点评CAT开源监控系统剖析
https://www.cnblogs.com/yeahwell/p/cat.html
点评cat系列-简介的更多相关文章
- 点评cat系列-服务器开发环境部署
我们有三种部署方式:1. docker 部署2. 采用官方的 war 包部署. 3. 源码部署 很显然 docker 部署是最简单的, 我尝试了多次, 都在 cat docker 容器镜像的编译过程失 ...
- 点评cat系列-应用集成
========================消息的基本属性========================消息的几个属性:type: 定义消息的 category, 比如 SQL 或 RPC 或 ...
- 深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署
前言: CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring.MyBatis.Dubbo 等框架以及Log4j 等结合,支持P ...
- 美团点评CAT监控平台研究
1. 美团点评CAT监控平台研究 1.1. 前言 此文根据我对官方文档阅读并记录整理所得,中间可能会穿插一些自己的思考和遇坑 1.2. 简介 CAT 是基于 Java 开发的实时应用监控平台,为美团点 ...
- 深入详解美团点评CAT跨语言服务监控(六)消息分析器与报表(一)
大众点评CAT微服务监控架构对于消息的具体处理,是由消息分析器完成的,消息分析器会轮训读取PeriodTask中队列的消息来处理,一共有12类消息分析器,处理后的结果就是生成各类报表. 消息分析器的构 ...
- 深入详解美团点评CAT跨语言服务监控(四)服务端消息分发
这边首先介绍下大众点评CAT消息分发大概的架构如下: 图4 消息分发架构图 分析管理器的初始化 我们在第一章讲到服务器将接收到的消息交给解码器(MessageDecoder)去做解码最后交给具体的消费 ...
- 深入详解美团点评CAT跨语言服务监控(三)CAT客户端原理
cat客户端部分核心类 message目录下面有消息相关的部分接口 internal目录包含主要的CAT客户端内部实现类: io目录包含建立服务端连接.重连.消息队列监听.上报等io实现类: spi目 ...
- 深入详解美团点评CAT跨语言服务监控(二) CAT服务端初始化
Cat模块 Cat-client : cat客户端,编译后生成 cat-client-2.0.0.jar ,用户可以通过它来向cat-home上报统一格式的日志信息,可以集成到 mybatis.spr ...
- 大众点评cat实时监控简介及部署
简介 背景 CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面 ...
随机推荐
- 持续代码质量管理-SonarQube Scanner部署
1. SonarQube Scanner地址 上一篇文章我们安装了SonarQube-7.3,让我们可以在页面查看代码质量.但是具体的扫描工作则需要SonarQube Scanner完成. 下载页面 ...
- spring异步执行报异常No qualifying bean of type 'org.springframework.core.task.TaskExecutor' available
最近观察项目运行日志的时候突然发现了一个异常, [2018-04-03 10:49:07] 100.0.1.246 http-nio-8080-exec-9 DEBUG org.springframe ...
- LInkedHashMap实现最近被使用(LRU)缓存
在最近的面试中,我曾被多次问到,怎么实现一个最近最少使用(LRU)的缓存.缓存可以通过哈希表来实现,然而为这个缓存增加大小限制会变成另一个有意思的问题.现在我们看一下怎么实现. 最近最少使用缓存的回收 ...
- centos7下kubernetes(17。kubernetes-回滚)
kubectl apply每次更新应用时kubernetes都会记录下当前配置,保存为一个revision(版次),这样就可以回滚到某个特定的revision 默认配置下,kubernetes只会保留 ...
- pip 升级 pip
For Python2 sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade pip For Python3 ...
- C# 将普通字符串转换为二进制字符串
1.因为项目的需要,在向数据库中添加人的信息时,必须要求是英文或数字,所以想了个办法,将我们人能看懂的字符串编译成二进制字符串转入就行了. 具体的逻辑实现代码如下:
- ELK的安装
首先得安装好Elasticsearch.Kibana和Logstash(这里全部使用rpm安装的是6.4.2版本,而且都是单机安装,暂时没有考虑分布式安装.) 服务器内存要求至少为4G,下图为运行起来 ...
- Java面试准备之探究源码
摘要:之前虽然对集合框架一些知识点作了总结,但是想想面试可能会问源码,于是又大致研究了一下集合框架的一些实现类的源码,在此整理一下. 一.集合框架 二.深究实现类 1.ArrayList源码实现 Ar ...
- 微信JSSDK使用步骤(用于在微信浏览器中自定义分享,分享到朋友圈,拍照,扫一扫等功能)
一.使用JSSDK需要一个公众号(需要认证!): (1).把自己项目的服务器地址输入. (2).把MP_verify_m7Qp93BAuIGDWRVO.txt 文件下载下来,放到该服务器域名指向的根 ...
- PHP中的DateTime类
DataTime类跟date(),strtotime(),gmdate()等函数有相同的作用,都是用来处理日期和时间的,但DateTime类更加直观.方便, 所以在PHP5.2.0以后推荐使用Date ...