专栏首页搜云库技术团队搭建大众点评CAT实时应用监控平台

搭建大众点评CAT实时应用监控平台

CAT 简介

CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。

CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是48分钟40秒,基本上看到48分钟38秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。

Cat 优势

实时处理:信息的价值会随时间锐减,尤其是事故处理过程中

全量数据:全量采集指标数据,便于深度分析故障案例

高可用:故障的还原与问题定位,需要高可用监控来支撑

故障容忍:故障不影响业务正常运转、对业务透明

高吞吐:海量监控数据的收集,需要高吞吐能力做保证

可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统

关于CAT的更多介绍可移步到CAT官网进行查阅。

https://github.com/dianping/cat

1 环境清单

CentOS7 Java8 Maven3.5 MySQL5.7 CAT2.0.0 Tomcat7.0

2 安装 CAT

下载 CAT安装包:

$ wget -O cat-home-2.0.0.war http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/2.0.0/cat-home-2.0.0.war

cat-home-2.0.0.war部署到 tomcat并重命名为 cat.war

$ mv cat-home-2.0.0.war tomcat-7.0.90/webapps/cat.war

2.1 配置 CAT

在Linux系统安装时, CAT应用要求对 /data/appdatas/cat/data/applogs/cat路径有读写权限。

$ mkdir -p /data/appdatas/cat && mkdir -p /data/applogs/cat

CAT服务端应用会对这两个目录进行读写操作,因此需要首先创建这两个目录。并且应确保启动 CAT应用的用户对这两个目录有读写权限。

下载 CAT的源码包:

$ wget -O cat-2.0.0.tar.gz https://codeload.github.com/dianping/cat/tar.gz/v2.0.0

解压缩:

$ tar zxvf cat-2.0.0.tar.gz

解压缩完成后得到 cat-2.0.0目录。其中 cat-2.0.0/script目录中存放的是 CAT客户端和服务端安装所需的一些配置文件:

client.xml

所有的CAT客户端都需要配置这个配置文件。它用于配置CAT部署的服务端信息。只有客户端配置了这个配置文件,客户端才能正确连接到CAT服务器端。该文件的部署路径是/data/appdatas/cat(该部署路径不能更改,并且启动客户端的程序的用户需要对此目录有读写权限)。 特殊的,部署CAT应用的服务端同时也是一个客户端,也需要配置该配置文件。

server.xml

CAT服务端的配置文件。即安装CAT应用的服务器才需要配置。该文件的部署路径是/data/appdatas/cat(该部署路径不能更改,并且启动CAT应用的用户需要对此目录有读写权限)。

datasources.xml

CAT服务端的配置文件。即安装CAT应用的服务器才需要配置。该配置文件用于配置CAT链接MySQL数据库的信息。该文件的部署路径是/data/appdatas/cat(该部署路径不能更改)。

Cat.sql

CAT应用所需的MySQL数据库脚本。需将此脚本导入MySQL数据库中。

cat-2.0.0/script目录中的 client.xmldatasources.xmlserver.xml配置文件复制到目录 /data/appdatas/cat中:

$ cp client.xml server.xml datasources.xml /data/appdatas/cat/

客户端 client.xml的配置内容如下:

<?xml version="1.0" encoding="utf-8"?>
<config mode="client" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="config.xsd">
    <servers>
        <!-- ip:部署CAT应用的服务器IP
             port:CAT服务端接收客户端数据的端口(不允许更改)
             http-port:CAT应用部署到的容器的端口(tomcat的端口)
        -->
        <server ip="10.10.10.121" port="2280" http-port="8080" />
    </servers>
</config>

服务端 server.xml的配置内容如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- local-mode:是否为本地开发模式。建议在开发环境以及生产环境都设置为false
     hdfs-machine:是否启用HDFS存储
     job-machine:是否为报告工作机(开启生成汇总报告和统计报告,只需要一台服务机开启此功能)
     alert-machine:是否为报警机(开启各类报警监听, 只需要一台服务机开启此功能)
-->
<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="false">
    <!-- local-base-dir:本地数据存储目录, 建议不要修改
         local-report-storage-time:本地报告文件存放时长, 单位为(天)
         local-logivew-storage-time:本地日志文件存放时长, 单位为(天)
    -->
    <storage local-base-dir="/data/appdatas/cat/bucket/" local-report-storage-time="7" local-logivew-storage-time="7"/>
    <console default-domain="Cat" show-cat-domain="true">
        <!-- 远程服务端HTTP服务列表, 用于同步更新 -->
        <remote-servers>10.10.10.121:8080</remote-servers>
    </console>
