zoukankan      html  css  js  c++  java
  • cat监控平台环境搭建 专题

    项目地址:https://github.com/dianping/cat

    编译步骤:

    这个项目比较另类,把编译需要的jar包,单独放在git分支mvn-repo里了,而且官方文档里给了一个错误的命令提示:

     git git@github.com:dianping/cat.git mvn-repo

    当你直接把这条命令贴到terminal里执行时,会提示命令无效,正确的姿势如下:

    1、先安装jdk 1.7或Jdk1.8【现在已经支持jdk1.8了】

    这点很重要,cat项目的开发时间比较早,当时估计jdk8还没有,在1.8下编译虽然能成功,但是最后运行时会报错。

    注:对于已经安装了jdk1.8的mac,可以参考Mac下同时安装多个版本的JDK ,如果弄多版本jdk切换,不要在PATH变量里加$JAVA_HOME/bin,否则alias切换只切换了JAVA_HOME,但是PATH里的值不会变。

    2、将分支mvn-repo下的jar包复制到本机maven仓库

    1、git clone https://github.com/dianping/cat.git
    2、cd cat
    3、git checkout mvn-repo
    4cp -R * ~/.m2/repository
    5、git checkout master
    6、mvn clean install -DskipTests


    温馨提示:
    3.0 移除了cat的maven插件
    需要先切换到2.0 分支, 执行mvn cat:install 后再切回来,即可完成依赖包install

    然后再编译就可以了,再次提醒:如果安装了多个版本的jdk,编译前先将jdk版本切换到jdk 1.7(包括编译成功后,运行时也要jdk 1.7环境) 

    部署步骤:

    mvn cat:install

    安装过程中,会提示输入mysql的连接地址,输入格式严格按 jdbc:mysql://127.0.0.1:3306 这种格式来,后面不要加一些额外参数,然后输入用户名、密码(该用户要有创建database的权限),之后会自动在mysql中创建cat数据库,然后创建一堆表。

    1、cd cat-home
    2、mvn jetty:run  //启动cat服务

    如果启动过程无错,

    成功后,在浏览器打开http://localhost:2281/cat 就可以看到cat监控界面了 

    或者在cat目录下输入 mvn eclipse:clean eclipse:eclipse 然后将项目导入到eclipse中,运行cat-home项目里得‘com.dianping.cat.TestServer’来启动CAT。

      



    实时--》全部--》主机--》具体的Transaction


    windows下的注意事项:

    Windows 则是对系统运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限 //这个地方要特别说明一下,如有cat的源文件在E盘,则相关配置文件就应该放在e:/data/appdatas/cat/下面

    1、Web.xml中新增filter

    注:如果项目是对外不提供URL访问,比如GroupService,仅仅提供Pigeon服务,则不需要。

    Filter放在url-rewrite-filter 之后的第一个,如果不是会导致URL的个数无限多,比如search/1/2,search/2/3等等,无法监控,后端存储压力也变大。

    xml:

        <filter>
            <filter-name>cat-filter</filter-name>
            <filter-class>com.dianping.cat.servlet.CatFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>cat-filter</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
        </filter-mapping>

    2.Pom.xml中更新jar包(点评内部公共组件,外部公司可以忽略)

           <dependency>
                <groupId>com.dianping.cat</groupId>
                <artifactId>cat-core</artifactId>   
                <version>1.2.7</version>
           </dependency>

    cat-client的最新版本:

            <dependency>
                <groupId>com.dianping.cat</groupId>
                <artifactId>cat-client</artifactId>
                <version>1.4.0</version>
            </dependency>


    3、配置domain (cat-core 1.1.3之后版本,优先读取A配置)

    A) 在资源文件中新建app.properties文件

    在resources资源文件META-INF下,注意是src/main/resources/META-INF/文件夹, 而不是webapps下的那个META-INF,添加app.properties,加上domain配置,如:app.name=tuangou-web

    B) 在资源文件中新建client.xml文件

    在resources资源文件META-INF下,新建cat文件夹,注意是src/main/resources/META-INF/cat/client.xml文件, 而不是webapps下的那个META-INF,domain id表示项目名称此处为CMDB申请的名字,比如

         <config mode="client">
             <domain id="tuangou-web"/>
         </config>

    4./data/appdatas/cat/目录下,新建一个client.xml文件(线上环境是OP配置)

    如果系统是windows环境,则在eclipse运行的盘,比如D盘,新建/data/appdatas/cat/目录,新建client.xml文件

    项目文件中srouce中的client.xml,此文件代表了这个项目我是谁,比如项目的名字Cat。

    /data/appdatas/cat/client.xml,此文件有OP控制,这里的Domain名字用来做开关,如果一台机器上部署了多个应用,可以指定把一个应用的监控关闭。

          <config mode="client">
              <servers>
                 <server ip="192.168.213.115" port="2280" />
             </servers>
          </config>

    alpha、beta这个配置需要自己在此目录添加

    预发以及生产环境这个配置需要通知到对应OP团队,让他们统一添加,自己上线时候做下检查即可

    a、192.168.213.115:2280端口是指向测试环境的cat地址

    b、配置可以加入CAT的开关,用于关闭CAT消息发送,将enabled改为false,如下表示将mobile-api这个项目关闭

          <config mode="client">
              <servers>
                 <server ip="192.168.213.115" port="2280" />
             </servers>
             <domain id="mobile-api" enabled="false"/>
          </config>


    5.CAT的Log4j集成 【建议所有Log都打到CAT,这样才能更快发现问题】

    业务程序的所有异常都通过记录到CAT中,方便看到业务程序的问题,建议在Root节点中添加次appendar

    a)在Log4j的xml中,加入Cat的Appender>

    <appender name="catAppender" class="com.dianping.cat.log4j.CatAppender"></appender>

    b)在Root的节点中加入catAppender

         <root>
           <level value="error" />
           <appender-ref ref="catAppender" />
         </root>

    c)注意有一些Log的是不继承root的,需要如下配置

          <logger name="com.dianping.api.location" additivity="false">
            <level value="INFO"/>
            <appender-ref ref="locationAppender"/>
            <appender-ref ref="catAppender"/>
          </logger>

    https://github.com/dianping/cat/tree/master/%E6%A1%86%E6%9E%B6%E5%9F%8B%E7%82%B9%E6%96%B9%E6%A1%88%E9%9B%86%E6%88%90

    java config:

        @Bean
        public FilterRegistrationBean catFilter() {
            FilterRegistrationBean registrationBean = new FilterRegistrationBean();
            registrationBean.setFilter(new CatFilter());
            registrationBean.addUrlPatterns("/*");
            registrationBean.setName("cat-filter");
            registrationBean.setDispatcherTypes(DispatcherType.FORWARD, DispatcherType.REQUEST);
            registrationBean.setOrder(1);
            return registrationBean;
        }

    linux 安装maven:

    apache源配置
    wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
    yum -y install apache-maven
    yum -y install ant

    cat监控平台
    Problem报表可以查找一些异常操作,配置Transcation报表使用。如果发现Transaction报表中有些URL max时间太长,可以在Problem中查找到,然后进行分析



    FAQ:
    Error when try connecting to /10.10.10.2:2280
    原因是没有配置客户端路由导致

    这时点击左上角的红色配置按钮,如出现登录窗口输入默认账号密码,catadmin/catadmin
    进入配置界面后选择 全局告警配置-客户端路由

    Backup-server为当前服务器地址,端口固定2280

    Default-server定义可跳转的路由地址,这里设置的是本机地址,enable设置true表示启用。设置完成后点击提交保存。


    https://github.com/dianping/cat/blob/master/%E6%A1%86%E6%9E%B6%E5%9F%8B%E7%82%B9%E6%96%B9%E6%A1%88%E9%9B%86%E6%88%90/Cat%E6%8A%80%E6%9C%AF%E5%85%A5%E9%97%A8%E6%80%BB%E7%BB%93-0.1.0.doc






    异常解决:

    要按readme的要求,使用jdk1.8以下进行编译生成war。否则,就有下面的错:

    [ERROR] [ServletHolder] Servlet initializing failed. org.unidal.lookup.LookupException: Component(org.unidal.web.lifecycle.RequestLifecycle) lookup failure. details: Unable to lookup component 'org.unidal.web.lifecycle.RequestLifecycle', it could not be started.

    role: org.unidal.web.lifecycle.RequestLifecycle
    roleHint: mvc

    maven用的jdk环境和我编译的环境不一样,maven要依赖javahome

    http://www.oschina.net/question/1463652_2152237

      

    更改tomcat JDK:

    经测试,更改catalina.bat设置也可以

    @echo off
    
    set JAVA_HOME=C:Program FilesJavajdk1.7.0_13
    set JRE_HOME=C:Program FilesJavajre7
    1、windows下:
    修改 tomcat/bin/setclasspath.bat
    rem Otherwise either JRE or JDK are fine
    之前加上
    set JAVA_HOME = C:....   jdk路径
    set JRE_HOME = C:....jre  Jre路径
     
    2、linux环境下
    修改tomcat/bin/setclasspath.sh
    # First clear out the user classpath
    CLASSPATH=
    下面添加上
    export JAVA_HOME=/home/tool/jdk1.6.0_18  --jdk路径
    export JRE_HOME=/home/tool/jdk1.6.0_18/jre --jre路径
     
    保存,重新启动tomcat
     
     
     

    mvn编译cat的代码进报下面的错:

    A required class is missing:com/thoughtworks/xstream/io/HierarchicalStreamDriver

    解决办法:

    在mvn本地仓库中com houghtworksxstream这个文件夹。重新执行mvn clean install -DskipTests即可

    因为没有这个文件夹,相关的jar都会重新下载,然后就下载到了。

    http://www.myexception.cn/xml-soap/1898572.html

     
     
    mvn jetty:run
    报错:

    [INFO] Final Memory: 11M/307M
    [INFO] ------------------------------------------------------------------------
    [ERROR] No plugin found for prefix 'jetty' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories
    [local (e:m2repository), central (http://repo.maven.apache.org/maven2)] -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
    ch.
    [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 rea
    d the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoPluginFoundF
    orPrefixException

    原因:

    settings.xml没有配置插件应此需要

    mvn org.mortbay.jetty:maven-jetty-plugin:run

    这样来运行。

    如果需要使用jetty:run,那么必须在maven的setting.xml下配置

    解决办法:

    在.m2的settings.xml文件的pluginGroups节点添加关于jetty的信息:

      <!-- pluginGroups
       | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
       | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
       | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
       |-->
      <pluginGroups>
        <!-- pluginGroup
         | Specifies a further group identifier to use for plugin lookup.
        <pluginGroup>com.your.plugins</pluginGroup>
        -->
         <pluginGroup>org.mortbay.jetty</pluginGroup>  
      </pluginGroups>

    http://www.xuebuyuan.com/1115208.html

  • 相关阅读:
    POJ 2251 Dungeon Master
    HDU 3085 Nightmare Ⅱ
    CodeForces 1060 B Maximum Sum of Digits
    HDU 1166 敌兵布阵(树状数组)
    HDOJ 2050 折线分割平面
    HDU 5879 Cure
    HDU 1878 欧拉回路
    HDU 6225 Little Boxes
    ZOJ 2971 Give Me the Number
    HDU 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/softidea/p/5719331.html
Copyright © 2011-2022 走看看