CAT 服务端搭建


前言


搭建环境


  • 操作系统:windows 10
  • jdk :1.8 (目前1.6,1.7,1.8都支持,官方推荐1.7)
  • tomact 7
  • maven : 3.2.5
  • 我搭建的是本地模式,没钱,集群模式没能力搭

cat 组件组成

  • CAT主要由以下组件组成(我这边搭建就是cat-home):
    • cat-home: 服务端组件,负责收集监控信息,分析处理生成报告、执行告警
    • cat-client: 客户端组件,负责与服务端进行连接通信,
    • cat-core: 核心处理组件,负责具体的与客户端通信服务,解析数据、输出报告
    • cat-consumer : 消费处理组件,负责实际的监控数据分析,处理工作
    • cat-hadoop : HDFS存储组件

1. 下载项目

  • 从github上clone项目下来
  • 使用idea 加载项目,添加依赖
    CAT 服务端搭建
  • 打包项目

clean install -Dmaven.test.skip=true

  • 找到我们要的war包
    CAT 服务端搭建

2. 配置cat数据库

  • 在mysql下建cat数据库
  • 编码格式选择utf8mb4(文档要求)
  • 将以下sql文件导入cat数据库执行
    CAT 服务端搭建

3. 配置CAT的配置文件目录

  • 配置文件所在目录要和tomact所在的盘符一致,比如我都是F盘

\data\appdatas\cat

\data\applogs\cat

  • 在data\appdatas\cat目录下添加client.xml文件
  • 说明
    • 此配置文件的作用是所有的客户端都需要一个地址指向CAT的服务端
    • 此文件可以通过运维统一进行部署和维护,比如使用puppet等运维工具
    • 不同环境这份文件不一样,比如区分prod环境以及test环境,在美团点评内部一共是2套环境的CAT,一份是生产环境,一份是测试环境
    • 注意:当路由错误,且该文件夹下存在client_cache.xml,请删除client_cache.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></password>  <!-- 请替换为真实数据库密码  -->
			<connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
		</properties>
	</data-source>
</data-sources>
  • 在之前看的文档里说有三个xml文件,都在之前的script文件夹里面,但是我在clone的项目里面并没有看到。。。而且新的官方文档里面好像也只要添加如上这两个文件,并都是手动添加的,没有模板,可能是被删除了吧。

4. tomact配置

  • 在tomact 的webapps目录下新增cat目录,并将war包拷至该目录,改名字为cat.war
    • 我启动时候不知道为什么不能识别,我自己解压出来就可以了
  • 在tomact的server.xml配置文件下添加contextPath
    CAT 服务端搭建* 修改中文乱码问题
<Connector port="8080" protocol="HTTP/1.1"
           URIEncoding="utf-8"    connectionTimeout="20000"
               redirectPort="8443" />
  • 官方文档里说还要调整启动参数,修改 catalina.sh文件,我也没弄

5. 启动项目

  • 打开控制台的URL,http://127.0.0.1:8080/cat/s/config?op=routerConfigUpdate

    • 默认用户名:admin 默认密码:admin。CAT本身无登录和权限校验功能,请按需定制
  • 本机路由
    CAT 服务端搭建

  • 服务端配置 (http://127.0.0.1:8080/cat/s/config?op=serverConfigUpdate)

  • 说明:这个只需要更新一次,配置是保存在mysql的数据库里面。

  • CAT节点的不同职责(抄的,暂时也不是很清楚)

    • 控制台 - 提供给业务人员进行数据查看【默认所有的cat节点都可以作为控制台,不可配置】
    • 消费机 - 实时接收业务数据,实时处理,提供实时分析报表【默认所有的cat节点都可以作为消费机,不可配置】
    • 告警端 - 启动告警线程,进行规则匹配,发送告警(目前仅支持单点部署)【可以配置】
    • 任务机 - 做一些离线的任务,合并天、周、月等报表 【可以配置】
  • 如下的直接抄进去就好了

<?xml version="1.0" encoding="utf-8"?>
<server-config>
   <server id="default">
      <properties>
         <property name="local-mode" value="false"/>
         <property name="job-machine" value="false"/>
         <property name="send-machine" value="false"/>
         <property name="alarm-machine" value="false"/>
         <property name="hdfs-enabled" value="false"/>
         <property name="remote-servers" value="127.0.0.1:8080"/>
      </properties>
      <storage  local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
        <hdfs id="logview" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="logview"/>
        <hdfs id="dump" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="dump"/>
        <hdfs id="remote" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="remote"/>
      </storage>
      <consumer>
         <long-config default-url-threshold="1000" default-sql-threshold="100" default-service-threshold="50">
            <domain name="cat" url-threshold="500" sql-threshold="500"/>
            <domain name="OpenPlatformWeb" url-threshold="100" sql-threshold="500"/>
         </long-config>
      </consumer>
   </server>
   <server id="127.0.0.1"> <!-- 本机模式这个IP替换为cat拿到的内网IP,此IP是看transaction报表下cat的自己上报的IP,用127.0.0.1是没用的。 -->
      <properties>
         <property name="job-machine" value="true"/>
         <property name="alarm-machine" value="true"/>
         <property name="send-machine" value="true"/>
      </properties>
   </server>
</server-config>

CAT 服务端搭建

结束

  • 简单的搭起来了服务端,怎么用还是一脸懵逼,先到这里权当记录