-
Notifications
You must be signed in to change notification settings - Fork 338
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Lagrange项目
Core
新需求内容
因最近有这方面需求想讨论一下。在维护人员认为合适的前提下,我可以负责添加此功能并提交 PR。
What
可观测性(Observability)包含指标(Metrics)、日志(Logging)、追踪(Tracing)三个部分,其中日志很好理解且 Lagrange.Core 已经拥有。
Metrics 就是简单的数据:例如可以存在指标 lagrange.received_messages
,值为 114
,代表此次运行至今总共接收到了 114 条消息。其中可以添加各种 tag,例如 {type="group"}
或 {type="friend"}
。
Tracing 展示了每个操作的用时及分布情况,可以参考下图:

Why
- 添加可观测性相关设施,在不会影响当前已有用户的前提下,能满足有 monitor 相关需求的用户
- 标准库自带相关类,无需添加第三方 NuGet 包
How
.NET 的标准库中自带 System.Diagnostics.Metrics.Meter
和 System.Diagnostics.ActivitySource
两个类,分别对应 Metrics 和 Tracing 两个概念。
TL;DR:
Metrics
可以添加在各种可以计数的地方
var meter = new Meter("Lagrange.Core");
var counter = meter.CreateCounter<long>("lagrange.received_messages");
// After receiving a message
counter.Add(1);
Tracing
可以添加在各种异步耗时操作的方法体内
var source = new ActivitySource("Lagrange.Core");
var activity = source.StartActivity(/* [CallerMemberName] string name */);
// Do some work
// Duration inside the StartActivity/Dispose will be tracked
activity?.Dispose();
收集
对于 Lagrange.Core 这个 Library 而言,其实不用关心收集观测信息的问题,只需要产出即可。使用者可以自行通过 OpenTelemetry 等方式进行收集。
如果有需要补充的信息请指出,我会尽量完善
wu-yafeng
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request