Java微服务金融项目智牛股-基础知识一(CAT链路监控)

CAT链路监控

背景:从单体架构到微服务架构的演变, 一个业务请求往往会流转多个服务, 大型互联网产品服务架构尤为复杂,腾讯的抢红包服务, 阿里的交易支付服务, 可能就流转成百上千个服务节点, 面对众多服务, 如何监控管理? 服务请求一旦出现问题, 如何快速定位问题? 如何保障服务的高可用, 做到全面的监控与预警? 如何分析统计服务的运行状况? 看下链路监控产品如何解决这些问题。

CAT简介

  • CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。
  • CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
  • CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是48分钟40秒,基本上看到48分钟38秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。

CAT优势

  • 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中。
  • 全量数据:全量采集指标数据,便于深度分析故障案例。
  • 高可用:故障的还原与问题定位,需要高可用监控来支撑。
  • 故障容忍:故障不影响业务正常运转、对业务透明。
  • 高吞吐:海量监控数据的收集,需要高吞吐能力做保证。
  • 可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统。
  • 报表丰富: 帮助管理人员从各个角度了解系统的整体状况。

CAT报表

  • 报错统计报表
    在这里插入图片描述
  • 业务统计报表
    在这里插入图片描述
  • LOGVIEW统计
    在这里插入图片描述
  • 可视化LOGVIEW
    在这里插入图片描述
  • 应用类型报表
报表名称报表用途
Transaction实时报表一段代码的运行时间/次数/分布、比如URL/Cache/SQL执行次数和响应时间
Event实时报表事件产生的次 数/分布,比如出现一个异常
Problem实时报表根据Transaction/Event数据分析出来的系统出现的异常,包括访问较慢的程序等
Heartbeat实时报表JVM内部一些状态信息,Load/Memory/GC/Thread等
Metric实时报表业务指标采集监控报表
Matrix实时报表一个请求调用分布统计(一次请求中调用多少次SQL/RPC/Cache等),可评估应用设计的合理性

CAT链路监控原理

链路监控机制

在这里插入图片描述

CAT架构设计

整体设计

简单即是最好原则设计, 主要分为三个模块cat-client,cat-consumer,cat-home。

  • cat-client 提供给业务以及中间层埋点的底层sdk。
  • cat-consumer 用于实时分析从客户端的提供的数据。
  • cat-home 作为用户提供给用户的展示的控制端。

客户端设计
客户端设计是CAT系统设计中最为核心的一个环节,客户端要求是做到API简单、高可靠性能、无论在任何场景下客户端都不能影响各业务服务的性能(监控只是公司核心业务流程一个旁路环节)
在这里插入图片描述
服务端单机cat-consumer的整体架构:
在这里插入图片描述
当某个报表处理器处理来不及时候,比如Transaction报表处理比较慢,可以通过配置支持开启多个Transaction处理线程,并发消费消息。

在这里插入图片描述

CAT安装配置

不建议在Windows下部署, 设计上对window支持不好, 容易出各种问题。

  1. 下载CAT源码, 如GIT方式过慢, 可用Download Zip 方式打包下载。
  2. 构建CAT服务war包将MAVEN加入到系统PATH, 执行mvn命令:
mvn clean install -Dmaven.test.skip=true 
  1. 创建数据库

先创建CAT数据库, 采用utf8mb4字符集, 再导入{CAT_SRC}/script/目录下的CatApplication.sql脚本。

  1. 配置修改
    运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限, 如果程序是在E盘, 则需创建e:/data/appdatas/cat目录
  • 配置/data/appdatas/cat/client.xml
<?xml version="1.0" encoding="utf-8"?>
<config mode="client"><servers><server ip="127.0.0.1" port="2280" http-port="8080"/></servers>
</config>
  • 配置/data/appdatas/cat/datasources.xml
