1.Web.xml中新增filter

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

Filter放在url-rewrite-filter 之后的第一个,如果不是会导致URL的个数无限多,比如search/1/2,search/2/3等等,无法监控,后端存储压力也变大。
<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>
struts会吃掉URL中的ERROR信息,请在配置中加 <constant name="struts.handle.exception" value="false" />
解决URL中很多重复的问题,比如restfull的url
CAT 提供了自定义的URL的name功能,只要在HttpServletRequest的设置一个Attribute, 在业务运行代码中加入如下code可以自定义URL下name,这样可以进行自动聚合。 HttpServletRequest req ; req.setAttribute("cat-page-uri", "myPageName");
2.Pom.xml中更新jar包(点评内部公共组件,外部公司可以忽略)
<dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-client</artifactId> <version>1.4.4</version> </dependency>
3、配置domain (cat-client 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

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

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

项目文件中srouce中的app.properties,此文件代表了这个项目我是谁,比如项目的名字tuangou-web。

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

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

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

10.66.13.115:2280端口是指向测试环境的cat地址

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>
6.Java代码一份埋点的样例

Transaction用来记录一段程序响应时间

Event用来记录一行code的执行次数

Metric用来记录一个业务指标

这些指标都是独立的,可以单独使用Event,单独使用Metric或者Transaction,主要看业务场景。

Transaction的埋点一定要complete,切记放在finally里面。

下面的埋点代码里面表示需要记录一个页面的响应时间,并且记录一个代码执行次数,以及记录两个业务指标,所有用了一个Transaction,一个Event,两个Metric



Do checkpoint here