作者回复: 回复你的问题,用[bobo]标注: 1、/data/{appdatas,applogs}/cat是否client跟server端都需要创建? [bobo]:server要,client只需appdatas(不放心,client建个applogs也没关系) 2、/data/appdatas/cat目录下client.xml仅client端创建即可? [bobo]:server/client都要,因为server里头也内嵌了一个client,会自检发送server内部的trace数据。 3、/data/appdatas/cat目录下datasources.xml仅server端创建即可? [bobo]:对,只有server要。 4、/data/applogs/cat目录仅server端才会写入日志? [bobo]:对,只有server写入(不放心可实际确认) 5、http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate 客户端路由配置的作用是什么,是否要跟client.xml里面的ip必须保持一致? [bobo]:为了对client进行一些动态配置(不需要一个一个去改client),比如重新调整CAT server的地址(比如CAT扩容,维护腾挪等)。刚开始建议一致,后面可能动态调整后不一致。 6、配置的问题 client.xml <?xml version="1.0" encoding="utf-8"?> <config mode="client"> <servers> <server ip="10.1.1.1" port="2280" http-port="8080"/> <server ip="10.1.1.2" port="2280" http-port="8080"/> <server ip="10.1.1.3" port="2280" http-port="8080"/> </servers> </config> 客户端路由配置: <?xml version="1.0" encoding="utf-8"?> <router-config backup-server="10.1.1.1" backup-server-port="2280"> <default-server id="10.1.1.1" weight="1.0" port="2280" enable="false"/> <default-server id="10.1.1.2" weight="1.0" port="2280" enable="true"/> <default-server id="10.1.1.3" weight="1.0" port="2280" enable="true"/> <network-policy id="default" title="default" block="false" server-group="default_group"> </network-policy> <server-group id="default_group" title="default-group"> <group-server id="10.1.1.2"/> <group-server id="10.1.1.3"/> </server-group> <domain id="cat"> <group id="default"> <server id="10.1.1.2" port="2280" weight="1.0"/> <server id="10.1.1.3" port="2280" weight="1.0"/> </group> </domain> </router-config> enable=false表示机器不可用,10.1.1.1机器不做为消费机集群,若客户端使用10.1.1.1:2280上报数据时是否会出现问题? [bobo]这个动态配置生效后,client压根就不会向10.1.1.1发送trace数据。
作者回复: cat本身设计是侵入式的,侵入有利有弊,性能会更好,要改代码是弊。实践中尽量在框架层埋点,让集中框架团队埋好,对业务团队尽量透明,一般业务研发基本不用埋点。另外可以对cat客户端做AOP封装(如spring),SPI封装(可参考apollo做法),也可减少侵入性。
作者回复: 未听说cat和spring里头事务有冲突说法,你用cat的try catch埋点后,具体异常仍可向外抛出,让spring事务rollback机制生效
作者回复: 这个每家公司不同,看你的资源富裕情况和审计要求,短的放两周或一个月,长的可放三个月甚至半年以上的。
作者回复: CAT客户端trace缓存在内存中,以一定周期(秒级)向服务器发送,如系统重启,可能很少量丢数据,但完全不丢数据不是CAT(包括其它监控系统)首要设计目标,少量数据的偶尔丢失,并不影响统计趋势性监控。
作者回复: 可以,属于异步调用,相当于跨进程调用,需要在线程间传递调用链上下文context。这种调用链呈现比较复杂,线程之间没有明确时序关系,一般不建议。调用链监控主要适用于同步调用场景。