网络系统观察之道

news2024/11/27 13:36:31

什么是“可观察性”?

当然,“可观察性”这个术语并不是我们发明的。我们最开始从用户那里听到这个概念,这些用户主要来自网站可靠性工程 (SRE) 社区。有些信息来源认为,这个术语起源于硅谷巨头(如 Twitter)建立的 SRE 组织。尽管开创性的 Google SRE Book 没有提到这个术语,但它列出了当今许多与“可观察性”相关的原则。

“可观察性”不是供应商能够在系统之外单独交付的功能,而是您在构建系统时植根于其中的一个属性,就像易用性、高可用性和稳定性一样。设计和构建“可观察”系统的目标在于,确保当它在生产中运行时,负责操作它的人员能够检测到不良行为(例如,服务停机、错误、响应缓慢),并拥有可操作的信息以有效地确定根本原因(例如,详细的事件日志、细粒度的资源使用信息,以及应用程序跟踪)。这个目标看似平淡无奇,但组织在实现这一目标时会遇到诸多挑战,常见挑战包括:没有收集足够的信息;收集了太多信息,但没有提取出有指导意义的内容;这些信息分别存储在诸多不同的位置。

第一个方面是检测不良行为,这通常从设置服务级别指标 (SLI) 和服务级别目标 (SLO) 开始。 这些是衡量成功的内部标准,重视可观察性的组织可通过这些标准来评判生产系统。如果有合同义务来实现这些目标,SLI/SLO 也可以转化为服务级别协议 (SLA)。SLI 最常见的例子是系统正常运行时间,您可以为此设置 99.9999% 的 SLO。系统正常运行时间也是外部客户最常见的服务级别协议。然而,您的 SLI/SLO 内部可能更加精细,对生产系统行为的这些最重要因素的监测和警报是任何可观察性计划的基础。这方面的可观测性也被称为“监测”。

第二个方面 - 为操作员提供精确的信息,以便快速有效地调试生产问题 - 这是一个我们发现有大量发展和创新的领域。关于“可观察性的三大支柱” - 指标、日志和应用程序跟踪 - 网上有很多讨论。人们还认识到,简单地使用拼凑的工具收集所有这些粒度数据不一定是可行的,而且往往不具有成本效益。

可观察性的系统的三个要素

1)日志:程序运行产生的事件,可以详细解释其运行状态; 
2)指标:一组聚合数值,主要用于监控基础设施(机器、容器、网络等),但也有应用会用于监控业务层面,比如开源搜索系统Elasticsearch就有关于查询或写入量、耗时、拒绝率等应用层面的指标;
3)应用性能监控(APM):深入到代码层面的追踪(或监控),包括程序内部执行过程、服务之间链路调用等情况,能轻易的找到程序“慢”的原因。APM最常见被用于对web服务器中一次请求处理过程的追踪,包括内部执行逻辑、外部服务的调用及它们相应的耗时。

three-pillars-of-observability-logs-metrics-tracs-apm.png

应用性能监控(APM)

对于大部分应用程序来说性能都是很重要的一个因素,尤其对于比如网站、手机app等直接由用户访问的应用来说更是如此,因为性能较差的应用将会直接影响其用户体验。因此,能对应用进行性能监控变得非常重要,这将帮助我们找到性能瓶颈并优化。

应用性能监控(Application Performance Monitoring,APM),是对应用程序性能和可用性的监视和管理。 APM努力检测和诊断复杂的应用程序性能问题,以维持预期的服务等级。

APM 在维基百科上的定义是应用性能管理(Application Performance Management),而市面上大多数APM产品定义则是应用性能监控(Application Performance Monitoring)。《What Is Application Performance Monitoring and Why It Is Not Application Performance Management》 此文认为应用性能监控是应用性能管理一部分,前者能帮你找到问题,而后者能帮你分析并解决问题。但实际上大部分APM产品都包含了分析问题的部分,并且业界也没有对两个定义作出明确的区分,所以基本上我们可以将两者视为是相同的。

Gartner Research 将APM按功能分为五个维度(2016年将这5个维度归纳至3个),业界的APM产品的主要功能也都基本包含在内。

