目前,我正在try 使用环境变量配置我的OTLP导出器.根据官方文件,这应该是可能的.
特别是,我想把重点放在OTEL_EXPORTER_OTLP_ENDPOINT
个,也就是allowed for the OTLPtrace exporter个.根据the comments in their code,环境变量优先于代码中设置的任何其他值.
我用Go编写了一个非常基本的HTTP应用程序,它是用OpenTelemeter编写的.当我在如下代码中显式指定导出器终结点时:
exporter, err := otlptrace.New(
context.Background(),
otlptracegrpc.NewClient(
otlptracegrpc.WithInsecure(),
otlptracegrpc.WithEndpoint("My Endpoint"),
),
)
仪器就像那样工作得很好.但是,如果我从代码中删除otlptracegrpc.NewClient
配置,它不会 Select 在环境中设置的值,这些值设置如下:
OTEL_EXPORTER_OTLP_ENDPOINT="my endpoint"
因此,当我在调试器中运行此应用程序时,我可以看到Exporter客户端有一个空值作为终结点,但我可以在我的程序中获取它们,如下所示:
exporterEndpoint := os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
我将其解释为在执行代码时变量实际存在,这是我主要担心的.
这是为什么?我是不是漏掉了什么?我是否应该以不同的方式填充环境变量(我看到官方文档中有环境变量的"选项",但没有示例)?