Cat入门

个人专题目录


Dianping CAT 安装说明文档

CAT基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。

CAT支持的监控消息类型包括:

  • Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
  • Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
  • Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
  • Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
  • Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息

消息树

CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric和Trace信息。

完整的消息树

Alt text

可视化消息树


Alt text

分布式消息树【一台机器调用另外一台机器】

Alt text

Requirements

  • Linux 2.6以及之上(2.6内核才可以支持epoll),Mac以及Windows环境可以作为开发环境
  • Java 6,7,8
  • Maven 3.2.3+
  • MySQL 5.6

我司的环境配置如下

Distributor ID: CentOS
Description:    CentOS release 6.5 (Final)
Release:    6.5
Codename:   Final

Server version: Apache Tomcat/8.0.30
Server built:   Dec 1 2015 22:30:46 UTC
Server number:  8.0.30.0
OS Name:        Linux
OS Version:     2.6.32-431.el6.x86_64
Architecture:   amd64
JVM Version:    1.8.0_111-b14
JVM Vendor:     Oracle Corporation

Maven 3.3.3

Mysql 5.6

Quick Started

1、在CAT目录下,用maven构建项目
    mvn clean install -DskipTests
    
    如果下载有问题,可以尝试翻墙后下载,可以 git clone git@github.com:dianping/cat.git mvn-repo 下载到本地,这个分支是cat编译需要的依赖的一些jar ,将这些jar放入本地的maven仓库文件夹中。
2、配置CAT的环境
mvn cat:install

Note:

  • Linux\Mac 需要对/data/appdatas/cat和/data/applogs/cat有读写权限
  • Windows 则是对系统运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限,如果cat服务运行在e盘的tomcat中,则需要对e:/data/appdatas/cat和e:/data/applogs/cat有读写权限
  •   此步骤是配置一些cat启动需要的基本数据库配置
    
3、(Optional)如果安装了hadoop集群,需到/data/appdatas/cat/server.xml中配置对应hadoop信息。将localmode设置为false,默认情况下,CAT在开发模式(localmode=true)下工作。
4、启动的cat单机版本基本步骤
5、遇到jar不能下载的情况
  • cat jar在cat的mvn-repo分支下,可以download到本地,在copy至本地的仓库目录
  • git clone https://github.com/dianping/cat.git
  • cd cat
  • git checkout mvn-repo
  • cp -R * ~/.m2/repository
6、导入eclipse发现找不到类
  • 请先执行mvn eclipse:eclipse 会自动生成相关的类文件
  • 作为普通项目导入eclipse,不要用作为maven项目导入eclipse

附录:

系统要求

1. 操作系统及硬件环境

监听端:

  • 根据业务系统需求确定

服务端:

  • 内存 4G 以上
  • 硬盘 100G 以上
  • 操作系统 Windows或Linux操作系统(建议选用Linux操作系统)

2. 运行环境

  • Java 7 以上
  • Web 应用服务器,如:Apache Tomcat、JBoss Application Server、WebSphere Application Server、WebLogic Application Server(可选项,内置Netty应用服务器)
  • MySQL 数据库
  • Maven 3 以上(只编译和安装时需要)

注意:安装时需要拥有计算机管理员权限。

3. 网络环境

要求连接到互联网或通过代理上网。

安装包文件清单

  • [Java JDK]

  • [Apache Tomcat]

  • [MySQL]

  • [Maven]

  • [dianping CAT]

  • Cat source code

安装操作

1、 编译源码,构建war包

  • 前提条件
  1. 已安装、配置JDK;
  2. 已安装、配置MAVEN;
  3. 已下载CAT源码;
  • 操作步骤
  1. 进入监控系统源码的cat目录

    cd /source/cat

  2. 显示确认目录结构

    dir

  3. 运行 MAVEN 打包安装命令

    mvn clean install -DskipTests

  4. 执行完成后,

  • 编译构造好的 war 安装到 Maven 仓库中。

