目前我正在尝试使用环境变量配置我的 OTLP 导出器。根据官方文档,这应该是可能的。
特别是,我想重点关注OTLPtrace exporter 允许的OTEL_EXPORTER_OTLP_ENDPOINT那个。根据他们代码中的注释,环境变量优先于代码中设置的任何其他值。
我用 Go 编写了一个非常基本的 HTTP 应用程序,它使用 OpenTelemetry 进行检测。当我在代码中明确指定导出器端点时,例如:
exporter, err := otlptrace.New(
context.Background(),
otlptracegrpc.NewClient(
otlptracegrpc.WithInsecure(),
otlptracegrpc.WithEndpoint("My Endpoint"),
),
)仪器工作得很好。但是,如果我otlptracegrpc.NewClient从代码中删除配置,它不会获取环境中设置的值,这些值设置如下:
OTEL_EXPORTER_OTLP_ENDPOINT="my endpoint"
因此,当我在我的调试器中运行这个应用程序时,我可以看到导出器客户端有一个空值作为端点,但我可以在我的程序中将它们拾取为:
exporterEndpoint := os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")我将其解释为在执行代码时实际存在的变量,这是我的主要恐惧。
为什么是这样?我在这里错过了什么吗?我是否应该以不同方式填充环境变量(我看到官方文档中有环境变量的“选项”,但没有示例)?
哆啦的时光机
慕桂英546537
随时随地看视频慕课网APP
相关分类