int concurrent = getConcurrent(invoker, invocation).get(); // 当前并发数
String application = invoker.getUrl().getParameter(Constants.APPLICATION_KEY);
String service = invoker.getInterface().getName(); // 获取服务名称
String method = invocation.getMethodName(); // 获取方法名
URL url = URL.valueOf(invoker.getUrl().getParameterAndDecoded(Constants.MONITOR_KEY));
Monitor monitor = monitorFactory.getMonitor(url);
// ---- 服务提供方监控 ----
String server = context.getLocalAddressString(); // 本地提供方地址
if (invoker.getUrl().getAddress().equals(server)) {
monitor.count(new URL(invoker.getUrl().getProtocol(), context.getRemoteHost(), 0, service + "/" + method)
.addParameters(MonitorService.APPLICATION, application,
MonitorService.INTERFACE, service,
MonitorService.METHOD, method,
MonitorService.PROVIDER, NetUtils.getLocalHost() + ":" + context.getLocalPort(),
error ? MonitorService.FAILURE : MonitorService.SUCCESS, String.valueOf(1),
MonitorService.ELAPSED, String.valueOf(elapsed),
MonitorService.CONCURRENT, String.valueOf(concurrent)));
}
// ---- 服务消费方监控 ----
context = RpcContext.getContext(); // 消费方必须在invoke()之后获取context信息
server = context.getRemoteAddressString(); // 远程提供方地址
if (invoker.getUrl().getAddress().equals(server)) {
monitor.count(new URL(invoker.getUrl().getProtocol(), context.getRemoteHost(), context.getRemotePort(), service + "/" + method)
.addParameters(MonitorService.APPLICATION, application,
MonitorService.INTERFACE, service,
MonitorService.METHOD, method,
MonitorService.CONSUMER, NetUtils.getLocalHost(),
error ? MonitorService.FAILURE : MonitorService.SUCCESS, String.valueOf(1),