Cat安装与使用(美团开源监控)

Posted nikeylee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cat安装与使用(美团开源监控)相关的知识,希望对你有一定的参考价值。

一、Cat源代码下载和打包

1、在镜像网站下载cat源码和cat需要的依赖包

下载地址:https://hub.fastgit.org/dianping/cat

cat源码:下载master分支代码;

cat依赖包:下载mvn-repo分支代码;

 

也可以在我自己的gitee代码仓库下载cat源码和依赖包;

cat源码:

cat依赖包:

 

2、在本地打cat的war包

1)首先把下载的cat源码工程更名,改为cat;

 

2)看手册说明,要看cat项目根目录的README.md文件

README.md说明:

  • 1、根目录下 cat-client 模块以后不再维护,下个大版本更新计划移除。新版Java客户端参考:lib/java;--操作:将cat根目录的pom.xml中cat-client的模块删除(删除<module>cat-client</module>)
  • 2、管理端、服务端、告警服务均使用 cat-home 模块部署即可
  • 3、其他模块:
    • - integration:cat和一些第三方工具集成的内容(此部分一部分是由社区贡献,一部分官方贡献)
      - lib:CAT 的客户端,包括 Java、C/C++、Python、Node.js、Go
      - script:CAT 数据库脚本

 

3)在cat工程执行编译命令 

编译命令:

mvn clean compile

 

报错1:Could not find artifact org.unidal.framework:foundation-service:jar:2.5.0

[ERROR] Failed to execute goal on project cat-core: Could not resolve dependencies for project com.dianping.cat:cat-core:jar:3.0.0: The following artifacts could not be resolved: org.unidal.framework:foundation-ser
vice:jar:2.5.0, org.unidal.framework:web-framework:jar:2.4.0, org.unidal.framework:dal-jdbc:jar:2.4.0: Could not find artifact org.unidal.framework:foundation-service:jar:2.5.0 in alimaven (http://maven.aliyun.com/
nexus/content/groups/public) -> [Help 1]

解决:将下载的mvn-repo分支解压,放入到本地的.m2仓库中;

本地mvn-repo分支解压,解压出org目录;

将org目录拷贝到本地的.m2仓库中;

 

再执行编译命令:

报错2:Failure to find org.codehaus.plexus:plexus-container-default:jar:3.1.0

[ERROR] Failed to execute goal org.unidal.maven.plugins:codegen-maven-plugin:2.5.8:dal-model (generate data model) on project cat-core: Execution generate data model of goal org.unidal.maven.plugins:codegen-maven-p
lugin:2.5.8:dal-model failed: Plugin org.unidal.maven.plugins:codegen-maven-plugin:2.5.8 or one of its dependencies could not be resolved: Failure to find org.codehaus.plexus:plexus-container-default:jar:3.1.0 in h
ttp://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of alimaven has elapsed or updates are forced -> [Help 1]

解决:在.m2仓库找到org.unidal.maven.plugins:codegen-maven-plugin:2.5.8版本的pom文件codegen-maven-plugin-2.5.8.pom用idea打开,点击父引用的default,跳转到default-2.5.8.pom文件中,将文件中foundation-service.version从3.1.0版本修改为4.0.0版本;

<parent>
      <groupId>org.unidal.maven.plugins</groupId>
      <artifactId>default</artifactId>
      <version>2.5.8</version>
</parent>

 <foundation-service.version>4.0.0</foundation-service.version>

 

再执行编译命令:这里是JDK11版本会碰到的问题

报错3:程序包 sun.misc找不到符号类 BASE64Encoder

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project cat-consumer: Compilation failure: Compilation failure:
[ERROR] /D:/Nikey/Project/Repository/gitee/cat/cat/cat-consumer/src/main/java/com/dianping/cat/consumer/util/InvidStringBuilder.java:[21,16] 找不到符号
[ERROR] 符号:   类 BASE64Encoder
[ERROR] 位置: 程序包 sun.misc

解决:找到InvidStringBuilder.java这个类,

  • 将import sun.misc.BASE64Encoder; 替换为import org.apache.commons.codec.binary.Base64;
  • 将return语句,替换为return "Base64." + Base64.encodeBase64(key.getBytes());
//import sun.misc.BASE64Encoder;
import org.apache.commons.codec.binary.Base64;
//			return "Base64." + new BASE64Encoder().encodeBuffer(key.getBytes()).trim();
			return "Base64." + Base64.encodeBase64(key.getBytes());

 

再执行编译命令:编译即可成功

 

4)在cat根目录执行install命令

执行install命令:

mvn clean install -DskipTests

报错:Could not find artifact org.unidal.framework:test-framework:jar:2.4.0

[ERROR] Failed to execute goal on project cat-core: Could not resolve dependencies for project com.dianping.cat:cat-core:jar:3.0.0: Could not find artifact org.unidal.framework:test-framework:jar:2.4.0 in alimaven
(http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]

