在故障排除和事后分析中,为了使数据具有价值,属性名称需要在每种遥测类型、工具和服务中保持一致。
译自Top 5 Best Practices for Naming Opentelemetry Attributes,作者 Carl Brahms 是Chronosphere客户成功团队的成员,拥有多年的监控、观测和事件管理平台经验。他对三件事情充满激情:协助团队发现实时数据洞察、生成式人工智能以及…
当涉及使用OpenTelemetry(OTel)分布式追踪数据时,仅仅收集数据是不够的;您需要采取措施确保数据易于查找并与其他数据相关联。这就是制定良好属性命名标准的目的。
有效的属性命名不仅仅是一种最佳实践;它是一项关键要求。为了使数据在故障排除和事后分析中具有价值,属性名称需要在每个遥测类型、每个工具和每个服务中保持一致。如果缺乏这种一致性,您的 OTel 数据的实用性将大大降低。
OTel 的语义约定和最佳实践使数据在云原生环境中更加互连、可移植和可用。上下文数据是可观测性团队中最有益的数据类型,而最佳实践确保您可以最大化数据的使用和效果。
这些准则和最佳实践将有助于使您的组织从收集的追踪数据中获得最大的利益。
建立 OTel 属性的有效采用
要实施有效和有用的 OTel 属性,早期涉及所有受影响的团队至关重要。为了取得成功的采用,您应考虑组织研讨会,让每个人都了解在整个堆栈的所有层面上都有清晰一致的命名标准带来的积极结果。一致性创造清晰度,在事件响应和调试过程中至关重要。
得到软件和系统架构师的支持,通过说明命名标准的好处并专注于与贵公司和应用程序相关的领域。
然后起草一份详细的文件,概述命名约定,包括语法、结构和示例。制定一个修改标准的过程,通过反馈改进它,并在事后处理发现的任何空白。
命名 OTel 属性的最佳实践
有五个主要的最佳实践,作为您的 OTel 属性命名约定的一部分,以充分利用您的可观测性数据。
1. 使用语义和描述性属性
语义名称有助于确保高效的根本原因分析。
示例:app.service.version
使用描述性的属性名称,您可以轻松查看资源并具备了解其内容和关联性的所有必要上下文。要了解现有语义约定的出色解释,请访问官方规范,您可以在那里学到一般和系统属性,并按信号或操作类型(如HTTP或数据库)组织它们,包括技术特定的约定。
2. 使用共享库
创建已知属性的库的实践有助于对您关心的数据进行编目,其文档记录了对客户而言重要的数据。
当多个团队将共享属性时,标准化它们以避免差异至关重要。跨团队的属性命名约定差异可能使关联数据变得困难或根本不可能。例如,如果后端团队将延迟命名为latency,而前端团队将其命名为duration,查询比较或聚合跨服务的延迟将无法正常工作。标准化的属性使团队能够利用共享资源(比如仪表板或警报),并允许您在多个系统和服务之间获得洞见。
3. 创建自定义属性
有时,您可能需要为公司或应用程序的特定方面创建新属性。在这样做之前,最好先查阅 OpenTelemetry属性注册表,以确保您需要的属性不存在。一旦确认没有与您需要的匹配的属性,您就可以创建一个新属性。在创建过程中,遵循OTel 属性命名指南中的提示尤为重要,特别是关于使用前缀的部分。
在属性名称中使用前缀有助于区分您的自定义属性名称与标准名称、其他项目选择的名称、与您合作的供应商或公司选择的名称。如果自定义属性意外地与另一个属性共享名称,可能会导致错误的结论和决策、有缺陷的仪表板和警报,并使跟踪事务的流程或状态变得困难。
为避免与其他项目、供应商或公司发生冲突,明智的做法是考虑使用基于公司域名的前缀,以相反的顺序,例如io.chronosphere.myapp。

