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

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个