mac部署CAT监控服务
在 Mac 上部署美团点评开源的 CAT 监控服务端,可以按照以下步骤操作:
1. 环境准备
1.1 安装依赖
确保已安装以下工具:
-
JDK 8+(建议 OpenJDK 11)
-
MySQL 5.7+(存储监控数据)(8.0+不支持。。)
如果需要支持8.0,可以使用这个工程
https://github.com/lazeyliu/cat(最低支持tomcat-10。。)
https://github.com/carlzhangweiwen/cat(编译不通过)
-
Maven 3.6+(构建 CAT 源码)
-
Tomcat 8/9(部署 CAT Web 控制台)
通过 Homebrew 安装:
# 安装 Homebrew(若未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 安装依赖
brew install openjdk@11 mysql maven tomcat@9
1.2 配置环境变量
在 ~/.zshrc 或 ~/.bash_profile 中添加:
# Java
export JAVA_HOME=/usr/local/opt/openjdk@11
export PATH=$JAVA_HOME/bin:$PATH# Maven
export MAVEN_HOME=/usr/local/Cellar/maven/3.8.6
export PATH=$MAVEN_HOME/bin:$PATH# Tomcat
export CATALINA_HOME=/usr/local/opt/tomcat@9/libexec
export PATH=$CATALINA_HOME/bin:$PATH
生效配置:
source ~/.zshrc
2. 初始化 MySQL 数据库
2.1 启动 MySQL
brew services start mysql
2.2 创建 CAT 数据库
登录 MySQL:
mysql -u root -p
执行以下 SQL:
-- 创建数据库
CREATE DATABASE `cat` DEFAULT CHARACTER SET utf8mb4;-- 创建用户并授权
CREATE USER 'cat'@'localhost' IDENTIFIED BY 'cat_password';
GRANT ALL PRIVILEGES ON `cat`.* TO 'cat'@'localhost';
FLUSH PRIVILEGES;
2.3 导入 CAT 初始表结构
下载 CAT 源码并导入 SQL:
git clone https://github.com/dianping/cat.git
cd cat/script
mysql -u cat -p cat < CatApplication.sql
mysql -u cat -p cat < CatDailyReport.sql
输入密码 cat_password(与 SQL 中配置一致)。
3. 编译 CAT 服务端
3.1 下载源码
git clone https://github.com/dianping/cat.git
cd cat
3.2 修改数据库配置
在Linux系统安装时,CAT应用要求对/data/appdatas/cat和/data/applogs/cat路径有读写权限。
CAT服务端应用会对这两个目录进行读写操作,因此需要首先创建这两个目录。并且应确保启动CAT应用的用户对这两个目录有读写权限。
服务端部署/data/appdatas/cat/client.xml和 server.xml配置无用(限3.0+war包),可以去掉
部署。
需要在data目录下创建文件夹:
# mkdir -p /data/appdatas/cat && mkdir -p /data/applogs/cat
如果提示mkdir: /data: Read-only file system,表示mac根目录无法创建文件夹,则可以通过软链解决,具体解决方法查看:
https://blog.csdn.net/youwen21/article/details/115000907
编辑文件 cat-home/src/main/resources/datasources.xml:
<?xml version="1.0" encoding="utf-8"?>
<data-sources><data-source id="cat"><properties><driver>com.mysql.jdbc.Driver</driver><url>jdbc:mysql://127.0.0.1:3306/cat</url><user>cat</user><password>cat_password</password><connectionProperties>useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</connectionProperties></properties></data-source>
</data-sources>
3.3 编译打包
mvn clean install -DskipTests
编译成功后,生成以下文件:
-
cat-home/target/cat-home.war(Web 控制台) -
cat-client/target/cat-client.jar(客户端依赖)cat-client.jar目前没有maven仓库下载,需要自己上传到自己的私服,或者存放到本地依赖目录。
自己编译的部署有问题,最好还是下载官方提供的war包吧https://github.com/dianping/cat/releases/tag/3.1.0
4. 部署到 Tomcat
4.1 复制 WAR 包到 Tomcat
cp cat-home/target/cat-home.war $CATALINA_HOME/webapps/
4.2 启动 Tomcat
catalina start
访问控制台:
http://localhost:8080/cat
默认账号:admin,密码:admin。
5. 配置 CAT 服务端
5.1 开放端口
确保以下端口可用:
- 8080:Tomcat Web 端口(CAT 控制台)
- 2280:CAT 服务端 TCP 端口(客户端上报数据)
5.2 修改服务端配置(可选)
编辑 cat-home/src/main/resources/server.xml,调整服务端参数:
<config local-mode="true"><server id="default"><property name="local-mode" value="true"/><property name="http-port" value="8080"/><property name="tcp-port" value="2280"/></server>
</config>
6. 验证部署
6.1 检查 CAT 控制台
登录后查看以下报表是否正常:
- Transaction:事务统计
- Event:自定义事件
- Heartbeat:心跳检测
6.2 客户端测试
在 Spring Boot 应用的 cat-client.xml 中配置:
<servers><server ip="localhost" port="2280" http-port="8080"/>
</servers>
重启应用后,观察 CAT 控制台是否有数据上报。
常见问题排查
1. 控制台无法访问
把文件cat.war (如果叫cat-home.war 重命名为cat.war)
常见问题:https://www.cnblogs.com/jingch/p/17141552.html
http://localhost:8080/cat/s/config?op=serverConfigUpdate
-
检查 Tomcat 是否启动:
ps aux | grep tomcat -
查看 Tomcat 日志:
tail -f $CATALINA_HOME/logs/catalina.out
2. 客户端数据未上报
-
验证端口连通性:
telnet localhost 2280 -
检查
cat-client.xml中的服务端 IP 和端口。
3. 数据库连接失败
-
检查 MySQL 用户权限:
SHOW GRANTS FOR 'cat'@'localhost'; -
确认 SQL 脚本已完整导入。
优化建议
-
数据清理策略
修改cat-home/src/main/resources/datasources.xml,配置自动清理历史数据:<property name="hdfs-clean-period">86400</property> <!-- 清理周期(秒) --> -
集群部署
若需高可用,可部署多个 CAT 服务端节点,并配置负载均衡。
通过以上步骤,即可在 Mac 上完成 CAT 监控服务端的部署。如果遇到问题,可根据日志和端口连通性逐步排查。
相关文章:
mac部署CAT监控服务
在 Mac 上部署美团点评开源的 CAT 监控服务端,可以按照以下步骤操作: 1. 环境准备 1.1 安装依赖 确保已安装以下工具: JDK 8(建议 OpenJDK 11) MySQL 5.7(存储监控数据)(8.0不支持…...
实变函数:集合与子集合一例(20250329)
题目 设 r , s , t r, s, t r,s,t 是三个互不相同的数,且 A { r , s , t } A \{r, s, t\} A{r,s,t}, B { r 2 , s 2 , t 2 } B \{r^2, s^2, t^2\} B{r2,s2,t2}, C { r s , s t , r t } C \{rs, st, rt\} C{rs,st,rt} 若 A B C A B C ABC 则 { r , s…...
软件工程之需求工程(需求获取、分析、验证)
一、需求获取(Requirements Elicitation) 1. 定义与目标 需求获取是通过与用户、利益相关者等交互,识别并捕获系统需求的过程,目标是明确用户意图与业务目标,避免后期因需求偏差导致返工。 2. 主要方法 问卷法&…...
c++第三课(基础c)
1.前文 2.break 3.continue 4.return 0 1.前文 上次写文章到现在,有足足这么多天(我也不知道,自己去数吧) 开始吧 2.break break是结束循环的意思 举个栗子 #include<bits/stdc.h> using namespace std; int main(…...
基于Elasticsearch的个性化内容推荐技术实践
近期开发了一款新的app,并深度参与的全流程的构建及开发,在开发首页内容推荐的时候,写了一套通过ES实现的推荐算法,小有所得,写此博客记录一下。 一、Elasticsearch在推荐系统中的核心作用 1.1 实时索引与检索 Elast…...
el-radio-group 中 el-radio-button value未能绑定上数值数据
这样绑定到admin后不会随着admin的值显示 在value加上 : 后成功显示...
Python Cookbook-4.13 获取字典的一个子集
任务 你有一个巨大的字典,字典中的一些键属于一个特定的集合,而你想创建一个包含这个键集合及其对应值的新字典。 解决方案 如果你不想改动原字典: def sub_dict(somedict,somekeys,default None):return dict([(k, somedict.get(k,default)) for k…...
JSP(实验):带验证码的用户登录
[实验目的] 1.掌握应用request对象获取表单提交的数据。 2.掌握解决获取表单提交数据产生中文乱码的问题。 3.掌握使用response对象进行定时跳转功能。 4.掌握使用session对象完成登录和注销功能。 [实验要求] 设计带验证码…...
自然语言模型的演变与未来趋势:从规则到多模态智能的跨越
自然语言模型的演变与未来趋势:从规则到多模态智能的跨越 自然语言处理(NLP)作为人工智能领域最具挑战性的分支之一,在过去几十年经历了翻天覆地的变化。从最初基于规则的系统到如今拥有万亿参数的大型语言模型(LLMs),这一技术革新不仅彻底改…...
集多功能为一体的软件,支持批量操作。
今天我给大家分享一个超实用的小工具,真的是太好用了!这个软件是吾爱大神无知灰灰制作的,它能直接一键把webp格式的图片转换成png格式。 webp转为png 一键操作,支持压缩 其实,作者最近在工作中经常遇到webp格式的图片…...
linux压缩指令
今天我们来了解一下linux压缩指令,压缩是我们文件传输的一种重要手段,对此,我们是必须学习压缩指令的,那么话不多说,来看. 1.grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。 基本语法&#x…...
C++细节知识for面试
1. linux上C程序可用的栈和堆大小分别是多少,为什么栈大小小于堆? 1. 栈(Stack)大小 栈默认为8MB,可修改。 为什么是这个大小: 安全性:限制栈大小可防止无限递归或过深的函数调用导致内存…...
Appium中元素定位的注意点
应用场景 了解这些注意点可以以后在出错误的时候,更快速的定位问题原因。 示例 使用 find_element_by_xx 或 find_elements_by_xx 的方法,分别传入一个没有的“特征“会是什么结果呢? 核心代码 driver.find_element_by_id("xxx") drive…...
污水处理厂人员定位方案-UWB免布线高精度定位
1. 方案概述 本方案采用免布线UWB基站与北斗卫星定位融合技术,结合UWBGNSS双模定位工卡,实现污水处理厂室内外人员高精度定位(亚米级)。系统通过低功耗4G传输数据,支持实时位置监控、电子围栏、聚集预警、轨迹回放等功…...
蓝桥刷题note11(好数)
1,好数 一个整数如果按从低位到高位的顺序,奇数位 (个位、百位、万位 ⋯⋯ ) 上的数字是奇数,偶数位 (十位、千位、十万位 ⋯⋯ ) 上的数字是偶数,我们就称之为 “好数”。 给定一个正整数 NN,请计算从 1 到 NN 一共…...
Elasticsearch 高级
Elasticsearch 高级 建议阅读顺序: Elasticsearch 入门Elasticsearch 搜索Elasticsearch 搜索高级Elasticsearch高级(本文) 1. nested 类型 1.1 介绍 Elasticsearch 中的 nested 类型允许你在文档内存储复杂的数据结构,比如一个…...
SQL Server 2022常见问题解答
以下是SQL Server 2022的常见问题解答,按主题分类整理: 一、安装与升级 SQL Server 2022的系统要求是什么? 支持的操作系统:Windows Server 2016及以上、Linux(Ubuntu 20.04/22.04, RHEL 8/9等)。内存:至少4GB(建议8GB+)。磁盘空间:6GB以上,具体取决于安装组件。如何…...
基于LLM的实时信息检索汇总分析系统
基于用户需求和技术发展趋势,设计基于LLM的实时信息检索汇总分析系统,方案如下: 一、系统架构设计 1. 分层多模态数据采集层 动态渲染适配引擎 采用混合爬虫技术: 静态页面:优化Scrapy框架,集成XPath模板库…...
C语言笔记数据结构(链表)
希望文章能对你有所帮助,有不足的地方请在评论区留言指正,一起交流学习! 目录 1.链表 1.1 链表概念和组成 1.2 链表的分类 1.3 顺序表和链表 2.单链表(无头单向不循环链表) 2.1 结点的创建 2.2 创建新的结点 2.3 单链表的打印 2.4 尾…...
Leetcode 两数相除
✅ LeetCode 29. 两数相除 — 思路总览 🧩 题目要求 给定两个整数 dividend 和 divisor,实现 整数除法,不能使用乘法 *、除法 / 和取余 % 运算符。 要求返回的结果应为 向零截断的整数商,即: 正数向下取整…...
C++ 初阶总复习 (16~30)
C 初阶总复习 (16~30) 目的16. 2009. volatile关键字的作用17. 2010.什么是多态 简单介绍下C的多态18. 2011. 什么是虚函数 介绍下C中虚函数的原理19. 2012 构造函数可以是虚函数嘛20. 2013.析构函数一定要是虚函数嘛?21. 2015. 什么是C中的虚…...
Koordinator-Metric查询
以CollectAllPodMetricsLast()举例,看看koordinator怎样使用tsdb进行查询。 CollectAllPodMetricsLast() GenerateQueryParamsLast()传入metric采集间隔2倍时间调用CollectAllPodMetrics()func CollectAllPodMetricsLast(statesInformer statesinformer.StatesInformer, metr…...
人工智能图像识别Scala介绍
Scala 一.Scala 简介 Scala即Scalable Language(可伸缩的语言),Scala 语言是由 Martin Odersky 等人在 2003 年开发的,并于 2004 年首次发布。意味着这种语言设计上支持大规模软件开发,是一门多范式的编程语言。 Sc…...
PCL 点云多平面探测
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里实现了一种点云多平面探测的算法,该算法使用基于鲁棒统计的方法进行平面补丁检测。该算法具体过程:首先将点云细分为更小的块(使用二分法),然后尝试为每个点云块匹配一个平面。如果平面通过了鲁棒平面性测试…...
npm i 出现的网络问题
npm i 出现的网络问题 解决方案: npm config list 查看.npmrc文件中是否配置了proxy删除.npmrc文件中的proxy,保存。重新执行npm i命令。 顺便说说解决这个问题的心里路程 每次安装vue的环境的时候,经常遇到npm安装一些插件或者是依赖的时…...
C++中使用CopyFromRecordset将记录集拷贝到excel中时,如果记录集为0个,函数崩溃,是什么原因
文章目录 原因分析解决方案1. 检查记录集是否为空2. 安全调用COM方法3.进行异常捕获4. 替代方案:手动处理空数据 总结 在C中使用CopyFromRecordset将空记录集(0条记录)复制到Excel时崩溃的原因及解决方法如下: 原因分析 空记录集…...
代码随想录算法训练营--打卡day3
复习:标注感叹号的需要在电脑上重新做几遍 一.两两交换链表中的节点!! 1.题目链接 24. 两两交换链表中的节点 - 力扣(LeetCode) 2.思路 画图 3.代码 class Solution {public ListNode swapPairs(ListNode head) …...
c#的.Net Framework 的console 项目找不到System.Window.Forms 引用
首先确保是建立的.Net Framework 的console 项目,然后天健reference 应用找不到System.Windows.Forms 引用 打开对应的csproj 文件 在第一个PropertyGroup下添加 <UseWindowsForms>true</UseWindowsForms> 然后在第一个ItemGroup 下添加 <Reference Incl…...
蓝桥杯嵌入式学习笔记
用博客来记录一下参加蓝桥杯嵌入式第十六届省赛的学习经历 工具环境准备cubemx配置外部高速时钟使能设置串口时钟配置项目配置 keil配置烧录方式注意代码规范头文件配置 模块ledcubemx配置keil代码实现点亮一只灯实现具体操作的灯,以及点亮还是熄灭 按键cubemx配置k…...
zookeeper详细介绍以及使用
Zookeeper 是一个开源的分布式协调服务,提供了一个高效的分布式数据一致性解决方案。它的主要作用是维护集群中各个节点之间的状态信息,协调节点之间的工作,并处理节点宕机等故障情况。Zookeeper 的核心功能包括数据发布/订阅、分布式锁、集群…...
