OpenTelemetry
之前的文章我说到的 Zabbix 和 Prometheus , 在监控的领域已经非常强大了。
但注意它们只是提供了一层通用的 指标,然后 转换 为监控。
毕竟prometheus只能用来做指标,对于 链路(Traces)、日志(Logs),prometheus 无能为力。那关于 链路 和 日志,要如何收集?它的格式应该如何定义呢?
有一些云原生公司喜欢使用 prometheus,在这个基础上,那应用指标只使用prometheus格式,链路直接使用 zipkin 或者 Jaeger,日志又想存到 clickhouse 或者 es。
可能有的人喜欢使用 Skywalking,毕竟skywalking 集成了指标、链路、日志,skywalking 使用自身闭环的数据格式,不再这里讨论。
但是这样我就要接入分别接入 prometheus、 zipkin 、Jaeger 这些依赖包,还要部署这些服务并处理,非常麻烦。
那能不能有一个行业标准,或者说作为有个中介,可以自定义输出到不同的供应商服务?
OpenTelemetry 就是来解决这个事情的。
# 1、OpenTelemetry
而 OpenTelemetry 的出现,把指标(Metrics)、链路(Traces)、日志(Logs)都一起实现了,并且形成自己的格式(简称 OTLP协议),并且支持不同的格式导出。
OpenTelemetry 是一套观察性的标准,与语言无关,支持各种编程语言和框架,并可与多种观察平台集成。
OpenTelemetry 得到40多家可观测供应商的支持并集成。
你可以使用 opentelemetry 导出成 prometheus、zipkin、skywalking 、opentracing 等格式
也可以把数据输出到 kafka、clickhouse、elasticsearch、磁盘文件 等等
# 2、OpenTelemetry vs Prometheus
这篇文章提到 OpenTelemetry 和 Prometheus 的差异,可以参考一下: