TARS 服务信息上报|全方位服务监控

作者 | Eaton

导语 | 服务上线运营后,出现异常是难免的事,通常情况下会通过服务日志排查问题。然而这种排查问题的方式有时候是低效的,特别是日志比较多,还不知道如何下手的时候,非常麻烦。那让服务主动报告出现的错误不就行了吗?本文将对 TARS 中的几种信息上报方式进行介绍。

简介

TARS 框架中集成了服务信息上报的功能,包含了服务的状态统计上报、异常上报、属性统计上报等三个信息上报统计方式,实现对服务健康程度的多方面监控。这三种信息上报方式分别通过 Stat、Notify、Property 这三个节点实现。如下图

在这里插入图片描述

服务通过向这三个节点报告自身不同维度的信息,实现对服务状态的监控。那么接下来我们来了解这三种信息上报方式吧。

状态统计上报

所谓的状态统计上报,就是在 TARS 框架中,服务向 Stat 上报自身的调用耗时、超时率、异常率等状态信息并进行统计。

服务调用上报接口后,实际上是先暂存在内存中,当到达某个时间点后才正式上报到 Stat 服务(默认是1分钟上报一次)。我们称两个上报时间点之间的时间为一个统计区间,在一个统计区间相同 key 进行累加、对比等操作。

状态统计上报一般不需用户额外开发,服务在 TARS 框架中正确配置并部署后,即可自动上报。

打开 TarsWeb 的服务管理页面,在具体服务的 服务监控 页面中可以看到对应服务相关的状态信息,包括流量、平均耗时、超时率等,如下图。

在这里插入图片描述

异常上报

服务状态统计上报能够直观地了解服务的状态和健康度。不过实际使用场景中,仅统计一些服务的调用信息是不够的。为了更好监控,TARS 框架支持在服务中将异常直接上报到 Notify,并可以在 TarsWeb 管理页面上查看到,或结合别的告警软件或平台直接通知用户。TARS 不同语言版本中都提供了异常上报方式。本部分将分别基于 TarsCpp 和 TarsGo 举例介绍,其他语言版本类似。

TarsCpp

TarsCpp 中提供了一种异常上报方式,即使用 RemoteNotify::report 来上报异常,用法如下

RemoteNotify::getInstance()->report(info);

参数 info 为需要上报的异常信息,类型为 string 字符串, 可以直接上报字符串到 Notify,页面可以看到上报的字符串。例如我们创建一个服务名为 Demo.DemoServer.DemoObj 的 TarsCpp 服务,创建命令如下

/usr/local/tars/cpp/script/cmake_tars_server.sh TestDemo DemoServer Demo

项目目录结构如下

DemoServer
├── build                   # 构建目录
├── CMakeLists.txt          # cmake 构建文件
└── src                     # 源文件目录
    ├── CMakeLists.txt
    ├── Demo.h              # Demo.tars 生成文件
    ├── DemoImp.cpp         # 接口实现文件
    ├── DemoImp.h           # 接口实现头文件
    ├── DemoServer.cpp      # 服务实现文件
    ├── DemoServer.h        # 服务实现头文件
    └── Demo.tars           # tars 接口定义文件

接着在 DemoServer.cpp 的服务初始化函数 DemoServer::initialize 中上报一条信息,这样服务在启动时,就会上报一条 DemoServer Start 的信息,如下

void
DemoServer::initialize()
{
   
    addServant<DemoImp>(ServerConfig::Application + "." + ServerConfig::ServerName + ".DemoObj");
    // 上报信息
    RemoteNotify::getInstance()->report("DemoServer Start");
}

将服务编译部署后,可以在 TarsWeb 上服务的实时状态中看到服务上报的信息,如下图

在这里插入图片描述

TarsGo

TarsGo 中提供了如下函数来上报异常信息,用法和前面 TarsCpp 的相似

func ReportNotifyInfo(level int32, info string)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值