2、自动创建库表、配置文件

  • 前提条件
  1. CAT 安装包已构建
  2. /data/appdatas/cat/ 目录有读写权限
  • 操作步骤
  1. 运行 CAT 安装插件命令

    maven cat:install

  2. 按提示输入数据库配置参数

    数据库配置
  3. 执行完成后,

  • 数据库中创建cat表空间,并创建所有表结构;

  • 在/data/appdatas/cat/目录中,生成三个配置文件:client.xml、server.xml、datasources.xml(windows系统中,/data目录与源码目录在一个系统盘)

  1. 补充说明

    此部分操作,可手工完成,安装MySQL好数据库后,

    • 登录MySQL,创建cat表空间

      create database cat

    • 执行监控系统源码/source/cat/script/Cat.sql脚本完成表结构的创建

    source /source/cat/script/Cat.sql

    • 拷贝监控系统源码/source/cat/script/目录下的client.xml、server.xml、datasources.xml到/data/appdatas/cat/目录中

    cp /source/cat/script/*.xml /data/appdatas/cat/

3、修改监控系统CAT服务配置

安装创建的配置信息都是默认值,需要按实际情况修改,整个系统才可正常运行。

几项假设

  • cat.war 包部署在10.8.40.26、10.8.40.27、10.8.40.28三台机器上,10.8.40.26为三台机器中的主服务器,TCP端口只能局域网内访问;

  • web应用服务器采用 Tomcat 8;

  • 数据库采用 MySQL 5.6 ,安装在10.8.40.147上;

  • 暂不启用HDFS存储服务;

  • 暂不启用LDAP服务;

  • 前提条件

  1. CAT 安装包已构建
  2. 数据库和表结构已创建
  3. /data/appdatas/cat/ 目录下的配置文件已生成
  • 操作步骤
  1. 修改客户端配置文件

打开/data/appdatas/cat/client.xml客户端配置文件,

<config mode="client"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:noNamespaceSchemaLocation="config.xsd">
    <servers>
        <server ip="10.8.40.26" port="2280" http-port="8080" />
        <server ip="10.8.40.27" port="2280" http-port="8080" />
        <server ip="10.8.40.28" port="2280" http-port="8080" />
    </servers>
</config>

配置说明:

  • mode : 定义配置模式,固定值为client;--暂未使用
  • servers : 定义多个服务端信息;
  • server : 定义某个服务端信息;
  • ip : 配置服务端(cat-home)对外IP地址
  • port : 配置服务端(cat-home)对外TCP协议开启端口,固定值为2280;
  • http-port : 配置服务端(cat-home)对外HTTP协议开启端口, 如:tomcat默认是8080端口,若未指定,默认为8080端口;
  1. 修改数据库配置

打开/data/appdatas/cat/datasources.xml数据库配置文件,

<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://10.8.40.147:3306/cat]]></url>
            <user>root</user>
            <password>mysql</password>
            <connectionProperties>
                <![CDATA[useUnicode=true&autoReconnect=true]]>
            </connectionProperties>
        </properties>
    </data-source> 
    <data-source id="app">
        <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://10.8.40.147:3306/cat]]></url>
            <user>root</user>
            <password>mysql</password>
            <connectionProperties>
                <![CDATA[useUnicode=true&autoReconnect=true]]>
            </connectionProperties>
        </properties>
    </data-source>
</data-sources>

配置说明:

  • 生成配置文件时,输入的数据库连接信息已写入此文件,如不换数据库,不用做任何修改
  • 主要修改项为:url(数据库连接地址)、user(数据库用户名)、password(数据用户登录密码)
  1. 修改服务端服务配置

打开/data/appdatas/cat/server.xml服务端服务配置文件,

<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="true">
    <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.8.40.31/user/cat" base-dir="logview"/>
        <hdfs id="dump" max-size="128M" server-uri="hdfs://10.8.40.32/user/cat" base-dir="dump"/>
        <hdfs id="remote" max-size="128M" server-uri="hdfs://10.8.40.33/user/cat" base-dir="remote"/>
    </storage>
    <console default-domain="Cat" show-cat-domain="true">
        <remote-servers>10.8.40.26:8080,10.8.40.27:8080,10.8.40.28:8080</remote-servers>
    </console>
    <ldap ldapUrl="ldap://10.8.40.21:389/DC=dianpingoa,DC=com"/>
</config>

配置说明:

  • local-mode : 定义服务是否为本地模式(开发模式),在生产环境时,设置为false,启动远程监听模式。默认为 false;
  • hdfs-machine : 定义是否启用HDFS存储方式,默认为 false;
  • job-machine : 定义当前服务是否为报告工作机(开启生成汇总报告和统计报告的任务,只需要一台服务机开启此功能),默认为 false;
  • alert-machine : 定义当前服务是否为报警机(开启各类报警监听,只需要一台服务机开启此功能),默认为 false;
  • storage : 定义数据存储配置信息
  • local-report-storage-time : 定义本地报告存放时长,单位为(天)
  • local-logivew-storage-time : 定义本地日志存放时长,单位为(天)
  • local-base-dir : 定义本地数据存储目录
  • hdfs : 定义HDFS配置信息,便于直接登录系统
  • server-uri : 定义HDFS服务地址
  • console : 定义服务控制台信息
  • remote-servers : 定义HTTP服务列表,(远程监听端同步更新服务端信息即取此值)
  • ldap : 定义LDAP配置信息(这个可以忽略)
  • ldapUrl : 定义LDAP服务地址(这个可以忽略)
  1. 发布启动 cat-home 服务

  2. 拷贝监控系统源码/source/cat/cat-home/target/目录下的cat-alpha-1.3.3.war到web应用服务器的发布目录(如:TOMCAT_HOME/webapps/),并修改war包名称为cat.war

`cp /source/cat/cat-home/cat-alpha-1.4.0.war /usr/local/tomcat7/webapps/cat.war`
  1. 启动应用服务器
cd /usr/local/tomcat8/bin/
./startup.sh
  1. 登入 cat-home 系统,修改路由配置

    打开浏览器,输入http://10.8.40.26:8080/cat/

    cat-route.jpg

    选择 配置-->全局警告配置-->客户端路由,或者在浏览器地址栏中直接输入http:/10.8.40.26:8080/cat/s/config?op=routerConfigUpdate,打开客户端路由配置界面。

    • 把backup-server设置为当前服务器对外IP地址,端口固定为2280;
    • default-server定义可跳转的路由地址,可以设置多个。default-server的id属性配置可路由的cat-home服务IP地址,端口固定为2280;若需要禁用路由地址,可把enable设置为false。
    • 点击“提交”按钮,保存修改的路由配置
  2. 复制配置到27、28两机器

* 拷贝 10.8.40.26机器/data/appdatas/cat/目录中client.xml、server.xml、datasources.xml三个配置文件到27、28两机器相同目录中

  • 修改server.xml配置中的 job-machine 和 alert-machine属性,都设置为false,禁用生成报告和报警功能,只开启监听功能
  • 启动27、28上的Tomcat,开启cat服务,完成服务端的配置及启动

若服务端只分配一台服务器,按10.8.40.26完成安装配置即可
CAT 配置文件加载说明
===

背景说明

CAT监控系统由多个组件组成

cat 组件关系图

  • cat-home.war : 服务端组件,负责收集监控信息,分析处理生成报告、作出警告
  • cat-client.jar : 客户端组件,负责与服务端进行连接通信,
  • cat-core.jar : 核心处理组件,负责具体的与客户端通信服务,解析数据、输出报告
  • cat-consumer.jar : 消费处理组件,负责实际的监控数据分析,处理工作
  • cat-hadoop.jar : HDFS存储组件

配置文件清单说明

cat-home.war 外部配置文件

cat-home.war 有三个外部配置文件,分别是:

  • /data/appdatas/cat/client.xml,

  • 配置连接(其它)服务端的信息,如IP地址、tcp端口、http端口

  • /data/appdatas/cat/server.xml,

  • 定义服务端启用服务;

  • 数据存储方式、策略及存储配置信息;

  • 服务端服务群信息(如服务器的IP地址、tcp端口、http端口、服务的权重、服务配置状态)

  • /data/appdatas/cat/datasources.xml,

  • 配置服务端连接数据库的信息

cat-home.war 内置配置文件

  • cat-home.war!/WEB-INF/web.xml

  • web应用默认配置文件

  • cat-home.war!/WEB-INF/classes/META-INF/app.properties

  • 首选的应用特征信息配置文件,默认内容为:app.name=cat

  • cat-home.war!/WEB-INF/classes/META-INF/cat/client.xml

  • 次选的应用特征信息配置文件

  • cat-home.war!/WEB-INF/classes/META-INF/plexus/components.xml

  • plexus类容器加载类定义的配置文件,

配置文件加载流程

cat-home.war配置文件加载

  • Web容器加载web.xml;

    cat-home.war!/WEB-INF/web.xml

  • plexus类容器加载components.xml;

    cat-home.war!/WEB-INF/classes/META-INF/plexus/components.xml

  • 在CatHomeModule类中,ServerConfigManager加载server.xml

    /data/appdatas/cat/server.xml

运行期内同步服务端的配置信息

在ChannelManager类中,

  • 每10秒钟会检测一次服务端对外服务配置信息是否变化(获取服务端的路由信息);
  • 若配置信息有变化,重新创建与服务端的通信通道
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容