1)最终用户体验监控(End user experience monitoring)。通过监控用户的行为以期优化用户体验。比如:监控用户和web界面/客户端的交互,并记录交互事件的时间。
2)运行时应用程序架构(Runtime application architecture)。理解服务间的依赖关系、架构中应用程序交互的网络拓扑。
3)业务事务(Business transaction)。产生有意义的SLA报告,并从业务角度提供有关应用程序性能的趋势信息。
4)深入组件监控(Deep dive component monitoring)。通常需要安装agent并且主要针对中间层,包括web服务器、应用和消息服务器等。健壮的监控应该能显示代码执行的清晰路径,因为这一维度和上述第二个维度紧密相关,APM产品通常会将这两个维度合并作为一个功能。
5)分析或报告(Analytics/reporting)。将从应用程序中收集的一系列指标数据,标准化的展现成应用性能数据的通用视图。

开源的APM系统

目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的Dapper实现的。

功能和技术方案对比:
1)Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。
2)一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多
3)Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。
4)CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF流量题解http2.pcapng

使用wireshark工具打开流量文件。 根据网络协议进行分组排序,对流量文件里面的内容进行观察。 16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具 (sojson.com) Base64编码/解码器,在线解码Base64 (sojson.com) https:…

VS2008总在当前项目文件夹创建3个不必要的文件夹的解决方法

如下图所示: 这3个文件夹都是无必要的空文件夹(1.Visual Studio 2008 2.Visual Studio 2008Projects 3.Visual Studio 2008Templates),每个项目都这样就有点烦躁的了。每次打开还要给你重建。 解决方法: 1.重置“项…

【Java可执行命令】(十八)可视化监控和管理工具 jconsole:获取 JVM的内存使用情况、线程活动、GC 行为等重要指标的可视化工具 ~

Java可执行命令之jconsole 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 注意事项 4️⃣ 应用场景🌾 总结 1️⃣ 概念 jconsole 是 Java Development Kit (JDK) 自带的一款图形化监控和管理工具。它旨在提供一个简单而强大的界面,用于监视和管…

成品短视频App源码,开启你的创意视频之旅!

短视频App如今已成为人们记录和分享生活的热门方式。你是否想过自己拥有一款属于自己的短视频App呢?有了短视频App源码,就能轻松实现这一愿望。本文将介绍短视频App源码的优势、开发流程和功能特点,助你快速创建个性化短视频App,开启你的创意…

并发——什么是线程,什么是进程

文章目录 1.1. 何为进程?1.2. 何为线程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时…

鉴源论坛·观擎丨浅谈操作系统的适航符合性(下)

作者 | 蔡喁 上海控安可信软件创新研究院副院长 版块 | 鉴源论坛 观擎 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 在浅谈操作系统的适航符合性(上)中,详细介绍了民用飞机操作系统的研制现状及其适航要求&#xff…

【雕爷学编程】Arduino动手做(197)---零知 STM32F103RBT6 标准开发板2

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

SAP ABAP元素域值描述通过函数(DD_DOMVALUE_TEXT_GET)获取

代码如下&#xff1a; PERFORM FRM_GET_DOMVALUE_TEXT USING ZMMD_ZFLZQ <GFS_DATA>-ZFLZQ CHANGING <GFS_DATA>-ZZQTEXT .IF <GFS_DATA>-ZXYLX IS NOT INITIAL .PERFORM FRM_GET_DOMVALUE_TEXT USING ZMMD_ZXYLX <GFS_DATA>-ZXYLX CHANGING <GFS_…

matlab使用教程(11)—创建随机数

MATLAB 使用算法来生成伪随机数和伪独立数。这些数在数学意义上并非严格随机和独立的&#xff0c;但它们能够通过各种随机和独立统计测试&#xff0c;并且其计算可以重复&#xff0c;方便用于测试或诊断目的。 rand 、 randi 、 randn 和 randperm 函数是创建随机数数组的主要…

C++核心编程:C++中的引用