<?xml version="1.0" encoding="utf-8"?><data-sources><data-source id="cat"><maximum-pool-size>3</maximum-pool-size><connection-timeout>1s</connection-timeout><idle-timeout>10m</idle-timeout><statement-cache-size>1000</statement-cache-size><properties><driver>com.mysql.jdbc.Driver</driver><url><![CDATA[jdbc:mysql://127.0.0.1:3306/cat]]></url>  <!-- 请替换为真实数据库URL及Port  --><user>root</user>  <!-- 请替换为真实数据库用户名  --><password>root</password>  <!-- 请替换为真实数据库密码  --><connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties></properties></data-source>
</data-sources>
  1. TOMCAT配置

修改tomcat conf 目录下 server.xml, 检查好端口没有被其他程序占用。

<Connector port="8080" protocol="HTTP/1.1"URIEncoding="utf-8"    connectionTimeout="20000"redirectPort="8443" />  <!-- 增加  URIEncoding="utf-8"  -->  

如果内存不足, 需作调整 linux

CATALINA_OPTS="-Xms1024m -Xmx2048m -Xss1024K  -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m"
  1. 启动
  • 执行start.sh

  • 打开控制台地址: http://127.0.0.1:8080/cat/s/config?op=routerConfigUpdate

  • 默认用户名:admin 默认密码:admin

在这里插入图片描述

CAT集群部署

不作详细介绍, 具体可参考官方文档: CAT集群部署

总结:CAT的单机部署, 虚拟机下, 注意绑定的IP, TOMCAT下注意采用UTF8编码, 防止乱码, 如本机内存有限, 可以将CAT占用内存调小些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/663.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP从入门到放弃系列之可用性检查-订单物料可用性检查-Part1

文章目录导航 概述&#xff1a;系统配置&#xff1a;物料可用性检查维护检查规则维护物料下达维护组件检查类型 数据测试&#xff1a;系统配置准备主数据准备测试结果 概述&#xff1a; 在生产订单下达时保证有足够的组件可以用于生产业务&#xff0c;保证生产业务能够按计划执…

createdTime(new Date()) 数据库时间比实际多八小时

本来是createdTime&#xff08;new Date&#xff08;&#xff09;&#xff09;&#xff0c;一次生成两条数据 一直正常&#xff0c;今天却多八小时 一开始往new Date&#xff08;&#xff09;差八个小时的问题上找&#xff0c; 网上说要 在apprication.yml文件中配置一下数据…

考研算法31天:归并排序 【归并排序,分治】

算法介绍 归并算法其过程分为三步&#xff1a; 1.分&#xff1a;递归到最下面 2.治&#xff1a;两个元素之间排序。 3。归&#xff1a;递归到最下层然后返回&#xff0c;从两个元素变成四个元素再排序。 如下图所示&#xff1a; 动态图如下&#xff1a; 算法题目 算法ac代…

【设计模式】模板方法与策略模式的结合使用

文章目录 1. 概述1.1.简述模板方法 2.模板方法实现2.1.简单实现2.2.在SpringBoot中的实现 3.模板方法与策略模式的结合使用3.1.代码实现 4.总结 1. 概述 模板方法是一种非常简单的设计模式&#xff0c;只要能够理解面向对象中的继承与多态就能够理解这种设计模式&#xff0c;我…

Spark中python和jvm的通信杂谈--ArrowConverter

背景 要提起ArrowConverters&#xff0c;就得说起Arrow这个项目&#xff0c;该项目的初衷是加速进程间的数据交换&#xff0c;从目前的社区发展以及它的周边来看&#xff0c;其实是一个很不错的项目。 那为什么Spark要引入Arrow呢&#xff1f;其实还得从Pyspark中python和jvm的…

购物车业务

一、分析购物车vo &#xff08;1&#xff09;添加成功页 public class CartItemVo implements Serializable {/*** 商品id*/private Long skuId;/*** 是否选中*/private Boolean check true;/*** 商品标题*/private String title;/*** 商品图片*/private String image;/***…

【Docker】Docker运行时间长,空间不足no space left on device: unknown

空间不足no space left on device: unknown问题解决 1.执行出错2.解决方法3.dump文件是否可以删除 1.执行出错 在运行 docker restart 容器Id查看磁盘空间占用 df -h2.解决方法 这个问题是由与 /run 的空间使用完了&#xff0c;清理/run的空间,经过查找使用最大的是 /run/u…

Windows服务启动exe无界面终极解决方案

1、前言 我这个方案&#xff08;C#操作&#xff09;是彻底解决【从Windows服务启动程序exe&#xff0c;程序无界面】问题的终极解决方案&#xff0c;终极方案&#xff0c;绝对的终极方案&#xff0c;本来打算收钱的&#xff0c;还是算了&#xff0c;你们也不容易&#xff0c;关…

【前端工程化】深入浅出vite(二)--vue3全家桶+ts构建后管系统

安装基础包 npm create vitelatest # 这里选择的是VueTypescript的组合 cd vue-admin npm install# 先安装基础包 npm install vue-router4 npm i pinia npm i axios npm install sass --save-dev npm install element-plus --save npm install element-plus/icons-vue npm in…

如何访问NetApp E系列存储的CLI命令行

NetApp存储的E系列&#xff08;e-series&#xff09;是收购LSI存储而来的&#xff0c;所以这个产品的install base&#xff0c;也就是安装量其实是很大的&#xff0c;因为早期LSI的商业模式就是OEM&#xff0c;给很多的IT公司做过OEM&#xff0c;比较典型的就是IBM的早期的DS存…

浅谈电瓶车充电桩运营方案 安科瑞 许敏

1. 概述 电动车火灾事故频频发生&#xff0c;毫不起眼的电动车屡次引发夺命大火&#xff0c;电动车已然成为火灾“重灾区”。为预防和遏制电动自行车火灾事故发生&#xff0c;三令五申各种政策&#xff0c;为此安委会曾出台《电动自行车集中停放和充电治理方案》。 大部分充电过…

MySQL日志管理、备份与恢复

文章目录 MySQL日志管理、备份与恢复1 MySQL日志管理1.1 日志的分类1.2 日志的配置1.3 日志查询1.3.1 查看通用查询日志是否开启1.3.2 查看二进制日志是否开启1.3.3 查看慢查询日志功能是否开启1.3.4 查看慢查询时间设置1.3.5 在数据库中设置开启慢查询的方法 2 数据备份2.1 数…