1

我在开发过程中为我的 go 应用程序使用弹性 apm 我通过终端导出 env 变量并且它正在工作。但现在我想部署应用程序,所以我需要从 .env 文件中读取变量

解释

go.elastic.co/apm/module/apmhttp在我的应用程序中使用,当go.elastic.co/apm读取 env 变量时,它看不到ELASTIC_APM_SERVICE_NAMEELASTIC_APM_SERVER_URL或者ELASTIC_APM_SECRET_TOKEN 存在于我的应用程序文件的 .env 中。

4

1 回答 1

1

这是我问题的答案,希望对你有帮助@HongboMiao

// close default Tracer
apm.DefaultTracer.Close()

tracer, err := apm.NewTracer(os.Getenv("ELASTIC_APM_SERVICE_NAME"), os.Getenv("VERSION"))
if err != nil {
    // handle err
}

transport, err := transport.NewHTTPTransport()
if err != nil {
    // handle err
}

transport.SetSecretToken(os.Getenv("ELASTIC_APM_SECRET_TOKEN"))
u, err := url.Parse(os.Getenv("ELASTIC_APM_SERVER_URL"))
if err != nil {
    // handle err
}

transport.SetServerURL(u)
tracer.Transport = transport

// this step will be difference depend on your webserver package
r.Use(apmchi.Middleware(apmchi.WithTracer(tracer)))
于 2021-08-09T15:20:38.240 回答