Open legendecas opened 2 years ago
目前 xprofiler 中的指标是在 logbypass 线程中通过 logger 输出为日志文本格式,然后被 xtransit 消费并上传服务端。但是对于部分现存场景中,用户可能已经有成熟的指标时许存储后端用于处理特化的指标数据,如 Prometheus、TSDB 等等,此时 xprofiler 还无法提供一个 JS API 可供用户自行导出指标数据。
如果 xprofiler 可以提供一个 JS API,可供如 OpenTelemetry、prom-client 等社区指标库消费并导出,则可满足这种用户场景。
对于目前的 xprofiler 来说,数据链路基本可以保持不变,需要在 JS 层增加一个 JS API 用于访问 EnvironmentData 上存储的指标数据,以供 OpenTelemetry 等指标库以 Observer 形式定期、按需访问。
JS API 可能还是需要 logger.cc 的驱动,可以考虑在 Info 的时候 async send 通知一下 main thread,然后在 main thread 上触发调用这个 JS 函数
logger.cc
Info
这种场景下就丢弃了 js 工作线程死循环的日志了,因此不需要考虑 RequestInterrupt,uv_async_send 应该可以满足场景需求
目前 xprofiler 中的指标是在 logbypass 线程中通过 logger 输出为日志文本格式,然后被 xtransit 消费并上传服务端。但是对于部分现存场景中,用户可能已经有成熟的指标时许存储后端用于处理特化的指标数据,如 Prometheus、TSDB 等等,此时 xprofiler 还无法提供一个 JS API 可供用户自行导出指标数据。
如果 xprofiler 可以提供一个 JS API,可供如 OpenTelemetry、prom-client 等社区指标库消费并导出,则可满足这种用户场景。
对于目前的 xprofiler 来说,数据链路基本可以保持不变,需要在 JS 层增加一个 JS API 用于访问 EnvironmentData 上存储的指标数据,以供 OpenTelemetry 等指标库以 Observer 形式定期、按需访问。