构建开源可观测平台
企业始终面临着确保 IT 基础设施和应用程序全年可用的压力。现代架构(容器、混合云、SOA、微服务等)的复杂性不断增长,产生大量难以管理的日志。我们需要智能应用程序性能管理 (APM) 和可观察性工具来实现卓越生产并满足可用性和正常运行时间目标。其中包括分析应用程序运行状况、性能和用户体验。采用机器学习技术来识别异常和行为模式将有助于及早发现根本原因并满足客户服务级别协议 (SLA)。

APM和可观察性工具市场无疑是火热的。这些工具摄取多个遥测数据源,并且是强大的分析平台,提供对应用程序和基础设施健康状况(包括系统性能)的重要见解。采用可观察性的软件开发团队能够更好地迭代发布他们的应用程序代码。根据“MarketsandMarkets”的研究,可观测工具和平台的市场规模预计将从 2023 年的 24 亿美元增长到 2028 年的 4 亿美元以上,复合年增长率 (CAGR) 为 11.7%。
什么是可观察性?
可观察性是指收集有关分布式应用程序、基础设施以及其内部和外部组件和服务之间的通信的数据的能力,使团队能够勤奋地调试他们的系统。它使站点可靠性工程 (SRE)、软件工程和运营团队能够分析客户影响并对服务中断进行分类。可观察性和监控有时可以互换使用。可观察性(主动)使数据可访问,并允许您提出任何系统问题以更深入地了解代码的行为方式。监控(反应式)是收集和显示数据以及确定系统整体状态的能力的任务。
可观察性可以进一步细分为三个关键支柱:日志、跟踪和指标,这对于 SRE 可观察性至关重要。
• 日志帮助我们诊断问题并告诉我们问题发生的原因。
• 跟踪帮助我们隔离问题并告诉我们问题发生的位置。
• 指标帮助我们发现问题并告诉我们发生了什么。
市场工具、能力和挑战
Gartner 的 APM 和可观察性魔力象限已识别出 20 多个提供 APM 和可观察性功能的供应商产品,包括自托管、供应商管理或 SaaS 部署。这些产品提供多种功能,包括应用程序性能指标、事件监控和警报、可追溯性、异常检测和漏洞等。
企业业务应用程序包括自主开发的应用程序(例如.NET、Java、Python、SQL、NoSQL DB 等)、第三方/现成产品(例如 Salesforce、HubSpot 等)和集成(例如 Stripe、PayPal 等)。自行开发的应用程序托管在本地数据中心或由 AWS、GCP 或 Azure 等云供应商托管。现成的产品基于 SaaS 或通过 API 集成。高度分布式的应用程序跨越数十个和数百个节点、服务和实例。
• 工具过多:企业应用程序使用各种工具来监控应用程序运行状况和性能(例如New Relic、Data Dog 等)、错误日志记录(例如Splunk)以及云供应商提供的工具(例如CloudWatch)。这些产品在功能上重叠,维护和管理这些工具(采购、学习曲线等)可能很麻烦。
• 不可预测的数据量:想象一下根据应用程序流量、使用情况、对外部产品的依赖性等收集的可观察性数据(日志、跟踪、指标)的数量。整合这些数据源所需的数据存储量可能会快速增长。控制。
• 定价复杂:这些供应商产品还提供不同的定价模型,例如按主机收费(例如Splunk、Data Dog、Dynatrace)、按用户收费(例如New Relic)、按摄取收费(例如SumoLogic、AppDynamics)。定价模型的复杂性使得比较供应商之间的总拥有成本 (TCO) 并确定适合您的要求和预算的正确工具具有挑战性。
为什么选择开源可观测平台?
基于开源的可观测性工具旨在提供一种标准的、与供应商无关的方法,用于摄取、转换数据并将数据发送到可观测性后端。开源可观察性工具可以作为节省许可成本的替代方案,并将多个 APM 工具与适合您的要求和预算的工具整合在一起。
但是,维护开源系统可能需要付出努力来设置和维护,并且会增加您的初始运营成本。但从长远来看,您将节省许可费用并避免供应商锁定和合同协议。
Gartner 预测,到 2025 年,70% 的新云原生应用监控将使用开源工具而不是特定于供应商的代理来提高互操作性,并且 70% 的新云原生应用将采用 OpenTelemetry 来实现可观察性而不是供应商。特定代理和软件开发工具包 (SDK)。
使用开源生态系统扩展可观测性
可观察性的开源格局非常动态。有多个云原生计算基金会 (CNCF) 开源工具用于可观察和监控。这篇文章将主要关注 OpenTelemetry 框架和 LGTM 技术堆栈。
OpenTelemetry:
上述“工具太多”的挑战给遥测数据收集带来了新的挑战。每个工具供应商都有自己的 API、SDK、日志、指标和跟踪代理和收集器。我们需要使用 OpenTelemetry 框架的统一遥测收集来创建和管理遥测数据,例如日志、跟踪和指标。
CNCF 赞助的 OTEL 项目提供了一套统一的与供应商无关的 API、SDK 和工具,用于生成和收集遥测数据并将其导出到各种分析工具。您可以获得每种编程语言的一个 API 和 SDK 来提取应用程序的可观测性数据、一个标准收集器、一个传输协议 (OTLP) 等。
LGTM:
最流行的基于开源的可观测性和监控是使用 LGTM 技术堆栈实现的。
在LGTM 堆栈中,我们利用:
• Loki 用于日志聚合
• Grafana 仪表板用于遥测可视化
• Tempo(或 Jaeger)用于跟踪聚合
• 托管 Prometheus 用于指标聚合
结论
可观察性是指整个系统的完整可见性以及将业务指标与技术数据联系起来。监控是为了了解事情是否正常工作,而 AIOps 是为了从这种可见性中获取意义。可观察性和监控对于确保应用程序顺利运行并满足客户 SLA 至关重要。总之,通过投资开源 OTel 框架和 LGTM 工具,SRE 团队可以有效监控其应用程序并深入了解系统行为和潜在问题。这些工具提供成本效益和定制以满足特定要求。它促进供应商中立,这对于避免供应商锁定至关重要。
相关文章:
构建开源可观测平台
企业始终面临着确保 IT 基础设施和应用程序全年可用的压力。现代架构(容器、混合云、SOA、微服务等)的复杂性不断增长,产生大量难以管理的日志。我们需要智能应用程序性能管理 (APM) 和可观察性工具来实现卓越生产并满足可用性和正常运行时间…...
SketchUp Pro 2024 for mac 草图大师 专业的3D建模软件
SketchUp Pro 2024 for Mac是一款功能强大的三维建模软件,适用于Mac电脑。其简洁易用的界面和强大的工具集使得用户可以轻松创建复杂的3D模型。 软件下载:SketchUp Pro 2024 for mac v24.0.483 激活版下载 SketchUp Pro 2024 for Mac支持导入和导出多种文…...
通过 Cookie、Redis共享Session 和 Spring 拦截器技术,实现对用户登录状态的持有和清理(三)
本篇内容对应 “2.4 生成验证码” 小节 和 “4.7 优化登陆模块”小节 视频链接 1 Kaptcha介绍 Kaotcga是一个生成验证码的工具。 你的网站验证码是什么? 在我们这个牛客论坛项目,验证码分为两部分 给用户看的是图片,用户根据图片上显示的…...
学习 Git 基础知识 - 日常开发任务手册
欢迎来到我关于 Git 的综合指南,Git 是一种分布式版本控制系统,已经在软件开发中彻底改变了协作和代码管理方式。 无论你是经验丰富的开发者还是刚开始编程之旅的新手,理解 Git 对于正确掌控代码、高效管理项目和与他人合作至关重要。 在本…...
pip和conda 设置安装源
pip和conda 设置安装源 conda查看 channels添加 channels移除 channelschannels 配置文件 pip查看 index-url添加 index-url移除 index-urlindex-url 配置文件 常用源 conda 查看 channels conda config --show channels添加 channels conda config --add channels https:/…...
数据分析之Logistic回归分析中的【多元有序逻辑回归】
1、定义 多元有序逻辑回归用于分析有序分类因变量与一个或多个自变量之间的关系。有序逻辑回归适用于因变量具有自然排序但没有固定间距的类别,例如疾病严重程度(轻度、中度、重度)或调查问卷中的满意度评分(非常不满意、不满意、…...
路由器拨号失败解决方法
目录 一、遇到问题 二、测试 三、解决方法 (一)路由器先单插wan口设置 (二)mac地址替换 (三)更改路由器DNS 一、遇到问题 1 .在光猫使用桥接模式,由路由器进行拨号的时候,出现…...
Oracle 中 where 和 on 的区别
1.Oracle 中 where 和 on 的区别 on:会先根据on后面的条件进行筛选,条件为真时返回该行,由于on的优先级高于left join,所以left join关键字会把左表中没有匹配的所有行也都返回,然后生成临时表返回,执行优先级高于…...
NLP学习路线总结
自然语言处理(Natural Language Processing,NLP)是人工智能和语言学领域的一部分,它旨在让计算机能够理解、解释和生成人类语言。NLP学习路线可以大致分为以下几个步骤: 1. 基础知识准备 - 计算机科学知识:…...
AI绘图cuda与stable diffusion安装部署始末与避坑
stable diffusion的安装说起来很讽刺,最难的不是stable diffusion,而是下载安装cuda。下来我就来分享一下我的安装过程,失败了好几次,几近放弃。 一、安装cuda 我们都知道cuda是显卡CPU工作的驱动(或者安装官网的解释…...
OpenCv —— cv::VideoCapture设置摄像头图像格式为“MJPEG“
背景 今天恰巧同事有台USB摄像头,她想要在Windows系统下通过OpenCV读取该摄像头宽高为1080x768、帧率为60的视频,用来做图像算法处理。但无奈通过网上OpenCV教程 读取的视频对应尺寸的帧率仅为10帧左右,根本无法满足使用要求。于是作者通过本篇文章介绍如何解决,欢迎交流指…...
Qt事件学习案例
视频链接 https://www.bilibili.com/video/BV18B4y1K7Cs?p7&spm_id_frompageDriver&vd_sourcefa4ef8f26ae084f9b5f70a5f87e9e41bQt5跟着视频做即可,Qt6部分代码需要改动,改动的地方注释有写 素材 百度云 链接:https://pan.baidu.com/s/158j…...
无锡国家集成电路设计中心某公司的单锂小电机直流电机H桥驱动电路
H桥驱动 L9110S是一款直流电机驱动电路,适合单节锂电池应用。输出电流0.4A。价格约3毛。 推荐原因: 某些人应该知道这个地方,大多数人应该不知道这个地方,所以推荐一下。 这个地方去过几次,某公司与某方走的“近”&…...
数据分析 -- numpy
文章目录 numpy库简介简介特点 numpy操作数组创建数组属性数组变更数据计算 numpy库简介 简介 开源的Python库,它提供了高性能的多维数值(numpy.ndarray)计算能力;由“Numerical Python”缩写而来,并且它是Pandas库的…...
开源项目生存现况:xz投毒事件引发的思考与GNU tar维护挑战
(首发地址:学习日记 https://www.learndiary.com/2024/04/xz-tar/) 嗨,大家好!我是来自淘宝网“学习日记小店”的 learndiary,专注于 Linux 服务领域。今天我要和大家谈谈近期备受瞩目的 XZ 供应链投毒事件…...
前端开发语言有哪些
随着互联网的迅猛发展,前端开发已经成为了一个炙手可热的职业。对于初学者来说,了解前端开发所使用的语言是非常重要的。那么,前端开发语言有哪些呢?本文将为您一一介绍。 一、HTML HTML(HyperText Markup Language&…...
速盾:cdn加速https额外收费吗?
CDN(内容分发网络)是一种通过在全球各地部署服务器来提供高速互联网内容传输的技术,它可以加速网站的访问速度,提高用户体验。而HTTPS(超文本传输安全协议)是一种通过加密技术保护网站数据传输安全的协议。…...
【蓝桥杯嵌入式】13届程序题刷题记录及反思
一、题目分析 考察内容: led按键(短按)PWM输出(PA1)串口接收lcd显示 根据PWM输出占空比调节,高频与低频切换 串口接收(指令解析)【中断接收】 2个显示界面 led灯闪烁定时器 二…...
C++类 单例模式
例子 请看如下的类和调用: 在您提供的代码片段中,CPathPlanMan 类使用了一个单例模式,这意味着这个类只需要一个实例,并且提供了全局访问点来获取这个实例。这通常用于控制对一个类实例的访问,尤其是在创建实例代价昂…...
prompt 工程案例
目录 prompt 工程是什么? 案例 vllm 推理加速框架 prompt 工程是什么? prompt:提示词,也就是我们使用网页版输入给大模型的内容就叫 prompt,那什么是 prompt 工程呢? 简单理解其实就是利用编写的 prom…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
