OpenTelemetry焦点,2023年9月

欢迎回到OpenTelemetry焦点,2023年9月!随着秋风来临,我们的项目迎来了一片活跃。我们正在为即将到来的KubeCon和Observability Day做准备。你会参加吗?我们期待在那里见到你,一起参加我们的首届OpenTelemetry Contribfest、Project Pavilion等活动!

如果你是维护者,并且希望在这里展示你的项目,请通过邮件CNCF Slack的#otel-comms频道与我联系。

发布和更新

以下是我们一些核心存储库的最新更新。

规范

最新的更新(v1.25.0)主要针对Metrics和Logs做出了一些更改。度量名称的最大长度已从63增加到255个字符。“MetricProducer"规范已被冻结,并已稳定下来。已实现了同步测量仪和对度量点持久性的澄清,术语"advice"已被替换为"advisory参数”。建立了规定SimpleFixedSizeExemplarReservoir默认大小为1的新规则。在Logs中,更新了GCP数据模型,使用TraceFlags替代了gcp.trace_sampled。此外,OpenTelemetry协议中的更改修正了OTLP导出器规范中"瞬态错误"的定义。

兼容性更新包括对OpenTracing Shim和Prometheus的更改,Prometheus默认情况下可以更改度量名称,因为它从Prometheus转换为OpenTelemetry。

请访问完整的更新日志以获取详细信息:这里

收集器

在最新版本的OpenTelemetry Collector(v0.86.0)中,进行了几个重要的更新。日志导出器已被弃用,并由新增的调试导出器取而代之。此外,linux/s390x架构现已纳入交叉构建测试中。

在此版本中发生了重大的API更改。已删除了service.PipelineConfig,这是一个重大变更。部分obsreport模块的函数和结构正在被弃用,主要涉及Exporter、Processor、Receiver和Scraper功能。这些功能已被移到不同的帮助程序模块中。

详细的描述以及相应的变动和弃用链接可以在发布页面中找到。

collector-contrib也有很多更新。重大的重大变更包括删除了弃用的jaegerjaegerthrifthttp导出器,并对许多软件包进行了更改,例如pkg/ottlpkg/stanzamongoDb接收器、Azure Monitor导出器、tailsampling处理器等,以符合checkapi

改进包括tailsampling处理器中的子秒级决策等待时间、resourcedetection处理器中主机的cpuinfo属性支持,向split.Config添加’omit_pattern’设置,以及pkg/ottl软件包的几个更新,例如添加新的’TruncateTime’函数和函数调用中命名参数的支持等。

已针对以下问题进行了错误修复,如tailsampling处理器接受重复的策略名称、AWS EMF导出器中具有NaN值的度量的JSON序列化错误,以及导出时恢复AWS X-Ray元数据结构的一系列其他组件的错误修复。

v0.85.0中还有几个重大变更:

  • 删除了Kubernetes API资源,如HorizontalPodAutoscaler的v2beta2版本和CronJob的v1beta1版本,这意味着在Kubernetes 1.22及更早版本上将不再发出这些资源的指标。
  • Prometheus导出器现在默认情况下追加类型和单位后缀,可以通过将"add_metric_suffixes"设置为false来禁用。
  • attributesprocessorresourceprocessor功能门控coreinternal.attraction.hash.sha256转换为稳定状态。

在更新之前,请仔细查看发布说明。

已发布运算符v0.85.0。增强功能包括在自动仪表化中添加对基于Alpine镜像的.NET的支持,以及将Go的自动仪表化支持升级到v0.3.0-alpha。此外,Operator现在允许collector CRD指定要挂载的配置图的列表,并引入了一种新的协调方法来减少复杂性和重复性。修复了一个bug,即当实例发生变化时,Operator确保升级机制运行,特别是对于在升级Operator时从非托管到托管状态转换的实例非常有用。组件更新包括OpenTelemetry Collector、Contrib和几种特定于语言的自动仪表化。

重要更改:Operator现在允许引入可靠的升级机制来处理实例的更改。

重大变更:Go的自动仪表化支持已从之前的版本大幅升级到v0.3.0-alpha,可能包括重大更改。

此版本还包括来自v0.84.0的重大变更:

  • 目标分配器不再具有默认的内存和CPU限制,以匹配收集器的默认设置。
  • 使用Prometheus导出器时会创建ServiceMonitors。
Java

版本1.30对孵化中的API和SDK进行了许多更新。在API孵化器中,添加了一个实验性的同步测量仪。SDK度量系统通过添加属性advice API、AttributesProcessor toString、属性过滤器帮助程序以及将度量名称的最大长度从63增加到255个字符来增强其功能。Prometheus导出器对非ucum单位和将它们添加到度量名称的TYPE和HELP注释进行了更改。

在SDK扩展中,新增了对基于文件的配置的支持。更新后,Autoconfigure ConfigProperties#getMap过滤器可以处理空值条目。

对于开发人员来说,有一个重要的弃用需要注意。io.opentelemetry:opentelemetry-semconv已被弃用,并已从新存储库引入了替代品io.opentelemetry.semconv:opentelemetry-semconv:1.21.0-alpha

Java Instrumentation带来了重大的变化,包括添加了新的Java代理仪表化、增强功能和错误修复。重要的变化包括将实验性的HTTP服务器指标拆分为一个独立的类、将HttpClientResendHttpRouteHolder重命名为HttpClientResendCountHttpServerRoute,以及删除了一个已弃用的配置。

还添加了Hibernate Reactive的新Java代理仪表。增强功能包括对AWS Secrets Manager JDBC URL的支持、对语义约定更改的改进支持、将javaagent添加到仪表化BOM等等。也修复了一些错误,例如在OpenJ9中查找getDefinedPackage时出现的问题,Lettuce仪表化中的键序列化,以及在没有触发器的情况下,JMX的自动仪表化无法正常工作。

Go

版本1.19.0是Metrics的第一个稳定版本,标准项目稳定性保证现在适用于go.opentelemetry.io/otel/sdk/metric包。

新增功能包括新的"Roll the Dice"应用示例以及WithWriterWithPrettyPrint选项,用于自定义io.Writer和以人类可读的JSON格式显示输出。

值得注意的变化包括指标仪表名称中允许"/“字符,并且导出器的默认输出格式发生了更改,现在更紧凑。

修复的问题包括SDK在每次进行收集时都尝试创建Prometheus指标的问题,即使已知作用域无效。在删除方面,go.opentelemetry.io/otel/bridge/opencensus.NewMetricExporter已被NewMetricProducer替换。

由于内容繁多,建议通过参考完整的更改日志获取详细信息。

请注意,v1.18.0中包含了一些弃用和删除:

  • 移除了Jaeger导出器和示例,因为Jaeger现在接受本机OTLP。
  • 不再保证兼容Go 1.20之前的版本。

JavaScript

版本1.17.0修复了先前版本中的无意中的重大变更。

在实验性软件包中有几个重要的更改,包括弃用了旧的配置API。

.NET

版本1.6.0对度量进行了微小的更新。

新闻和即将举行的事件

KubeCon North America即将在芝加哥举行,日程安排已经公布!查看可观测性专题,了解有关OpenTelemetry、Prometheus等的讲座。

Observability Day也即将举行,它将是一个非常棒的活动!请通过上述链接查看已公布的日程。

我们很高兴宣布我们首次举办的Contribfest!你将有机会与收集器和JavaScript SIG的维护者一起解决问题和PR,并了解如何为OpenTelemetry做出贡献。

请确保本周关注博客,了解11月份KubeCon上所有活动的全面介绍!