SRE:可观察性:Metric命名空间与结构(一)

简介: > 原文:https://medium.com/dm03514-tech-blog/sre-observability-metric-namespaces-and-structures-12ffcf5a5bdc 结构化的metric命名空间对于需要快速获取信息的故障场景非常重要。为了能支持广泛的查询和扩展场景,需要仔细考虑metric名称和维度。我发现其中一种为灵活metric建模的方式就是

原文:https://medium.com/dm03514-tech-blog/sre-observability-metric-namespaces-and-structures-12ffcf5a5bdc

结构化的metric命名空间对于需要快速获取信息的故障场景非常重要。为了能支持广泛的查询和扩展场景,需要仔细考虑metric名称和维度。我发现其中一种为灵活metric建模的方式就是将他们认为是树。将metric想象成树可以有以下好处:查看特定子集的数据,根据其子集定义度量基准与设定阈值。这些度量命名空间的属性可以进一步回答更多具体的问题并可以下钻到数据的子集并像看度量指标一样观察度量指标的组成部分。这些概念很熟悉,因为他们是想Prometheus与DogStatsD这种云原生监控解决方案的第一级想法。

什么

度量空间是概念意义上的度量指标活着的空间。他们的边界通常是一个数据库或一个账号:
image.png
度量空间不只是度量指标存活的地方,也包含度量空间的结构。正确的命名与结构可以有很大的好处。以上图的度量命名空间没有明显的结构。每个度量指标都是浮在这个空间上的。他们除了表示他们存在相同的度量空间中外,没有任何其他内容。在没有结构化的设置里每个度量指标都要单独使用。如果要看一个服务的http请求的频率需要直接单独访问 service_N_http_requests_total。

假设看到请求通过服务所有实例的总量很有用。在以下的例子中如果建了一个新服务会怎么样?

image.png

如果加和是在service_1和service_2计算的,当增加service_3时,他们之间没有什么联系;没有可度量的结构。请求总数没有反应真实的请求总量,只有service_3_http_requests_total被手工加上去后才行。下图表示了这个过程:

image.png

度量树

一个对于无结构空间的可用方式是用metric命名空间组成一种显式的结构,以下图标说明了这种树的结构:

image.png

在Prometheus和Datadog度量结构可以使用Label和tags创建。使用tag,可以动态扩展总请求量;当一个新的service增加时,他可以通过树指向到主度量指标。

在prometheus,得到通过所有服务的每秒的频率可以看下图:

image.png

通过结构化的命名空间可以动态计算通过树根节点的总量(在这个例子计算了每个单独服务作为一个度量指标)。

用它的子指标来定义度量指标

用一个树,每一个度量的维度(比如"service"标签)包含了节点独立的请求频率。使用一个度量命名空间,不只是它的总频率可以观察,每个子服务实例都可以被可视化:

image.png

对命名空间的数据建模,可以通过对所选维度的组合来组合父数据。

增加数据的子集
命名空间也支持将数据的特定子集的明细。树可以回答这种问题: 在灰度机器上所有成功http请求的p99(译者: p99, p95都是术语,p99表示过去的10秒内最慢的1%请求)延迟是多少?

image.png

上面这个树对概念空间进行了建模同时没有对度量指标如何存储在磁盘上建模。使用一种良好定义的度量空间可以对任何维度进行扩展。

以下图展示了这个树的p99与p50的图形化:

image.png

通过以上技术可以拿到任意度量维度更具体的数据: 在灰度部署的每一个机器上所有成功http请求的p99延迟是多少?

image.png

以下展示了prometheus对于扩展这个机器指标machine_id的支持:

image.png

由于这个指标在顶层指标上有结构化的定义所以可以使用machine_id进行动态扩展。

比例(Ratio)规则

比例是另一种在一个非结构化空间中将数据建立联系的方式。这十分有用,并且是由于google SRE而备受欢迎的计算SLO可用率与错误率的基础。 比例让用户可以显式的关联指标,完成一个度量指标结构。这些连接经常被表示为百分比,例如可用性可以被计算成 成功请求数/总请求书,而错误率可以计算成错误请求数/总请求数。其他重要的比率是多种状态中的一种状态出现了多少。

为了解释这个,我们假设一个应用执行的一个请求可以产生多种状态,例如 cache_hit:true与cache_miss:false。要看缓存的命中率我们按如下方式结构化数据:

image.png

这个图标示了缓存命中率与失败率的例子。每个请求要么命中要么失败。而每秒大约有160个请求:

image.png

下图关联了总请求频率与缓存命中频率,展示了50%的缓存命中率:

image.png

这建立了一种逻辑关
系,而他么不是直接或者有具体关系的,在datadog与prometheus可以表示为算术运算。用这种方式在查询级别任何两种度量都可以被关联上。

