CAT搭建

详细可参考https://github.com/dianping/cat,本文仅摘取我们搭建时需要关注的部分

1、介绍

cat核心组件有5个

  • cat-client: 客户端,上报监控数据
  • cat-consumer: 服务端,收集监控数据进行统计分析,构建丰富的统计报表
  • cat-alarm: 实时告警,提供报表指标的监控告警
  • cat-hadoop: 数据存储,logview 存储至 Hdfs
  • cat-home: 管理端,报表展示、配置管理等

client为各个业务系统上报监控数据使用,其余4个统一部署在同一个jvm里,通过配置文件来开启对应功能,使用到的mysql只有一个,数据存储可用hdfs也可用磁盘。

2、搭建过程

2.1、目录权限

要求/data/目录能进行读写操作,默认的数据文件和配置文件会写到此目录。

2.2、配置文件

配置/data/appdatas/cat/client.xml,内容如下

<?xml version="1.0" encoding="utf-8"?> <config mode="client"> <servers> <server ip="10.1.1.1" port="2280" http-port="8080"/> <server ip="10.1.1.2" port="2280" http-port="8080"/> <server ip="10.1.1.3" port="2280" http-port="8080"/> </servers> </config>

2.3、初始化数据库

建表脚本:CatApplication.sql

2.4、配置数据库连接文件:/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>root</password> <!-- 请替换为真实数据库密码 --> <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties> </properties> </data-source> </data-sources>

需要替换jdbc.url,jdbc.user,jdbc.password这三个值。

2.5、获取war包

可以从git上获取源码自己打包,也可以直接下载:http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war,注意直接下载的为jdk8编译的,运行时也需要jdk8

2.6、部署到tomcat

  • 将上步的war包重命名为cat.war,部署到tomcat的webapps下,启动tomcat。
  • 浏览器打开:http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate
  • 输入默认用户名:admin 默认密码:admin。
  • 更新配置示例如下,更新之后重启此台tomcat,然后启动其他机器的tomcat

<?xml version="1.0" encoding="utf-8"?> <router-config backup-server="10.1.1.1" backup-server-port="2280"> <default-server id="10.1.1.1" weight="1.0" port="2280" enable="false"/> <default-server id="10.1.1.2" weight="1.0" port="2280" enable="true"/> <default-server id="10.1.1.3" weight="1.0" port="2280" enable="true"/> <network-policy id="default" title="default" block="false" server-group="default_group"> </network-policy> <server-group id="default_group" title="default-group"> <group-server id="10.1.1.2"/> <group-server id="10.1.1.3"/> </server-group> <domain id="cat"> <group id="default"> <server id="10.1.1.2" port="2280" weight="1.0"/> <server id="10.1.1.3" port="2280" weight="1.0"/> </group> </domain> </router-config>

说明:

  1. 注意10.1.1.1,10.1.1.2,10.1.1.3这几个IP需要替换为自己实际的IP,修改路由配置仅仅需要修改一次即可,这部分数据会存入mysql中。
  2. enable=false表示机器不可用,10.1.1.1机器不做为消费机集群。所有客户端上报的消息都由于10.1.1.2,10.1.1.3来处理。
  3. 更多服务端机器按需添加Xml配置即可。

2.7、服务端配置

配置链接:http://{ip:port}/cat/s/config?op=serverConfigUpdate

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

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

线上做多集群部署,假设有10.1.1.1,10.1.1.2,10.1.1.3这三台机器

    1. 建议选取一台或多台机器负责角色有控制台、告警端、任务机,例如10.1.1.1。配置域名访问CAT,该域名关联至10.1.1.1
    2. 10.1.1.2,10.1.1.3 负责消费机处理,这样能做到有效隔离,任务机、告警等问题不影响实时数据处理
    3. remote-servers 这个一定要配置正确,端口号为8080,这里面的remote-servers为10.1.1.1:8080,10.1.1.2:8080,10.1.1.3:8080
    4. 完成以上步骤,重启下当前CAT节点

配置的sample如下: id="default"是默认的配置信息,server id="10.1.1.1" 如下的配置是表示10.1.1.1这台服务器的节点配置覆盖default的配置信息,比如下面的job-machine,alarm-machine,send-machine为true。

<?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="10.1.1.1:8080,10.1.1.2:8080,10.1.1.3: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/" base-dir="user/cat/logview"/> <hdfs id="dump" max-size="128M" server-uri="hdfs://10.1.77.86/" base-dir="user/cat/dump"/> <hdfs id="remote" max-size="128M" server-uri="hdfs://10.1.77.86/" base-dir="user/cat/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="10.1.1.1"> <properties> <property name="job-machine" value="true"/> <property name="alarm-machine" value="true"/> <property name="send-machine" value="true"/> </properties> </server> </server-config>

  • 配置说明:

请注意:当一个机器角色更改后,请重启该机器!

server模型:代表一台机器的配置。如果id为default,代表默认配置;如果id为ip,代表该台服务器的配置 * property local-mode : 定义服务是否为本地模式(开发模式),在生产环境时,设置为false,启动远程监听模式。默认为 false; * property hdfs-machine : 定义是否启用HDFS存储方式,默认为 false; * property job-machine : 定义当前服务是否为报告工作机(开启生成汇总报告和统计报告的任务,只需要一台服务机开启此功能),默认为 false; * property alarm-machine : 定义当前服务是否为报警机(开启各类报警监听,只需要一台服务机开启此功能),默认为 false; * property send-machine : 定义当前服务告警是否发送(当时为了解决测试环境开启告警线程,但是最后告警不通知,此配置后续会逐步去除,建议alarm-machine开启为true的时候,这个同步为true) storage模型: 定义数据存储配置信息 * property local-report-storage-time : 定义本地报告存放时长,单位为(天) * property local-logivew-storage-time : 定义本地日志存放时长,单位为(天) * property local-base-dir : 定义本地数据存储目录,此目录为上传到HDFS时所查找的源文件路径 * property hdfs : 定义HDFS配置信息,便于直接登录系统 * property server-uri : 定义HDFS服务地址,支持配置Nameservice * property console : 定义服务控制台信息 * property remote-servers : 定义HTTP服务列表,(远程监听端同步更新服务端信息即取此值) * ldap : 定义LDAP配置信息(这个可以忽略) * ldapUrl : 定义LDAP服务地址(这个可以忽略)

2.8、重启不影响数据可用性(线上环境)

单机模式部署可略过此步骤,线上环境使用建议配置。

  1. 请在tomcat重启之前调用当前tomcat的存储数据的链接 http://${ip}:8080/cat/r/home?op=checkpoint,重启之后数据会恢复。【注意重启时间在每小时的整点10-55分钟之间】
  2. 线上部署时候,建议把此链接调用存放于tomcat的stop脚本中,这样不需要每次手工调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值