即使您确定该名称绝对不会在您的应用程序之外使用,仅在公司内部使用,前缀仍然是防止冲突的重要手段。考虑使用与您的应用程序或项目相关联的前缀名称,例如bluebook.widget_count。
你可能会想要利用属于 OpenTelemetry 或其他项目或供应商的现有前缀。共享前缀可能导致后续发生名称冲突,使您和同事在事故期间努力找到将他人的数据与您的数据分开的方法。
4. 注重服务水平
在决定要应用于您的跟踪的属性时,请记住您的应用程序的重点是为客户提供高质量的软件体验。这一使命被编码在您服务/应用程序的服务水平目标(SLOs)中,可能以 99.999% 的正常运行时间期望的形式存在。从SLO中,您可以缩小到哪些服务水平指标(SLIs)最好支持或最有可能威胁实现 SLOs。您的属性应支持您的服务水平。
例如,如果您在流量的不同部分之间有延迟 SLO,使用提供段维度的属性,如ProductID、FeatureID 或 RegionID,可以帮助您相应地组织警报。
5. 思考新的用例
将属性视为分布式系统中模式匹配的根源。如果您想要调查跨类别和类别之间的关系,属性是排序和比较的工具。
逐步尝试不同的属性,看看会有什么变化。让我们考虑一个例子。
你的高级客户是否因发票错误而联系支持?难道订单服务不是几分钟前部署了新版本吗?对比属性,例如service.version和membership.level,对服务名称为 order 的错误指标进行关联,可以帮助确定高级会员的升高错误率是否与订单服务的新版本高度相关。
有用的属性类型
在制定 OpenTelemetry 的标准属性时进行了大量慎重考虑,而这个列表一直在不断发展。尽管这里无法提及所有类别,但在制定内部命名标准时探索现有内容并强调在调查回归时对团队有用的内容可能会很有帮助。以下是注册表中的一些示例:
server.address: 服务器 的地址。
destination.address:目标的地址。
network.carrier.name:网络承载方的名称。
code.filepath:代码的文件路径。
那事件呢?
有一种特殊类型的跨度属性称为跨度事件日志经常被忽视。跨度事件与日志非常相似,但它们是放置上下文信息的好地方,这些信息在故障排除事务问题时可能非常有用。
在考虑要放入跨度事件日志的内容时,应清理任何私人用户数据的有效负载/添加跨度内发生的任何事件,包括所发生事件的简要摘要、任何异常或完整的错误消息,以及额外的上下文信息。
避免的属性实践
我们一直在关注属性的“做法”,但这里更仔细地看一下一些要避免的属性陷阱。
在 OpenTelemetry 文档中还有更多有用的见解和建议,因此在制定属性标准时建议查阅最新的规范。
结论
追踪数据收集是观测性的一个必要部分。但这需要建立一套流程,以确保数据是有用的、可访问的,并且具有洞察力。命名规范需要一些前期工作,但通过采纳这些最佳实践 —— 从确保语义清晰和维护统一库到了解数据、与服务水平保持一致,以及预测新的用例 —— 您的团队可以提升遥测的效用。
这种方法不仅简化故障排除,还帮助您在组织内建立一个有效的观测文化。这项工作的结果是一个充满可访问洞察的丰富 OTel 数据集,使更加智能、更加迅速的决策成为可能。
梦幻西游中给宝宝打书有什么技巧
20亿MHB作为研究费用所得到的宝宝打书经验,不敢说权威,却颇具代表性,正所谓实践代表真理.先排弃目前的一些比较流行的说法:1.宝宝打书要看时辰. 可以很负责任的告诉大家,宝宝打书和时辰无关.2.宝宝打书要看地点. 可以很负责任的告诉大家,宝宝打书和地点无关.3.高级兽决顶相同技能的低级兽决几率大. 可以很负责任的告诉大家.宝宝打书和高低互顶无关.4.各种吸收兽决与其他兽决一样只是代表一个技能而已,所以可以很负责任的告诉大家.不存在吸收兽决不容易打掉的问题,换句话说没有哪种兽决是不容易打掉的,顶掉技能和技能的类型无关.那么好了排除这些以后我们慢慢探讨宝宝打书到底能不能不再象猜大小一样闭上眼睛碰运气呢?有没有可以让我们有或多或少的掌控呢? 答案是确定的,有!宝宝打书就是梦幻程序的计算.我们抛开这些复杂讨厌的公式不说,用简单的句子和大家讨论概率的问题.举例说明:一个4J幽灵,技能排列是 死亡 高反 鬼魂 高飞,打高毒顶掉其中一个JN的几率为25%. 在大量的实践证明得到的答案却不是这样的,那么顶掉每个JN的几率是多少呢? 比较贴切的是5%掉死亡,50%掉高反 ,30%掉鬼魂,15%掉高飞. 看到这样的比例后我们就可以大大降低顶掉死亡的几率.以上这些只是宝宝打书中最基础的东西,经常给宝宝打书的朋友,应该有所感觉.好了我们接着往下讨论,假如高毒顶掉了高反,假设目前技能排列为 死亡 高毒 鬼魂 高飞,那么打下一本兽决顶掉高毒的几率也是最大的,一般打完第一本书其他技能位置不变的情况很少出现。 常见的是打完高毒后技能排列为死亡 鬼魂 高飞 高毒 。 这只是打书变化的一种,也是最为常见的一种,如果在实际打书中出现的这样的排列,那恭喜你,可以继续给宝宝打书。 小结:很大程度上宝宝技能位置的第一个与最后一个不容易打掉,当给宝宝打了一本书时,如果必要技能位置不变,其他技能有所改变的话,可以继续打书,必要技能打掉的几率是最小的.打书过程中会遇到的另外一种情况,也拿上面的幽灵做例子,如果上高毒后 技能排列为 死亡 鬼魂 高飞 高毒 继续打书高幸运.打完后技能排列为 死亡 高幸运 高毒 鬼魂 .高幸运顶掉了高飞,第三位置提到了第二,高毒顺势提到了第三,鬼魂被挤到了最后,死亡位置不变.我们再打第三本书高神佑,打完后高神保顶掉了第三位置的高毒,其他技能位置不变,排列为 死亡 高幸运 高神佑 鬼魂 .显然这样的宝宝是我们不能接受的,再打第四本书高毒,高毒顶掉了高幸运,其他JN位置还是不变,排列为死亡 高毒 高神佑 鬼魂 .如果出现了这样情况我们称之为短暂循环,再上第5本书的时候,四个技能顶掉几率就会发生变化,20%掉死亡 10%掉高毒 40%掉高神佑 30%掉鬼魂,再打三技能宝宝时候这种现象表现的最为直接,导致结果为这本书顶了上本书,下本书又顶了刚打上的.这种循环是短暂的,在顶掉相同3本书后,循环结束,很大几率会顶掉其他的技能.这就能看出了网易编程的一个思路,多技能宝宝打书势必会经过若干个循环,目的是增加难度,浪费更多的书.也就是大家平时说的,宝宝打书就是砸钱,钱砸多了自然就出的原因,假如没有这样的循环,宝宝打书将会容易很多,也就体现不出好技能宝宝的珍贵.所谓事情都有好环两个方面,当我们认识到有这样的循环,那我们就有目的的去加以避免,就不会再象猜大小一样的赌博.在游戏中,很难看到一个人在很短的时间内把宝宝技能打好,当然也有一次费了很多书打好的,经常会看到经过了很长的时间终于打好了一个宝宝,其实这是网易给我们留了一条路.大家一定会发现维护后宝宝的技能位置改变了,对了就是这样,维护后宝宝以前的循环结束,技能位置重新排列,顶掉的技能位置比率恢复,打书将会进入下一个循环,不好的技能在维护后改变到了好的位置后,那么我们就能把握住在最有利的时机打书,争取把风险降到最低.在重新排列的过程中不知道大家有没有注意到位置靠前或者靠后的技能一般会是比较贵的兽决,比如前面高级比杀,后面高级隐身等.按照前面的打书几率来说,这些位置在出现循环前是最不容易被顶掉的地方,这算是网易有点人情味吧.小结:多技能宝宝打书会进入若干个循环,循环现象体现在来回顶掉刚上的兽决,其他技能位置并不改变.当一个宝宝进入短暂循环后,顶掉相同2-3本书后循环将要结束,其他位置技能都有可能被顶掉,顶掉的几率发生变化,第一位置和最后位置不容易顶掉不再成立.在给带有死亡 华山 夜舞 等没有此类兽决宝宝打书的时候,特别注意此时再打书将会非常危险很大可能将其顶掉.我们的办法是等维护后技能重新排列,循环结束,位置顶掉几率恢复后,看这时是否是想要顶掉的技能在好的位置,再选择是否进行打书.宝宝打书是网易的一个特定的程序,象孩子打书最后的两个技能是特技书技能和师门技能,无论你如何打书最后这两个技能是不会掉的,这就是程序规定死了,顶掉它的几率为0.普通宝宝的位置几率也是存在的,在里面又增加了很多循环变化,如何把握网易程序的设计思路,将是我们重点研究的方向,宝宝打书不是简单的碰运气,能够尽可能的去遵循,就能把被动变主动.总结:1.宝宝打书的时候要考虑技能位置排列2.没有产生循环前每个位置顶掉的几率是不一样的.3.出现循环后,节省兽决的方式是等待维护后再判断是否打书.4.每周维护后技能位置或许会发生改变,如果不改变,上周的循环照常结束
弹药的硬直弹和穿甲弹那个技能更好用?
建议不要加 硬直弹听起来很不错 名字很NB PK因该很不错 其实不然 即使硬值弹加满 也不能让对方僵硬0.5秒以上的时间 有了火弹后硬直效果比硬直弹加满还要好的多 更别说刷图这技能完全没用 巨废的技能 穿甲弹 也建议不加 一几率太小 二实用的地方不多 但加满太耗SP 三 相对与硬直弹 穿甲弹在PK上又完全没用
梦幻鉴定装备分什么时辰鉴定的吗?
一般是辰时最好 那出JP多
发表评论