规范
最新的1.25.0更新中带来了一些变化,主要是对指标和日志。指标名的最大长度从63个字符增加到255个字符。MetricProducer规范当前处于功能冻结状态,并且已经处于稳定状态。实现了同步的gauge类型,以及对指标点持久化的澄清,文本 中的术语“建议”也更新成了“建议参数”。推出了新的规则,将SimpleFixedSizeExemplarReservoir的默认大小设置为1。在日志方面,更新了GCP数据模型,使用TraceFlags来替换gcp.trace_sampled。另外,在OpenTelemetry协议中有变更,修复和澄清了OTLP exporter规范中的“瞬态错误”的定义。
兼容性更新包括了Prometheus和OpenTrace Shim中的变更,从Prometheus转换到OpenTelemetry的时候,默认情况下允许后者改变指标名。
详细变更可以参考变更日志。
Collector
在最近发布的 OpenTelemetry Collector (v0.86.0) 中包含了几个重要的更新。日志导出器已被弃用,取而代之的是debug导出器。此外,linux/s390x 架构也合并到了交叉构建测试中。
此版本中有重大的 API 更改。service.PipelineConfig
已被删除,这构成了中断性变更。 一些obsreport
模块函数和结构被弃用,主要是与exporter、processor、receiver和Scraper功能。这些功能已移动到各种帮助模块中。
collector-contrib 也包含许多更新。重要的中断性变更包括删除了已弃用的jaeger
和jaegerthrifthttp
导出器。为了符合checkapi,pkg/ottl
, pkg/stanza
, mongoDb
receiver, Azure Monitor exporter, tailsampling
processor等多个包都有变更。
功能增强包括:在尾采样processor中支持亚秒级决策等待时间,在resourcedetection processor中支持cpuInfo属性,在split.Config中新增的设置项omit_pattern,以及pkg/ottl包中的一些更新:例如新增的TruncateTime功能,以及在函数调用中支持命名参数等。
bug修复包括:在尾采样processor中支持同名策略,在AWS的EMF exporter中对带有NaN值的指标进行json序列化会报错的问题,对AWS X-Ray元数据结构进行导出时的数据还原问题,以及对其他一系列组件的bug的修复。
在0.85.0中还包括以下几项重大更新:
- 移除了已弃用的K8s API资源,例如HorizontalPodAutoscaler v2beta2 版本,以及CronJob v1beta1 版本。这意味着这些资源的指标将不再从k8s 1.22 以及更早的集群上发出。
- Prometheus exporter现在会默认添加类型和单位后缀,这可以通过将add_metric_suffixes设置为false来禁用。
- 将
attributesprocessor
和resourceprocessor
功能coreinternal.attraction.hash.sha256
到稳定版。
同样,请在更新前仔细参考发行说明。
Operator v0.85.0 已发布。增强功能包括:添加 .NET Automatic Instrumentation 中支持基于 Alpine 的图像, Go Instrumentation 升级到 v0.3.0-alpha。此外 Operator 现在允许Collector CRD 指定一个 configmap 列表用于挂载,并引入了一种新的协调方法以降低复杂性和数据冲突。还修复了一个bug,operator能够保证升级机制运行在Collector实例之上,对于升级operator后将collector 实例从非托管状态到托管状态的转换过程特别有效。组件更新包括 OpenTelemetry Collector、Contrib 和几个特定编程语言的Instrumentation。
重要更改:operator引入了可靠的升级机制,以处理实例更改。
重大更改:Go Instrumentation从先前版本升级到v0.3.0-alpha,其中可能包括重大更改。
此版本还包括 v0.84.0 的重大更改:
- 目标分配器不再具有默认的内存和 CPU 限制,以匹配collector的默认值。
- 在使用 Prometheus exporter时会创建ServiceMonitor 。
java
V1.30包含了多项修改以孵化SDK和API,在API孵化器中添加了一个实验性的同步Gauge。增加了属性建议的API,以放大SDK Metric System的功能,toString这个AttributesProcessor 是一个属性过滤器助手。并且将指标名的最大长度从63增加到255。Prometheus exporter的变动是考虑非ucun单位,以及在TYPE和HELP注释中的指标名称中添加单位。
在SDK扩展中,在孵化器中添加了支持文件配置的功能。在自动配置的ConfigProperties#getMap过滤器中添加了对空值的处理逻辑。
开发人员需要特别注意:io.opentelemetry:opentelemetry-semconv已被弃用并将会被移除。同时在其他仓库中引入了io.opentelemetry.semconv:opentelemetry-semconv:1.21.0-alpha 作为备用。
java Instrumentation 带来了重大变化,包括新的javaAgent机制、增强以及bug修复。重要变更包括:实验性的HTTP服务器指标被拆分为单独的类,将HttpClientResend
和HttpRouteHolder
重命名为HttpClientResendCount
和HttpServerRoute
。以及移除了一项已弃用的配置项。
为hibernate reactive添加了新的java agent instrumentation 机制。为AWS secret manager jdbc url增加支持。改进了对语义约束的支持。增加了javaAgent扩展以支持BOM,等等。修复了一些bug,比如对OpenJ9的getDefinedPackage的支持,在Lettuce中支持缓存key的序列化,以及JMX没有与触发器一起工作时支持自动检测。
GO
1.19.0版本是Go语言中Metric类型的第一个稳定版本,它位于go.opentelemetry.io/otel/sdk/metric包中。
新增功能包括:一个示例程序“掷骰子”;WithWriter
和WithPrettyPrint
选项,用于定制化io.writer,以及将输出展示成可读的json格式。
值得注意的变化包括:允许在指标instrument 名称中使用“/”字符,以及默认输出格式的变化(当前的输出格式过于紧凑)。
修复的问题包括:SDK尝试为每个Collect创建Prometheus指标,尽管知道它的scope无效。另外,NewMetricProducer替换了 go.opentelemetry.io/otel/bridge/opencensus.NewMetricExporter。
由于内容过多,建议参考更新日志来获取详细信息。
请注意,v1.18.0弃用和删除了以下内容:
- Jaeger 导出器和示例已被删除,因为 Jaeger 现在接受原生 OTLP 。
- 不再保证 1.20 版本之前的 Go 兼容性
JavaScript
1.17.0中修复了之前版本中无意造成的中断性变更;
在实验包中包含了多个重要更新,包括弃用了旧的配置API。
.net
1.17.0版本中包含Metric的一些次要更新。