功能类
更新时间 2025-10-16 16:22:55
最近更新时间: 2025-10-16 16:22:55
本章节主要介绍应用容灾多活功能类问题。
如何查看探针程序日志
用户可以选择将日志打印到应用控制台或者接入应用日志组件:
- 在启动参数中加入-Damss.log.type=slf4j可以将日志接入slf4j组件。
- 在启动参数中加入-Damss.log.type=console可以将日志打印到控制台。
- 如果未设置amss.log.type,则优先寻找slf4j是否存在可用的日志组件,如果不存在则默认使用console。
用户可以选择探针程序打印的日志级别:
- 在启动参数中加入-Damss.log.level=DEBUG可以将探针日志变更为DEBUG级别,用于路由分析。
- 探针程序的日志默认为INFO级别,不打印请求详情等信息。
- 为免影响业务性能,请只在调试阶段打印探针程序调试日志。
调试日志开启示例(将探针日志输出到控制台并设置为DEBUG级别):
java \
-javaagent:./amss-agent-1.0.0.jar \
-Damss.log.type=console \
-Damss.log.level=debug \
-Damss.application.group=order \
-Damss.application.name=订单应用 \
-Damss.commander.servers=172.*.*.10:47588 \
-Damss.commander.secret=****** \
-jar order-application.jar
设置成功后会在启动日志中可以看到如下信息:
...
2025-01-16 09:59:18 Initialize log factory completed: type=console , level=DEBUG
...
如何查看业务路由日志
将日志级别设置为DEBUG,然后寻找以下信息:
-
HTTP服务端和RPC客户端日志:
.... // 收到HTTP请求 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter beforeAdvice: event=[org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle <- [org.apache.catalina.connector.RequestFacade@3d896257, org.apache.catalina.connector.ResponseFacade@43d550e0, com.ctg.amss.test.agent.service.ClientService#dubboUnitWrite(String, String, String)]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Receive http server request: requestId=LnisjvgnTdOO8QbJ6oDa8Q , localUnitGroup=unit , request=HttpServletRequest [127.*.*.1:60071-> 127.*.*.1:15210 , method=POST, uri=/dubbo/unit/write , query=] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Executing http server request: requestId=LnisjvgnTdOO8QbJ6oDa8Q , localUnitGroup=unit , arch=active-passive 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Executing http request: requestId=LnisjvgnTdOO8QbJ6oDa8Q , localUnitGroup=unit , routerSources=[RouterSource [routerType=http, routerSource=parameter, routerName=rid], RouterSource [routerType=http, routerSource=parameter, routerName=rid_unit]] , routerId=0 // HTTP请求路由计算结果,允许访问 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Legal http request: requestId=LnisjvgnTdOO8QbJ6oDa8Q , localUnitGroup=unit , routers=[[guangzhou_1]] , routerId=0 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter beforeAdvice: event=[org.apache.dubbo.rpc.cluster.RouterChain.route <- [dubbo://172.*.*.21/com.ctg.amss.test.agent.remote.IServerDubboUnitService?application=dubbo-consumer-service.client.unit&check=false&dubbo=2.0.2&init=false&interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService&metadata-type=remote&methods=read,write&pid=23148&qos.enable=false®ister.ip=172.*.*.21&release=2.7.13&side=consumer&sticky=false×tamp=1736991753341, RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={}]]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter afterAdvice: event=[org.apache.dubbo.rpc.cluster.RouterChain.route <- [dubbo://172.*.*.21/com.ctg.amss.test.agent.remote.IServerDubboUnitService?application=dubbo-consumer-service.client.unit&check=false&dubbo=2.0.2&init=false&interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService&metadata-type=remote&methods=read,write&pid=23148&qos.enable=false®ister.ip=172.*.*.21&release=2.7.13&side=consumer&sticky=false×tamp=1736991753341, RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={}]]] // 发起了RPC调用 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Send dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , localUnitGroup=unit , request=Invocation [service=com.ctg.amss.test.agent.remote.IServerDubboUnitService , method=write , arguements=[3, 04101814-9fe2-**-**-e2721c567b42]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Redirect dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , localUnitGroup=unit 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Redirect dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , serviceType=dubbo , serviceName=providers:com.ctg.amss.test.agent.remote.IServerDubboUnitService:amss-version:amss-group 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Executing dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , unitGroup=unit , arch=active-passive 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Executing dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , unitGroup=unit , routerSources=1 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Redirect dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , unitGroup=unit , arch=active-passive , routerId=3 // RPC调用的路由计算结果 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Redirect dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , unitGroup=unit , arch=active-passive , routerId=3 , candidate=[[guangzhou_1]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Redirect dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , unitGroup=unit , arch=active-passive , routerId=3 , target=[com.ctg.amss.agent.aspect.dubbo.callback.DubboControlCallback$1@571abb79] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter finalizeAdvice: event=[org.apache.dubbo.rpc.cluster.RouterChain.route <- [dubbo://172.*.*.21/com.ctg.amss.test.agent.remote.IServerDubboUnitService?application=dubbo-consumer-service.client.unit&check=false&dubbo=2.0.2&init=false&interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService&metadata-type=remote&methods=read,write&pid=23148&qos.enable=false®ister.ip=172.*.*.21&release=2.7.13&side=consumer&sticky=false×tamp=1736991753341, RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={amss.trace.enable=true}]]] // 等待RPC调用响应 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] End dubbo client request: requestId=ifM03dL_TxOrK4kTR2qNBg , localUnitGroup=unit 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter beforeAdvice: event=[org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue <- [ok, method 'dubboUnitWrite' parameter -1, ModelAndViewContainer: View is [null]; default model {}, ServletWebRequest: uri=/dubbo/unit/write;client=127.*.*.1]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] End http server request: requestId=LnisjvgnTdOO8QbJ6oDa8Q , localUnitGroup=unit 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter afterAdvice: event=[org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue <- [ok, method 'dubboUnitWrite' parameter -1, ModelAndViewContainer: Request handled directly, ServletWebRequest: uri=/dubbo/unit/write;client=127.*.*.1]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter finalizeAdvice: event=[org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue <- [ok, method 'dubboUnitWrite' parameter -1, ModelAndViewContainer: Request handled directly, ServletWebRequest: uri=/dubbo/unit/write;client=127.*.*.1]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter afterAdvice: event=[org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle <- [org.apache.catalina.connector.RequestFacade@3d896257, org.apache.catalina.connector.ResponseFacade@43d550e0, com.ctg.amss.test.agent.service.ClientService#dubboUnitWrite(String, String, String)]] 2025-01-16 09:44:02 [http-nio-15210-exec-6] [ASPECT] Enter finalizeAdvice: event=[org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle <- [org.apache.catalina.connector.RequestFacade@3d896257, org.apache.catalina.connector.ResponseFacade@43d550e0, com.ctg.amss.test.agent.service.ClientService#dubboUnitWrite(String, String, String)]] ....
-
RPC服务端日志:
... // 收到RPC请求 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Enter beforeAdvice: event=[org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke <- [RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={input=389, path=com.ctg.amss.test.agent.remote.IServerDubboUnitService, remote.application=dubbo-consumer-service.client.unit, dubbo=2.0.2, interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService, version=0.0.0, amss.trace.enable=true}]]] 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Receive dubbo request: event=[org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke <- [RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={input=389, path=com.ctg.amss.test.agent.remote.IServerDubboUnitService, remote.application=dubbo-consumer-service.client.unit, dubbo=2.0.2, interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService, version=0.0.0, amss.trace.enable=true}]]] 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Receive dubbo server request: requestId=uKOSIjZISVucb8y4zT8I3g , localUnitGroup=unit , request=Invocation [service=null , method=write , arguements=[3, 04101814-9fe2-**-**-e2721c567b42]] 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Executing dubbo server request: requestId=uKOSIjZISVucb8y4zT8I3g , localUnitGroup=unit , arch=active-passive 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Executing dubbo request: requestId=uKOSIjZISVucb8y4zT8I3g , localUnitGroup=unit , routerSources=[RouterSource [routerType=dubbo, routerSource=parameter, routerName=1]] , routerId=3 // RPC调用的路由计算结果,允许访问 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Legal dubbo request: requestId=uKOSIjZISVucb8y4zT8I3g , localUnitGroup=unit , routers=[[guangzhou_1]] , routerId=3 // 执行SQL 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Execute SQL: connection=jdbc:mysql://127.*.*.1:3306/amss_agent_test_region_beijing?autoReconnect=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&amss.jdbc.rw= , sql=insert into amss_agent_write (message) values(?) 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Enter afterAdvice: event=[org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke <- [RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={input=389, path=com.ctg.amss.test.agent.remote.IServerDubboUnitService, remote.application=dubbo-consumer-service.client.unit, dubbo=2.0.2, interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService, version=0.0.0, amss.trace.enable=true}]]] 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] End dubbo server request: requestId=uKOSIjZISVucb8y4zT8I3g , localUnitGroup=unit 2025-01-16 09:44:02 [DubboServerHandler-172.*.*.1:25211-thread-10] [ASPECT] Enter finalizeAdvice: event=[org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke <- [RpcInvocation [methodName=write, parameterTypes=[class java.lang.String, class java.lang.String], arguments=[3, 04101814-9fe2-**-**-e2721c567b42], attachments={input=389, path=com.ctg.amss.test.agent.remote.IServerDubboUnitService, remote.application=dubbo-consumer-service.client.unit, dubbo=2.0.2, interface=com.ctg.amss.test.agent.remote.IServerDubboUnitService, version=0.0.0, amss.trace.enable=true}]]] ...
如何查看主备切换日志
在INFO级别的日志下出现以下信息的日志即为主备切换完成:
...
2025-01-16 09:43:56 [Amss worker-10] [ASPECT] Switch database completed: unitGroup=unit , center=435049117**-**
...