目录
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
划至底部,点击“在看”,是你来过的仪式感!