2881099 / FreeRedis

🦄 FreeRedis is .NET40+ redis client. supports cluster, sentinel, master-slave, pub-sub, lua, pipeline, transaction, streams, client-side-caching, and pooling.
MIT License
920 stars 164 forks source link

有计划支持OpenTelemetry吗 #196

Closed ZUOXIANGE closed 1 month ago

ZUOXIANGE commented 2 months ago

参考 OpenTelemetry.Instrumentation.StackExchangeRedis

2881099 commented 2 months ago

使用 cli.Notice 事件可以处理一下消息格式

ZUOXIANGE commented 2 months ago

如果是通过cli.Notice自行实现的话,目前只能通过解析Log string获取参数,对于实现来说并不友好.可能还需要结合文档讨论下需要支持哪些tag,然后确定在NoticeEventArgs里加上对应的参数

2881099 commented 2 months ago

https://github.com/2881099/FreeRedis/blob/master/src/FreeRedis/RedisClientEvents.cs

Notice 的实现参考,其实是一个拦截器。

2881099 commented 2 months ago

class NoticeCallInterceptor : IInterceptor

ZUOXIANGE commented 2 months ago

那好像可以直接在Before和After里直接实现,我空了写写看

ZUOXIANGE commented 1 month ago

我已经基本完成了相关代码,这是实现的trace效果图 image 但是我还没找到通过InterceptorBeforeEventArgs获取db.namespace,server.address,server.port,network.peer.address,network.peer.port 这几个参数的方法,可以给我点提示和指导吗

2881099 commented 1 month ago

InterceptorAfterEventArgs

这个参数更多,是执行之后才能确定向哪个 server 发送命令。

ZUOXIANGE commented 1 month ago

我现在用InterceptorAfterEventArgs解析WriteTarget实现了,麻烦看看有没有什么其他的建议呢?没有的话我就提个PR

2881099 commented 1 month ago

放个链接到你的github仓储地址即可,属于扩展

ZUOXIANGE commented 1 month ago

要修改freeredis项目恐怕不行吧,不仅仅是新增了功能项目,是要先埋点后消费

2881099 commented 1 month ago

有哪些改动,需要评估

ZUOXIANGE commented 1 month ago

可以看看我这两个提交

2881099 commented 1 month ago

问题不大,我主要担心在主仓库,未来有其他对接需求。

你提交吧,我邀请你进入项目的开发权限。

ZUOXIANGE commented 1 month ago

PR提了,需要合并,发布的话还需要发布新的nuget包

2881099 commented 1 month ago

明天发布nuget