目录
相关文章
获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)
获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)
获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)
|
5月前
|
人工智能 搜索推荐 C++
面向少儿的AI英语背单词APP
专为3-12岁儿童打造的AI英语背单词APP,以多感官沉浸体验替代机械记忆:AI实时生成兴趣定制插图(如恐龙跑“run”)、儿童专属语音纠音+趣味反馈、动态遗忘曲线智能复习。游戏化闯关、听音辨物、拼词气球等交互设计,兼顾科学性与童趣,首版聚焦“AI生图+口语跟读”闭环。(239字)
|
4月前
|
监控 安全 测试技术
深度集成无影云桌面API实现默认截屏权限的动态防御体系
本文揭示截屏成数据泄密“暗门”,剖析其隐蔽性强、取证难、成本低三大特征,指出传统DLP忽视屏幕出口的短板。基于阿里云无影云桌面API,提出“动态截屏防御”方案:依据文档加密状态实时启停防截屏、叠加明/盲水印、录屏审计,实现安全与效率平衡,践行零信任“数据在哪,防护就在哪”理念。(239字)
数据传输的基本概念
本内容介绍了带宽、数据传输速率和吞吐量的概念及三者关系。带宽是通信链路的最大传输能力,决定理论上限;数据传输速率表示实际传输速度,受多种因素影响可能低于带宽;吞吐量则是实际测量的传输速率,反映网络真实性能。用公路类比:带宽是宽度(容量)、数据传输速率是速度、吞吐量是实际通行量。
2655 7
|
9月前
|
存储 弹性计算 Linux
2026年阿里云服务器新手操作手册:配置选型、环境搭建与运维管理指南
在数字化业务部署中,云服务器凭借弹性扩展、成本可控的优势,已成为个人开发者与企业搭建网站、运行应用的核心选择。阿里云 ECS(弹性计算服务)作为国内主流云服务产品,地域节点丰富、配置灵活,但新手常因不熟悉购买路径与参数选择陷入困惑。本文从购买前准备、核心购买方式、配置选择要点到控制台基础操作,系统梳理新手所需的全流程知识,助力高效完成上云部署。
|
数据采集 前端开发 JavaScript
轻量化前端新趋势:拥抱 React Server Components
轻量化前端新趋势:拥抱 React Server Components
480 23
|
监控 安全 网络安全
网络安全新姿势:多IP配置的五大好处
服务器配置多IP地址,既能提升网络速度与安全性,又能实现多站点托管和故障转移。本文详解多IP的五大妙用、配置方法及进阶技巧。从理论到实践,合理规划IP资源,让服务器性能跃升新高度。
474 2
|
存储 Java 程序员
菜鸟之路Day26一一Maven
本文由blue撰写,发布于2025年3月25日,主要介绍Maven工具的使用。Maven是Apache旗下的开源项目,用于管理和构建Java项目,基于项目对象模型(POM)概念。文章详细讲解了Maven的安装配置、IDEA中集成Maven的方法、依赖管理(包括依赖配置、传递与排除、依赖范围)、以及Maven的生命周期(clean、default、site)。通过学习,读者可掌握Maven的基本功能及其在项目中的应用。
851 12
|
存储 虚拟化 数据安全/隐私保护
Hyper-V系统后装,快速上手
Hyper-V是微软的虚拟化技术,支持在Windows系统上创建和运行虚拟机。适用于Windows 10/11专业版及以上版本,需确保CPU支持虚拟化并在BIOS中开启。安装Hyper-V可通过控制面板或设置中的可选功能完成,安装后需重启。使用Hyper-V管理器新建、配置和启动虚拟机,完成操作系统安装。建议启用动态内存、选择合适的虚拟硬盘类型和网络配置,并定期更新以确保安全性和性能。
|
Java 图形学 Python
用Python和Pygame打造绚丽烟花效果+节日祝福语
本文介绍了一款基于Python和Pygame库实现的烟花效果程序,模拟烟花发射、爆炸及粒子轨迹,结合动态文本显示祝福语,营造逼真的节日氛围。程序包括烟花类、粒子类、痕迹类和动态文本显示功能,通过随机化颜色、速度和粒子数量增加效果多样性。用户可以看到烟花从屏幕底部发射、上升并在空中爆炸,伴随粒子轨迹和动态祝福语“蛇年大吉”、“Happy Spring Festival”。文章详细解析了核心代码逻辑和技术要点,帮助读者理解如何利用Pygame库实现复杂视觉效果,并提供了未来改进方向,如优化性能、增加特效和增强交互性。
1863 20
用Python和Pygame打造绚丽烟花效果+节日祝福语

热门文章

最新文章