专栏首页java程序员思维java应用监控之Cat集成Dubbo、Mybatis、Logback、spring boot

java应用监控之Cat集成Dubbo、Mybatis、Logback、spring boot

目录

1、cat源代码下载

2、引入封装好的jar包

3、定义对接的应用名称

4、spring boot对接

5、logback对接

6、非spring boot项目对接

7、mybatis对接

8、部署应用

1、cat源代码下载

代码地址:https://github.com/dianping/cat.git

cat属于代码侵入式的,集成cat需要进行相应的埋码。接入代码可以参考integration包下的代码

我们可以以dubbo目录下的代码作为主干,把另外几个对接的代码拷贝过去,然后重新打包,并上传至公司的maven私服。需要对接的应用,引入jar包。

2、引入封装好的jar包

maven方式

<dependency>  <groupId>com.platform</groupId>  <artifactId>cat-common-client</artifactId>  <version>0.0.6</version></dependency>

gradle方式

compile("com.platform:cat-common-client:0.0.6")

3、定义对接的应用名称

在resource目录下增加 META-INF/app.properties,文件内容如下:

app.name=你的应用名

4、spring boot对接

package com.galaxy.crm.cat;
import com.dianping.cat.servlet.CatFilter;import com.platform.catmonitor.mybatis.CatMybatisInterceptor;import org.apache.ibatis.plugin.Interceptor;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.annotation.Resource;import javax.sql.DataSource;
@Configurationpublic class CatCommon {
    @Bean    public FilterRegistrationBean catFilter() {        FilterRegistrationBean registration = new FilterRegistrationBean();        CatFilter filter = new CatFilter();        registration.setFilter(filter);        registration.addUrlPatterns("/*");        registration.setName("cat-filter");        registration.setOrder(1);        return registration;    }        @Resource    private DataSource dataSource;
    @Value("${spring.datasource.url}")    private String jdbcUrl;
    @Value("${mybatis.mapper-locations}")    private String mapperLocations;
    @Value("${mybatis.type-aliases-package}")    private String typePackage;
    @Bean    public SqlSessionFactory mysqlSessionFactory() throws Exception {        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();        sqlSessionFactoryBean.setDataSource(dataSource);        sqlSessionFactoryBean.setTypeAliasesPackage(typePackage);        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocations));        sqlSessionFactoryBean.setPlugins(new Interceptor[]{new CatMybatisInterceptor(jdbcUrl)});        return sqlSessionFactoryBean.getObject();    }}
4.对接logback,logback文件增加如下代码<appender name="CatAppender" class="com.platform.catmonitor.logback.CatLogbackAppender"></appender><root level="ERROR">    <appender-ref ref="CatAppender"/></root>

5、logback对接

<appender name="CatAppender" class="com.platform.catmonitor.logback.CatLogbackAppender"></appender><root level="ERROR">    <appender-ref ref="CatAppender"/></root>

注意:logback记录日志的时候需要传入异常对象,如果不传无法在cat中的problem展示错误信息。logger.error(e.getMessage(),e);

6、非spring boot项目对接

在web.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>

7、mybatis对接

spring boot项目在对接方式已经给出了方法,需要注意的是要确保application.properties中有以下变量

spring.datasource.urlmybatis.mapper-locationsmybatis.type-aliases-package

非spring boot项目可以通过一下方式,在bean,sqlSessionFactory的配置增加plugins属性配置如下

<bean id="sqlSessionFactory" class="com.galaxy.item.MySqlSessionFactoryBean">    <property name="dataSource" ref="dataSource" />    <property name="plugins">        <array>            <bean class="com.platform.catmonitor.mybatis.CatMybatisPlugin"></bean>        </array>    </property>    <property name="configLocation" value="classpath:mybatis-configuration.xml"></property>    <property name="mapperLocations" value="classpath*:mapper/*/*Mapper.xml"></property></bean>

8、部署应用

代码加完了,需要重新部署应用,部署应用之前需要添加client.xml,因为应用部署在不同的机器中,最好所有的应用公用一个client.xml,这样方便维护。可以使用linux挂载命令mount进行文件共享。

使用挂载命令之前需要安装nfs软件:yum install nfs-utilsy

mount -t nfs -o nolock,nfsvers=3,vers=3 -o rw \ 服务器Ip:/data/appdatas /data/appdatas

确保应用服务器中/data/appdatas/cat目录存在client.xml

<?xml version="1.0" encoding="utf-8"?><config mode="client" enabled="true">    <servers>        <server ip="cat服务器IP" port="cat端口" http-port="你的应用端口"></server>        <server ip="cat服务器IP" port="cat端口" http-port="你的应用端口"></server>    </servers></config>

启动之后,如果没有任何问题,在cat中会显示你新加入的应用名称

cat的对接就已经成功了,下一篇内容cat后台功能讲解。

END

划至底部,点击“在看”,是你来过的仪式感!

本文分享自微信公众号 - java程序员思维(java_python_go),作者:曾建路

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

原始发表时间:2019-05-25

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java应用监控之CAT安装部署

    java应用监控之调用链跟踪选型之Zipkin、Pinpoint、SkyWalking、CAT

    用户4361942
  • 自恢复式熔断隔离,防雪崩效应之利器-Hystrix,聪明人将它迁移到投资理财

    Hystrix是netflix开源的一款熔断隔离的产品,翻译成中文是豪猪的意思,豪猪科动物以棘刺闻名,棘刺有保护御敌作用,最长可达35厘米。遇敌时棘刺竖立抖动,...

    用户4361942
  • 享知行·思考:从架构设计流程学习方法论,让手中多一把锤子

    最近在看《从零开始学架构》,深入浅出通俗易懂,值得一看。作者将架构设计分为4个步骤,第一步:有的放矢-识别复杂度,解决复杂度带来的问题,是架构设计的本质。第二步...

    用户4361942
  • Fireworks怎么给人物面部打码模糊? fw人脸模糊的技巧

    模糊工具在许多软件中都有设置这个功能,用法有所不同,使用的地方也很多,比如需要打码的时候,就可以给不能显示的地方模糊化,就可以了,今天我们就来看看给人物脸部模糊...

    砸漏
  • golang的位运算操作符的使用 转

    感觉位运算操作符虽然在平时用得并不多,但是在涉及到底层性能优化或者使用某些trick的时候还是比较有意思。

    henrylee2cn
  • 关于React中状态保存的研究

    在使用react搭配react-router做应用的时候,你可能遇到这样的问题,当我从第一个页面过渡到第二个页面,然后返回之后,发现之前的页面的状态全部不见了,...

    糊糊糊糊糊了
  • tenforflow学习笔记(七):cnn

    1.tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_form...

    ke1th
  • Thinkphp 反序列化利用链深入分析

    今年7月份,ThinkPHP 5.1.x爆出来了一个反序列化漏洞。之前没有分析过关于ThinkPHP的反序列化漏洞。今天就探讨一下ThinkPHP的反序列化问题...

    Seebug漏洞平台
  • Thinkphp 反序列化利用链深入分析

    今年7月份,ThinkPHP 5.1.x爆出来了一个反序列化漏洞。之前没有分析过关于ThinkPHP的反序列化漏洞。今天就探讨一下ThinkPHP的反序列化问题...

    知道创宇云安全
  • Python操作MongoDB

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇

扫码关注云+社区

领取腾讯云代金券