【6】JMicro微服务-服务日志监控

1. 微服务相关

      在前面的1到5节中,总共涉及服务提供者,服务消费者,服务监听服务,发布订阅服务,熔断器服务5种类型的猪微服务,每种类型服务又可以在任何一台机器上“随意”启动N个运行实例,每个RPC请求从初始触发客户端开始,中间可能经过N个微服务,然后从这N个经过的微服务返回,中间任何一个环节都可能出问题,或者某个环节耗费过长时间,这时候不可能从这N个微服务所在机器上查看log,况且找到这N个微服务所在机器都不可能。JMicro提供统一的日志查看服务,并且高度可配置性,比如只想查看某个RPC方法的日志,或线上热切换日志开关。

2. 启动日志服务

新打开一个新的CMD窗口,CD进入/jmicro.main.monitor.log,运行 

mvn clean install -Pbuild-main  (只需构建一次,以后可以重复运行)

运行日志服务

java -jar target/jmicro.main.monitor.log-0.0.1-SNAPSHOT-jar-with-dependencies.jar

3. 修改SimpleRpcImpl的hello方法

@Override
    @SMethod(
            //breakingRule="1S 50% 500MS",
            //1秒钟内异常超50%,熔断服务,熔断后每80毫秒做一次测试
            breakingRule = @SBreakingRule(enable=true,breakTimeInterval=1000,percent=50,checkInterval=80),
            loggable=1,    //启用日志查看
            testingArgs="gv/9gwAQamF2YS5sYW5nLk9iamVjdAABgf/8AApBcmUgeW91IE9L",//测试参数
            monitorEnable=1,
            timeWindow=30*1000,//统计时间窗口20S
            checkInterval=2000,//采样周期2S
            baseTimeUnit=Constants.TIME_MILLISECONDS,
            timeout=3000,
            debugMode=1,
            maxSpeed=1000
    )
    public String hello(String name) {
        if(SF.isLoggable(true,MonitorConstant.LOG_DEBUG)) {
            SF.doBussinessLog(MonitorConstant.LOG_DEBUG,SimpleRpcImpl.class,null, name);
        }
        
        //System.out.println("Server hello: " +name);
        return "Server say hello to: "+name;
    }
loggable=1表示启用日志,此值可实时在ZK中做修改,并实时生效。

打开命令行窗口

进入provider目录

cd ${SRC_ROOT}\jmicro.example\jmicro.example.provider

构建运行包

mvn clean install -Pbuild-main

运行服务

java -jar target/jmicro.example.provider-0.0.1-SNAPSHOT-jar-with-dependencies.jar

4. 运行客户端

保持5节的客户端不变,直接运行

java -jar target/jmicro.example.comsumer-0.0.1-SNAPSHOT-jar-with-dependencies.jar

 查看日志服务窗口输出,Lid表示一个RPC请求标识,上图是一个RPC请求从客户端开始到服务端,再从服务端返回到客户端的整个流程的log。

 5. 实时开启关闭日志

用ZKUI(https://github.com/DeemOpen/zkui),进入到/jmicro/JMICRO_services,找到org.jmicro.example.api.rpc.ISimpleRpc##simpleRpc##0.0.1##exampleProdiver0##172.16.22.200##58740

修改hello方法的loggable值即可,0:表示禁用log,1:表示启用log,-1:表示由Service确定。

使用同样的方式,可以实时修改服务相关的值,如breaking=true,这样此服务实例就被手动熔断了!

猜你喜欢

转载自www.cnblogs.com/jmicro/p/10578717.html
今日推荐