随着业务方对应用稳定性的要求越来越高,我们愈发的希望能在新版本上线后尽早地监控线上发生的异常问题,并在感知到异常后及时的执行对应的熔断策略。
本文将带读者先了解灰度监控与日常监控的异同,指出做好灰度监控的关键点。
灰度监控 vs 日常监控
灰度监控与日常监控是软件开发和运维中两种不同的监控策略,每种策略都有其特定的应用场景和目的。
灰度监控
灰度监控专注于灰度发布的过程中。灰度发布是一种软件发布策略,它允许你将新版本的软件逐渐推送给一小部分用户,以确保新版本在完全发布前的稳定性和性能。
-
目的:灰度监控的主要目的是及时发现新版本可能引入的问题,以最小化对用户体验的负面影响。它帮助团队收集关于新版本表现的数据,比如性能指标、错误率、用户反馈等。
-
特点:灰度监控要求对选定的灰度用户群进行密切跟踪和分析,通常涉及更高的数据采样率和更细粒度的监控。此外,灰度监控可能需要跟踪一些特定的指标,这些指标对于评估新版本的表现尤为重要。
日常监控
日常监控,又称为常规监控,是持续进行的监控活动,旨在确保系统的整体健康和性能。它覆盖了软件的全部版本,而不仅仅是新发布的版本。
-
目的:日常监控的目的是确保系统稳定运行,及时发现和解决问题,从而保证用户体验。它包括对系统性能、可用性、安全性等关键指标的监控。
-
特点:日常监控涉及的指标范围更广,监控策略更为全面和长期。它通常包括基础设施监控、应用性能监控(APM)、日志监控等多个方面。
对比
-
范围:灰度监控通常针对特定的用户群和新版本;日常监控覆盖整个系统和所有版本。
-
目标:灰度监控旨在评估新版本的稳定性和性能,最小化发布风险;日常监控旨在保持系统的整体健康和稳定性。
-
细节关注点:灰度监控可能更关注与新版本相关的特定指标,而日常监控更注重全面的系统健康。
-
时间周期:灰度监控通常在新版本发布前后的短期内更加密集;日常监控是持续进行的。
灰度监控和日常监控都是保障软件质量和用户体验的重要手段,但它们关注的重点、应用的范围和目标有所不同。在软件开发和运维中,合理地结合使用这两种监控策略,可以有效地提高软件的稳定性和质量。
如何真实评价灰度的用户占比
我们灰度的时候,一般都会按照一定的比例进行灰度。比如按照 15% 、45%、100% 三个阶段进行灰度。如果新版本灰度放量了 10% ,请问线上用户真实的新版本使用量就是 10% 吗?
当进行灰度发布时,设定一个特定的用户占比(例如 10%)意味着系统或服务的新版本将被推送给这一比例的用户。然而,线上用户真实的新版本使用量可能并不会精确地等于 10%。这里有几个因素可能影响实际的使用率:
-
用户活跃度:被选中进行灰度的用户可能不是全时段活跃的。如果被选择的用户中有一部分在灰度期间没有活跃使用服务,实际上新版本的使用率会低于 10%。
-
流量波动:即使是活跃的用户,他们的使用模式也可能不均匀。用户可能会在某些时间段内更活跃,这可能会导致新版本的使用量在不同时间有所波动。
-
灰度规则:灰度规则可能根据用户ID、地理位置、设备类型等标准来选择用户。这些规则可能导致实际的用户分布和预期的 10% 有所偏差。
-
缓存和会话:用户的会话和服务器的缓存策略可能会导致一些用户在灰度期间仍然接触到旧版本的内容,特别是在灰度的初期阶段。
-
用户行为:用户可能会在多个设备上使用服务,或者在灰度期间改变他们的使用习惯,这也会影响新版本的实际使用量。
为了更精确地了解线上用户真实的新版本使用量,通常需要实时监控系统的关键指标,如用户的版本分布、活跃用户数、会话数等。
如何准确评估新版本在用户中的占比呢?
首先,做好灰度版本追溯。确保你的应用或服务可以追踪用户所使用的版本号。这可以通过日志、分析工具或内嵌在应用中的追踪代码来实现。比如每次发布的版本,都有一个唯一的版本号。然后我们的监控系统可以根据这个版本号进行筛选分析。
这样,我们就可以监控新版本的活跃用户数与总活跃用户数的比例。不过需要我们实时监控,因为不同时间端新版本的用户占比是不同的。
如何更好地观测灰度版本的质量
如果灰度版本的错误数为A,所有版本的错误数为 B。灰度版本的UV数为C,所有版本的UV为 D。那么 A/B - C/D 指的是什么?
指的是灰度版本的错误率与其UV占比的差值。
如果灰度版本的错误数为A ,所有版本的错误数为 B,灰度版本的UV数(独立访客数)为 C ,所有版本的UV为 D,那么表达式 A/B -C/D 可以用来比较灰度版本的错误率与其在所有用户中的占比。
-
A/B 表示灰度版本中的错误数占所有版本错误总数的比例。
-
C/D示灰度版本的UV数占所有版本UV总数的比例。
当你计算 A/B -C/D 时,你实际上是在评估灰度版本的错误率相对于其用户占比是否过高或过低。
-
如果差值大于 0,这意味着灰度版本的错误在所有错误中所占比例高于灰度版本用户在所有用户中的比例。这可能表明灰度版本的质量低于其他版本。
-
如果小于 0 ,这意味着灰度版本的错误占比低于灰度版本用户的占比,这可能表明灰度版本的质量相对较高。
-
如果 等于 0,则灰度版本的错误率与其用户占比一致,这可能表明灰度版本的质量与其他版本相当。
这个比较可以帮助你评估灰度版本是否有比其他版本更多的问题,或者是否表现得更好或更差。通过这种方式,你可以对灰度版本的稳定性和用户体验有一个更清晰的了解,并据此做出是否应该继续扩大灰度范围的决策。
如果灰度版本的错误数为A,所有版本的错误数为 B。灰度版本的UV数为C,所有版本的UV为 D。那么 A/C - B/D 指的是什么
表达式 表示的是灰度版本的每用户错误率与所有版本的每用户错误率的差异。具体来说:
-
A/C表示的是灰度版本的每用户错误率,即在灰度版本中,平均每个独立访客(UV)遇到的错误数。
-
B/D表示的是所有版本的每用户错误率,即在所有版本(包括灰度版本和非灰度版本)中,平均每个独立访客遇到的错误数。
通过计算 ,你可以得到:
-
如果结果为正数,这意味着灰度版本的每用户错误率高于所有版本的平均每用户错误率。这可能表明灰度版本引入了新的问题,或者其问题比其他版本更严重。
-
如果结果为零或接近零,这表明灰度版本的每用户错误率与所有版本的平均每用户错误率大致相当。这可能意味着灰度版本的稳定性与其他版本相似。
-
如果结果为负数,这意味着灰度版本的每用户错误率低于所有版本的平均每用户错误率。这是一个积极的信号,表明灰度版本可能比其他版本更稳定,或者对用户体验的影响较小。
这个差异指标可以帮助你衡量灰度版本相对于整体版本的错误率表现,从而决定是否继续推广灰度版本或需要进一步调查和修复问题。
# 总结
灰度监控是评估新版本稳定性和性能的重要手段,它可以帮助我们及时发现并解决问题,以确保用户体验不受影响。相比之下,日常监控则更为全面和持续,关注整个系统的健康状况。
对于灰度监控的关键点,我们需要关注以下几个方面:
-
细粒度的监控:对灰度版本采用更高的数据采样率,监控更细致的性能指标,以便捕捉到潜在的问题。
-
实时数据分析:实时分析用户行为和系统性能数据,以便于及时发现异常,并迅速响应。
-
版本追踪:确保能够追踪到每个用户所使用的版本号,以便准确评估新版本的用户占比和行为。
-
错误率和用户占比的对比:通过对比灰度版本的错误率与其用户占比,我们可以评估新版本相对于旧版本是否有更多的问题。如果 A/B -C/D 大于零,则可能表明灰度版本的质量低于预期。
-
每用户错误率的分析:通过计算 A/C - B/D ,我们可以对比灰度版本的每用户错误率与整体的每用户错误率,从而更好地理解新版本的影响。