C中的引用 引用的基本语法 作用&#xff1a;给变量起别名 语法&#xff1a;数据类型 & 别名 原名 //比如给一个int变量a命名一个别名 b int &b a;b 20; cout<< a << endl;//a 20引用的注意事项 引用必须初始化 int &b;//错误的引用在初始化后&…

美国超导:一家第四次工业革命中的小型成长型公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结: &#xff08;1&#xff09;在韩国研究人员宣布发现首个常压室温超导体LLK-99这个潜在的革命性化合物,并大肆宣传后&#xff0c;美国超导(AMSC)的股票暴涨了60%。 &#xff08;2&#xff09;美国超导是一家专门从事超…

13 Java 多线程见的通信 volatile synchronized,Java多线程等待通知机制, ThreadLocal的使用

volatile synchronized ThreadLocal 线程间的通信 volatile synchronizedvolatile和synchronized关键字线程等待/通知机制ThreadLocal的使用 线程间的通信 volatile synchronized 线程开始运行&#xff0c;拥有自己的栈空间&#xff0c;就如同一个脚本一样&#xff0c;按照既定…

揭秘无人机在水利行业中如何应用

无人机的应用已经成为现代科技的重要组成部分&#xff0c;在水利行业中&#xff0c;无人机的应用同样发挥了极其重要的作用。无人机在水利行业中的应用&#xff0c;不仅提高了工作效率&#xff0c;还极大地降低了人力和物力成本&#xff0c;为水利工作注入了新的活力。 一、无人…

git clone 报错Filename too long

1.使用git clone代码&#xff0c;爆出Filename too long错误 2.原因分析 因为我很少看git clone日志&#xff0c;所以从未想过是clone异常&#xff0c;而且也看到代码clone下来了&#xff0c;所以我就显然以为代码clone成功&#xff0c;但是使用idea打开代码后发现大量代码无法…

字符函数、字符串函数、内存函数

目录 求字符串长度&#xff1a; size_t strlen ( const char * str ); 无长度限制的字符串函数 字符串拷贝&#xff1a; char * strcpy ( char * destination, const char * source ); 字符串追加&#xff1a; char * strcat ( char * destination, const char * source ); 字…

COSV Schema 1.0正式对外发布,棱镜七彩参与制定工作

近期&#xff0c;CCF版开源漏洞信息描述规范COSV Schema 1.0正式制定并对外发布&#xff0c;棱镜七彩参与制定工作。 图 COSV Schema 1.0制定过程贡献单位及专家名单 作为开源软件治理与软件供应链安全领域的先行者&#xff0c;棱镜七彩一直致力于提升开源效能、防范开源漏洞。…

源码分析——LinkedList源码分析

文章目录 1.LinkedList简介2.内部结构分析3.LinkedList源码分析3.1构造方法3.2add方法3.3根据位置取数据的方法3.4根据对象得到索引的方法3.5检查链表是否包含某对象的方法&#xff1a; 1.LinkedList简介 LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底…

2024考研408-计算机网络 第五章-传输层学习笔记

文章目录 前言一、传输层提供的服务1.1、传输层的功能1.2、传输层的两个协议&#xff08;TCP、UDP&#xff09;1.3、传输层的寻址与端口&#xff08;常见端口介绍&#xff09; 二、UDP协议2.1、认识UDP功能和特点2.2、UDP首部格式2.3、UDP伪首部字段分析2.4、伪首部校验UDP用户…

Unity 基础函数

Mathf&#xff1a; //1.π-PI print(Mathf.PI); //2.取绝对值-Abs print(Mathf.Abs(-10)); print(Mathf.Abs(-20)); print(Mathf.Abs(1)); //3.向上取整-Ce il To In t float f 1.3f; int i (int)f; …

无人机光伏巡检系统的全新作用解析,提升效率保障安全

随着光伏发电行业的快速发展&#xff0c;光伏电站的规模越来越大&#xff0c;光伏维护和巡检成为一个巨大的挑战。为解决传统巡检方法的低效率和安全风险问题&#xff0c;无人机光伏巡检系统应运而生&#xff0c;并成为提升光伏巡检效率和保障安全的利器。 首先&#xff0c;无人…