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

2024-03-19 01:08

本文主要是介绍TARS 服务信息上报|全方位服务监控,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者 | Eaton

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

目录

    • 简介
    • 状态统计上报
    • 异常上报
      • TarsCpp
      • TarsGo
    • 属性统计上报
    • 总结

简介

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)

这篇关于TARS 服务信息上报|全方位服务监控的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824314

相关文章

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编