前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java应用监控之Cat集成Dubbo、Mybatis、Logback、spring boot

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

作者头像
用户4361942
发布2019-05-29 16:12:17
2.6K0
发布2019-05-29 16:12:17
举报
文章被收录于专栏:java程序员思维java程序员思维

目录

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方式

代码语言:javascript
复制
<dependency>  <groupId>com.platform</groupId>  <artifactId>cat-common-client</artifactId>  <version>0.0.6</version></dependency>

gradle方式

代码语言:javascript
复制
compile("com.platform:cat-common-client:0.0.6")

3、定义对接的应用名称

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

代码语言:javascript
复制
app.name=你的应用名

4、spring boot对接

代码语言:javascript
复制
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对接

代码语言:javascript
复制
<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增加如下代码

代码语言:javascript
复制
<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中有以下变量

代码语言:javascript
复制
spring.datasource.urlmybatis.mapper-locationsmybatis.type-aliases-package

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

代码语言:javascript
复制
<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

代码语言:javascript
复制
<?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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java程序员思维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档