解决:修改cat根目录的pom.xml文件中test-framework的版本,改为2.5.0

 

再执行install命令:

install成功后,在下面的路径获取到war包,将cat-home-3.0.0.war修改为cat.war

Installing D:\\Nikey\\Project\\Repository\\gitee\\cat\\cat\\cat-home\\target\\cat-alpha-3.0.0.war to C:\\Users\\nikey.lee\\.m2\\repository\\com\\dianping\\cat\\cat-home\\3.0.0\\cat-home-3.0.0.war
 

5)查看每个module具体生效的pom信息

在cat根目录执行命令:打开cat.txt,即可看到cat-home定义的version

mvn help:effective-pom > cat.txt

 

二、服务端安装和配置

1、准备环境

  • tomcat:apache-tomcat-8.5.68
  • mysql:mysql5.7.22
  • jdk1.8
  • 美团cat源码打的war包:cat.war

 

2、安装CAT的数据库

1)使用MySQL Workbench工具连接本地的mysql数据库

2)创建数据库,数据库名cat,数据库编码使用utf8mb4,否则可能造成中文乱码等问题;

CREATE SCHEMA `cat` DEFAULT CHARACTER SET utf8mb4 ;

3)将cat工程中,script目录中的sql拷贝到cat数据库运行

script目录:CatApplication.sql

sql拷贝到cat数据库运行,初始化数据表;

 

由于MySQL的系统参数max_allowed_packet默认配置较小,可能会限制server接受的数据包大小,有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败,所以要修改max_allowed_packet的值,修改后需要重启mysql;

在mysql的安装目录修改配置文件(如果没有,自己创建一个):C:\\Program Files\\MySQL\\MySQL Server 5.7\\my.ini

[mysqld]
port=3306
max_allowed_packet=1000M

[client]
port=3306

重启mysql:

net stop mysql
net start mysql

使用MySQL Workbench工具连接本地的mysql数据库,执行命令:

show VARIABLES like '%max_allowed_packet%';

 

3、Cat配置文件

在tomcat安装的磁盘目录,创建以下2个目录,并且赋予读写权限;我的tomcat安装在了D盘,所以在D盘创建如下2个目录:

  • D:\\data\\appdatas\\cat
  • D:\\data\\applogs\\cat

在D:\\data\\appdatas\\cat目录中,添加client.xml,datasources.xml,server.xml配置文件

client.xml配置文件

<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
    <servers>
          <!-- 服务端地址, 端口固定-->
		  <!-- 如果有多个Server, 就继续增加相应的节点配置 -->
		  <!-- 这是告诉客户端应该去链接哪个服务端,从哪个服务端里获取配置信息 ,相关源码也在 DefaultClientConfigManager中 -->
		 <server ip="127.0.0.1" port="2280" http-port="8080" />
    </servers>
</config>

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>

 

4、tomcat启动cat项目

将cat.war拷贝到tomcat的webapps目录,再启动tomcat;

运行命令启动tomcat:D:\\Tool\\apache-tomcat-8.5.68\\bin\\startup.bat

如果mysql的版本使用了8.0,启动tomcat后,会报错:[ChannelManager] Error when try connecting to /127.0.0.1:2280,解决方法:安装5.7版本的mysql就没问题了;

启动成功后,访问:http://127.0.0.1:8080/cat/r

 

5、按照实际需要,修改服务端配置和客户端路由

使用admin/admin登录

 

进入【服务端配置】页面修改IP地址

链接地址:http://127.0.0.1:8080/cat/s/config?op=serverConfigUpdate

 

进入【客户端路由】页面修改IP地址

链接地址:http://127.0.0.1:8080/cat/s/config?op=routerConfigUpdate

 

三、客户端集成案例

编写一个springboot与cat整合的案例

1、将cat-client通过源码安装到本地仓库

cat-client的源码路径:D:\\cat\\lib\\java

进入源码路径后,执行命令:mvn clean install -DskipTests

安装成功后,在本地仓库就存在cat-client-3.0.0.jar包了;

本地仓库  C:\\Users\\nikey.lee\\.m2\\repository\\com\\dianping\\cat\\cat-client\\3.0.0\\cat-client-3.0.0.jar

 

如果报错:不再支持目标选项 1.5。请使用 1.6 或更高版本。

解决方法:修改pom文件,在属性标签中,添加编译的版本号,再执行安装install命令,即可安装成功;

pom文件路径: D:\\cat\\lib\\java\\pom.xml

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于Cat安装与使用(美团开源监控)的主要内容,如果未能解决你的问题,请参考以下文章

Cat安装与使用(美团开源监控)

深入详解美团点评CAT跨语言服务监控消息分析器与报表

深入详解美团点评CAT跨语言服务监控 CAT简介与部署

CAT监控以及依赖MySQL,tomcat和JDK安装

CAT监控以及依赖MySQL,tomcat和JDK安装

CAT监控以及依赖MySQL,tomcat和JDK安装