</config>

数据源 datasources.xml的配置内容如下:

<?xml version="1.0" encoding="utf-8"?>
<data-sources>
    <data-source id="cat">
        <maximum-pool-size>8</maximum-pool-size>
        <connection-timeout>3s</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.10.10.121:3306/cat_schema]]></url>
            <!-- 用户名 -->
            <user>root</user>
            <!-- 密码 -->
            <password>123654</password>
            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
        </properties>
    </data-source>
    <data-source id="app">
        <maximum-pool-size>8</maximum-pool-size>
        <connection-timeout>3s</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.10.10.121:3306/cat_schema]]></url>
            <!-- 用户名 -->
            <user>root</user>
            <!-- 密码 -->
            <password>123654</password>
            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
        </properties>
    </data-source>
</data-sources>

创建 cat_schema数据库:

CREATE  DATABASE  IF  NOT  EXISTS cat_schema DEFAULT  CHARSET utf8 COLLATE utf8_general_ci

选择数据库 cat_schema

USE cat_schema

导入 Cat.sqlcat_schema数据库:

SOURCE /home/fanlychie/cat-2.0.0/script/Cat.sql

编辑 tomcat配置文件:

$ vim tomcat-7.0.90/conf/server.xml

找到 Connector的配置行,添加 URIEncoding="utf-8"。如下:

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

2.2 启动 CAT

启动 tomcat

$ ./tomcat-7.0.90/bin/startup.sh

访问:http://10.10.10.121:8080/cat

配置操作需要用户登入系统,每次的登录账户名和密码保持一致即可。如 catadmin/catadmin

2.3 客户端路由设置

依次打开 配置-->全局告警配置-->客户端路由修改 idCAT部署的服务器 ip

3 集群搭建

上面介绍的是 CAT应用的单点模式部署。接下来介绍 CAT的集群模式搭建方式。

3.1 部署概览

IP

角色

10.10.10.121

控制台、告警端、任务机

10.10.10.122

消费机

10.10.10.123

消费机

10.10.10.121作为前端控制台,如果使用了域名,只需将域名解析到此 IP地址。

按以上搭建单点模式的方式,分别在 10.10.10.12110.10.10.12210.10.10.123部署 CAT。部署完成后,先不要启动 tomcat。接下来做集群配置。

3.2 客户端 client.xml配置

10.10.10.12110.10.10.12210.10.10.123client.xml配置一样,具体如下:

<?xml version="1.0" encoding="utf-8"?>
<config mode="client" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="config.xsd">
    <servers>
        <!-- ip:部署CAT应用的服务器IP
             port:CAT服务端接收客户端数据的端口(不允许更改)
             http-port:CAT应用部署到的容器的端口(tomcat的端口)
        -->
        <server ip="10.10.10.121" port="2280" http-port="8080" />
        <server ip="10.10.10.122" port="2280" http-port="8080" />
        <server ip="10.10.10.123" port="2280" http-port="8080" />
    </servers>
</config>

3.3 服务端 server.xml配置

10.10.10.121server.xml配置,具体如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- local-mode:是否为本地开发模式。建议在开发环境以及生产环境都设置为false
     hdfs-machine:是否启用HDFS存储
     job-machine:是否为报告工作机(开启生成汇总报告和统计报告,只需要一台服务机开启此功能)
     alert-machine:是否为报警机(开启各类报警监听, 只需要一台服务机开启此功能)
-->
<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="true">
    <!-- local-base-dir:本地数据存储目录, 建议不要修改
         local-report-storage-time:本地报告文件存放时长, 单位为(天)
         local-logivew-storage-time:本地日志文件存放时长, 单位为(天)
    -->
    <storage local-base-dir="/data/appdatas/cat/bucket/" local-report-storage-time="7" local-logivew-storage-time="7"/>
    <console default-domain="Cat" show-cat-domain="true">
        <!-- 远程服务端HTTP服务列表, 用于同步更新 -->
        <remote-servers>10.10.10.121:8080,10.10.10.122:8080,10.10.10.123:8080</remote-servers>
    </console>
</config>

10.10.10.12210.10.10.123server.xml配置一样,具体如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- local-mode:是否为本地开发模式。建议在开发环境以及生产环境都设置为false
     hdfs-machine:是否启用HDFS存储
     job-machine:是否为报告工作机(开启生成汇总报告和统计报告,只需要一台服务机开启此功能)
     alert-machine:是否为报警机(开启各类报警监听, 只需要一台服务机开启此功能)
