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

如非授权,禁止用于商业用途,转载请注明出处
作者:mynewworldyyl

 

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(
            loggable=1,    //启用日志查看
    )
    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中做修改,并实时生效。

 

if(SF.isLoggable(true,MonitorConstant.LOG_DEBUG)) {

  SF.doBussinessLog(MonitorConstant.LOG_DEBUG,SimpleRpcImpl.class,null, name);

}
这段代码判断当前日志是否启动debug级别,如果启动,则记录日志。

SF工具类有很多方法,其中,doBussinessLog是唯一提供给应用使用的方法,用于记录业务日志。其他方法保留给JMicro系统使用。

public static void doBussinessLog(byte debug, Class<?> tag, Throwable exp, String... msgs)

debug:日志级别,由MonitorConstant.LOG_开头的常量指定,分别有trance,debug,info,warn,error,final;

tag:记录日志的类;

exp:需要记录日志的异常实例;

msgs: 日志信息,可变参数。

 

打开命令行窗口

进入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,这样此服务实例就被手动熔断了!

 

6. 日志文件

在日志服务当前工作目录${user.dir}/logs/jmicro/下,分别有debug.log,info.log,error.log3个日志文件,可以查看文件日志。

可以参考org.jmicro.main.monitor.LinkRouterMonitor RPC服务类实现方式,实现org.jmicro.api.monitor.IMonitorDataSubscriber服务接口,将日志记录在不同的地方或实现不同日志策略。org.jmicro.main.monitor.LinkRouterMonitor 只是一个参考实现,生产环境中,不建议直接使用。

微服务中,日志应该是可实时方便查询的,如根据RPC 服务标识,时间,IP,端口等条件,方便查询到相关日志

微服务中,应该有服务预警系统,服务出现异常时,能够自动通知相关人员,如短信,微信,邮件等,其中内容就应该包括关键日志。

微服务中,应该有智能系统,根据系统当前的状态,自动化控制系统参数,以使系统稳定健康运行。如自动化控制流量速度,记录RPC过程数据,自动化重现问题,根据结果做智能分析。其中日志是其中一个重要部份。

JMicro目前还没实现以上特性,同时欢迎大家参与JMicro开发实现。

 

转载于:https://www.cnblogs.com/jmicro/p/10578717.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值