• 保姆级cat系统搭建过程


    目录

    动手开始之前说两个点:

    1. jdk 版本

     2. 关于模块部署

    开始动手:

    1. 3个节点均安装jdk8,maven3,tomcat8,git

    2. 设置环境变量:

    3. 代码部署

    4.  cat项目配置文件设置

     5.  启动tomcat,页面内修改相关配置

    6. 登录控制台

    7. 控制台配置设置


    趁着闲下来的功夫,来尝试一下美团的cat系统。

    简单介绍一下,CAT 是美团点评技术团队基于 Java 开发的实时应用监控平台,可提供全面的实时监控告警服务。它的一大优势是:实时,从数据生成到服务端处理结束是秒级别;大部分模块为分钟级统计。

    这么大的一个系统,想要立马就搞懂还是有些难度,官方文档边介绍相关内容边介绍安装步骤,于个人而言操作起来不是很顺畅。遂有此文。来跟着笔者一步步走下去!

    动手开始之前说两个点:

    1. jdk 版本

     ​​​​​​官方文档(想看详细的介绍就点击此连接,其他本文不再赘述)说是服务端建议用jdk7,但在我的虚拟机编译打包的时候碰到了截图中的问题。

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar (attach-javadocs) on project cat-client: MavenReportException: Error while generating Javadoc: 
    [ERROR] Exit code: 1 - javadoc: error - invalid flag: -Xdoclint:none
    [ERROR] 
    [ERROR] Command line was: /usr/java/jdk1.7.0_80/jre/../bin/javadoc @options @packages
    [ERROR] 
    [ERROR] Refer to the generated Javadoc files in '/data/appdatas/cat/cat-client/target/apidocs' dir.
    [ERROR] 
    [ERROR] -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [ERROR] 
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR]   mvn -rf :cat-client

     这个时候换为jdk8就好了。不知道是不是官方文档没有及时更新过来的缘故!(官方文档在一开始建议用jdk7,释放的免编译版本是用jdk8编译的,需要jdk8,感觉应该是后面改用了jdk8。所以我觉得应该从一开始就用jdk8)

     2. 关于模块部署

    自己动手尝试过的同学,或者搜其他部署文档的同学应该可以看出,模块还是挺多的,如果不仔细看官方文档,很容易忽略这段话:

     这句话很关键,点明部署关注cat-home下打出的war包即可。当采用集群部署的时候,控制每台机器角色的入口在跟服务端的控制台页面类似的URL下面,改为当前节点的IP,注意功能的开启和关闭即可。也既是说,不论集群版本、还是单机版本,其实最关键的部署节点就是服务端节点。其他的差不多。

    跟着本文走下去,相信你也能比较顺利的在自己的机器上搭建出来。

    本文部署的是集群版本:

    集群节点节点IP
    服务端172.16.13.111
    节点1 172.16.13.58
    节点2172.16.13.77

    开始动手:

    以下步骤,除非特别声明,否则都是在服务端节点上操作

    1. 3个节点均安装jdk8,maven3tomcat8,git

    1. # tomcat / maven 手动安装,此处不再介绍,文中有具体连接
    2. # 笔者用的是orale jdk8
    3. yum install git java-1.8.0-openjdk.x86_64
    4. # 下载好apache-tomcat 二进制包后, 解压
    5. tar apache-tomcat-8.5.81.tar.gz -C /usr/local/

    1.1 tomcat 配置的修改

    1. # tomcat的修改
    2. # 可以先在控制节点修改,完成之后scp传送到其他节点
    3. # 防止中文出现乱码
    4. sed -i 's#connectionTimeout="20000"#URIEncoding="utf-8" connectionTimeout="20000"#g'\
    5. /usr/local/apache-tomcat-8.5.81/conf/server.xml
    6. # 指定context path
    7. sed -i 's#unpackWARs="true" autoDeploy="true#i\#g'\
    8. /usr/local/apache-tomcat-8.5.81/conf/server.xml

     1.2 mysql 的安装和设置

    mysql 选择其中一个节点,只安装一个即可,并不用所有的节点都安装此服务。

    1. # 把以下配置项放入到my.cnf中,否则可能无法正取识别中文
    2. [client]
    3. character_set_server=utf8mb4
    4. [mysqld]
    5. character_set_server = utf8mb4
    6. max_allowed_packet = 1000M

    这些配置完成后,启动mysql,并且创建一个名叫cat的数据库。

    在clone代码完成之后,需要导入 script/CatApplication.sql。

    2. 设置环境变量:

    1. export CAT_HOME=/data/appdatas/cat/
    2. CATALINA_OPTS="$CATALINA_OPTS -server -DCAT_HOME=$CAT_HOME -Djava.awt.headless=true -Xms25G -Xmx25G -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=10144m -XX:MaxNewSize=10144m -XX:SurvivorRatio=10 -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=13 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:/data/applogs/heap_trace.txt -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/applogs/HeapDumpOnOutOfMemoryError -Djava.util.Arrays.useLegacyMergeSort=true"

    可以放到家目录下的.bash_profile,或者是添加到tomcat的启动脚本bin/startup.sh里。

    3个节点均执行以下操作

    1. mkdir /data
    2. # 如果仅仅是测试环境,并且以root用户执行安装,无需担心写入问题
    3. chmod -R 777 /data/
    4. mkdir /data/appdatas
    5. cd /data/appdatas

    3. 代码部署

    当前我按照的cat github版本是v4.0-RC1,git clone或者迅雷下载压缩包。

    1. # 如果网络问题无法clone,下载压缩包也可
    2. git clone https://github.com/dianping/cat.git
    3. # 注意此处clone完成后,到对应节点执行导入SQL文件
    4. mysql -uroot -Dcat < script/CatApplication.sql
    5. # 打包
    6. mvn clean install -DskipTests
    7. cp cat-home/target/cat-home.war /usr/local/apache-tomcat-8.5.81/webapps/cat.war

    4.  cat项目配置文件设置

    4.1 配置/data/appdatas/cat/client.xml ($CAT_HOME/client.xml)

    注意修改对应的IP

    1. <config mode="client">
    2. <servers>
    3. <server ip="172.16.13.111" port="2280" http-port="8080"/>
    4. <server ip="172.16.13.58" port="2280" http-port="8080"/>
    5. <server ip="172.16.13.77" port="2280" http-port="8080"/>
    6. servers>
    7. config>

    4.2 配置/data/appdatas/cat/datasources.xml($CAT_HOME/datasources.xml)

    注意修改对应的IP、用户、密码

    4.1、4.2 两步骤配置相同,修改完直接同步到其他两台机器即可,这部分都是项目本地的配置

    1. <data-sources>
    2. <data-source id="cat">
    3. <maximum-pool-size>3maximum-pool-size>
    4. <connection-timeout>1sconnection-timeout>
    5. <idle-timeout>10midle-timeout>
    6. <statement-cache-size>1000statement-cache-size>
    7. <properties>
    8. <driver>com.mysql.jdbc.Driverdriver>
    9. <url>url>
    10. <user>rootuser>
    11. <password>xxxxxpassword>
    12. <connectionProperties>connectionProperties>
    13. properties>
    14. data-source>
    15. data-sources>

     5.  启动tomcat,页面内修改相关配置

    1. # 服务端节点再次执行以下两个命令
    2. #### 命令开始
    3. export CAT_HOME=/data/appdatas/cat/
    4. CATALINA_OPTS="$CATALINA_OPTS -server -DCAT_HOME=$CAT_HOME -Djava.awt.headless=true -Xms25G -Xmx25G -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=10144m -XX:MaxNewSize=10144m -XX:SurvivorRatio=10 -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=13 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:/data/applogs/heap_trace.txt -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/applogs/HeapDumpOnOutOfMemoryError -Djava.util.Arrays.useLegacyMergeSort=true"
    5. #### 命令结束
    6. cd /usr/local/apache-tomcat-8.5.81/
    7. sh bin/startup.sh && tailf logs/catalina.out
    8. # 注意检查tomcat是否有报错

    6. 登录控制台

     打开页面,注意修改IP地址对应IP,默认用户名:admin,默认密码:admin。

    7. 控制台配置设置

    以下两个配置均需在网页里修改,修改完成之后,需要重启对应的节点来使之生效,配置顺序无要求。

    7.1 路由配置

    配置地址:http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate

    只需要在服务端修改一次即可,这部分数据会存入mysql中

    1. <router-config backup-server="172.16.13.111" backup-server-port="2280">
    2. <default-server id="172.16.13.111" weight="1.0" port="2280" enable="false"/>
    3. <default-server id="172.16.13.58" weight="1.0" port="2280" enable="true"/>
    4. <default-server id="172.16.13.77" weight="1.0" port="2280" enable="true"/>
    5. <network-policy id="default" title="default" block="false" server-group="default_group">
    6. network-policy>
    7. <server-group id="default_group" title="default-group">
    8. <group-server id="172.16.13.58"/>
    9. <group-server id="172.16.13.77"/>
    10. server-group>
    11. <domain id="cat">
    12. <group id="default">
    13. <server id="172.16.13.58" port="2280" weight="1.0"/>
    14. <server id="172.16.13.77" port="2280" weight="1.0"/>
    15. group>
    16. domain>
    17. router-config>

    7.2.  服务端配置

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

    1. <server-config>
    2. <server id="default">
    3. <properties>
    4. <property name="local-mode" value="false"/>
    5. <property name="job-machine" value="false"/>
    6. <property name="send-machine" value="false"/>
    7. <property name="alarm-machine" value="false"/>
    8. <property name="hdfs-enabled" value="false"/>
    9. <property name="remote-servers" value="172.16.13.58:8080,172.16.13.77:8080,172.16.13.111:8080"/>
    10. properties>
    11. <storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
    12. storage>
    13. <consumer>
    14. <long-config default-url-threshold="1000" default-sql-threshold="100" default-service-threshold="50">
    15. <domain name="cat" url-threshold="500" sql-threshold="500"/>
    16. <domain name="OpenPlatformWeb" url-threshold="100" sql-threshold="500"/>
    17. long-config>
    18. consumer>
    19. server>
    20. <server id="172.16.13.111">
    21. <properties>
    22. <property name="job-machine" value="true"/>
    23. <property name="alarm-machine" value="true"/>
    24. <property name="send-machine" value="true"/>
    25. properties>
    26. server>
    27. server-config>

    接下来,我们要试试用python来跑一遍,看看数据采集和大盘展示

  • 相关阅读:
    单商户商城系统功能拆解29—营销中心—会员折扣
    SAP PP cs62 提示 输入更改号 - BOM 有历史需求
    uniapp 测试 app 到安卓模拟器部署方法以及常见错误解决 无废话
    【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter16-脚本控制
    Kotlin中的集合函数
    2022-9-17 第七小组 学习日记 (day72)SSM架构
    PowerBI入门指南
    除了labview你还知道哪些工业控制领域的软件?
    漫谈万维网的华丽史诗:Web3.0是技术金矿 还是郁金香泡沫?
    SSH连接服务器经常被断开解决方法
  • 原文地址:https://blog.csdn.net/sunican/article/details/126124645