-->
<config local-mode="false" hdfs-machine="false" job-machine="false" alert-machine="false">
    <!-- local-base-dir:本地数据存储目录, 建议不要修改
         local-report-storage-time:本地报告文件存放时长, 单位为(天)
         local-logivew-storage-time:本地日志文件存放时长, 单位为(天)
    -->
    <storage local-base-dir="/data/appdatas/cat/bucket/" local-report-storage-time="7" local-logivew-storage-time="7"/>
    <console default-domain="Cat" show-cat-domain="true">
        <!-- 远程服务端HTTP服务列表, 用于同步更新 -->
        <remote-servers>10.10.10.121:8080,10.10.10.122:8080,10.10.10.123:8080</remote-servers>
    </console>
</config>

服务端 server.xml的配置主要是 job-machinealert-machine属性值配置的不同。

3.4 启动 CAT

分别启动 10.10.10.12110.10.10.12210.10.10.123tomcat

$ ./tomcat-7.0.90/bin/startup.sh

10.10.10.121作为控制台服务,只需访问:http://10.10.10.121:8080/cat

3.5 客户端路由设置

10.10.10.121作为控制台服务,只需配置这台即可。

依次打开 配置-->全局告警配置-->客户端路由修改 idCAT部署的服务器 ip

其中 10.10.10.121作为备份,正常情况下不作为消费机(即不起消费数据的作用),仅当 CAT集群中的其它节点(如这里的 10.10.10.12210.10.10.123节点)都挂掉之后才会对数据进行消费。

该配置会自动同步到 CAT集群中的其它节点(如这里的 10.10.10.12210.10.10.123节点)。

配置完成后,重启 10.10.10.121服务器的 CAT应用容器(即重启 tomcat)。

出处:https://dwz.cn/SfRizfVj

往期精彩文章

携程:日处理20亿数据,实时用户行为架构实践

应用消息中间件设计可以解决哪些实际问题?

面试题:70道Spring面试题和答案

有赞服务化架构演进

理解大型分布式架构的演进历史、技术原理、最佳实践

Oracle 推出开源轻量级 Java 微服务框架 Helidon

小型系统如何“微服务”开发

大数据推荐系统实时架构和离线架构

ElasticSearch 优化会员列表搜索

RabbitMQ 延迟队列实现定时任务

Dubbo 整合 Pinpoint 做分布式服务请求跟踪

本文分享自微信公众号 - 搜云库技术团队(souyunku),作者:作者:範宗雲

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何实现一个TCC分布式事务框架的一点思考

    一个TCC事务框架需要解决的当然是分布式事务的管理。关于TCC事务机制的介绍,可以参考TCC事务机制简介。http://www.bytesoft.org/tcc...

    搜云库技术团队
  • 携程:日处理20亿数据,实时用户行为架构实践

    携程实时用户行为服务作为基础服务,目前普遍应用在多个场景中,比如猜你喜欢(携程的推荐系统)、动态广告、用户画像、浏览历史等等。

    搜云库技术团队
  • 软件做异常测试?必知的22个测试点总结!

    异常测试,是检测系统对异常情况的处理。异常测试覆盖硬件或软件异常时的处理。测试方应通过人为制造错误情况测试系统对错误操作、错误报文的反应,检查程序中的屏幕或页面...

    搜云库技术团队
  • 开源实时监控系统CAT 3.0发布:多语言客户端及多项性能提升

    CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统。美团点评基础架构部希望在基础存...

    美团技术团队
  • mongoDB 比较运算符

    Leshami
  • @RequestParam 注解(3)

    桑鱼
  • Linux基金会企业开源指南系列之四 - 度量开源项目的成功要素(下)

    对于开源项目的跟踪指标和衡量成功的要素有很多种。项目的健康度虽然并非是唯一跟踪的,但是确实的非常重要。那么问题来了,围绕开源项目有着太多纬度的数据了,该如何下手...

    开源社
  • pandas使用

    用户2398817
  • C++奇淫巧技之SFINAE

    SFINAE 技术,即匹配失败不是错误,英文Substitution Failure Is Not An Error,其作用是当我们在进行模板特化的时候,会去选...

    zhuanxu
  • 数据可视化的优秀入门书籍有哪些?

    问题:数据可视化的优秀入门书籍有哪些? 问题描述:作为一个深爱着并学习着新媒体设计的学生,我非常感兴趣数据可视化相关知识。我学习绘画设计十几年,对视觉信息敏感,...

    CSDN技术头条

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动