CAT监控
cat客户端配置
创建配置文件目录
mkdir -p /data/appdatas/cat
创建日志目录
mkdir -p /data/applogs/cat
增加client.xml
cd /data/appdatas/cat vim client.xml
<?xml version="1.0" encoding="utf-8"?>
<config mode="client" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="config.xsd">
<servers>
<server ip="192.168.1.13" port="2280" http-port="2281" />
</servers>
</config>
代码埋点
指定项目名称
“项目名称”用于标识埋点数据来自哪个项目,在META-INF/app.properties文件中指定,内容如下:
app.name=marketing-server
transaction埋点
使用AOP
一般使用AOP的方式对dao,service,controller中的方法做transaction埋点。当前有个抽象类com.travelzen.framework.aop.AbstractCatMonitorAspect已经实现了AOP埋点的基本逻辑。只需要继承这个类就可以方便的实现自己的AOP。
package com.cana.marketing.dao.aop;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import com.travelzen.framework.aop.AbstractCatMonitorAspect;
@Aspect
public class DaoCatAspect extends AbstractCatMonitorAspect {
@Override
@Pointcut("execution(* com.cana.marketing.dao.mapper..*.*(..))")
public void catMonitorOperation() {
}
@Override
public String getType() {
return AbstractCatMonitorAspect.Type.dao.name();
}
}
然后在spring.xml 中配置这个bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
default-lazy-init="true"
>
<aop:aspectj-autoproxy />
<bean id="marketingDaoAspect" class="com.cana.marketing.dao.aop.DaoCatAspect"/>
</beans>
编码的方式
对于不是通过spring创建的对象,无法使用AOP埋点,只能通过编码的方式完成,基本的代码块:
Transaction t = Cat.newTransaction(type, name);
try{
//这里是具体的业务逻辑实现
t.setStatus(Transaction.SUCCESS);
}catch(Exception e){
Cat.logError(e);
t.setStatus(e);
}finally{
t.complete();
}
业务指标埋点
我们用的最多的是计数业务指标。
Cat.logMetricForCount("指标名称");
监控与报警配置
访问cat-server,测试环境地址:http://op.canacorp.net/cat/s/config?op=projects
配置项目基本信息
配置产品线
这里定义的产品线是用来对业务指标分类的。
配置业务指标报警
准备工作(可选)
在添加告警规则之前,必须要有已存在的MetricKey方可对其进行配置告警规则,目前发现Cat在某一个MetricKey未出现过问题时,是不会在应用监控配置中存在的,从而也就无法为其配置告警规则,解决方法是使用手动调用一次HttpApi,从而产生一个MetricKey项,具体的接口文档可在 http://192.168.1.7/cat/r/home?op=view&docName=alert 页面中的业务告警子页面下方找到。
添加告警规则
上面规则的含义是这样的:如果3分钟内该业务指标的总计数值<=5000则发告警。
开启报警
配置PING报警
上面规则的含义是这样的:如果通过get方法访问url返回的状态码不是200, 则告警。