Skip to content

Commit 9c76617

Browse files
yangyileyangyile1990
authored andcommitted
把注释改改以及调整文件名称
1 parent 3fe8ebb commit 9c76617

File tree

8 files changed

+104
-108
lines changed

8 files changed

+104
-108
lines changed

apm.go

100644100755
Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,47 @@
11
package elasticapm
22

33
import (
4+
"github.com/go-xlan/elasticapm/apmzaplog"
5+
"github.com/yyle88/erero"
6+
"github.com/yyle88/neatjson/neatjsons"
47
"github.com/yyle88/zaplog"
58
"go.elastic.co/apm/v2"
69
"go.uber.org/zap"
710
)
811

9-
/*
10-
CheckApmAgentVersion 检查你的apm包的版本和我的是否相同
11-
在这里,同一个项目,肯定是相等的
12-
但是假如保持这里的代码长期保持不变,当将来再写新项目时,这时假如第三方库由 apm "2.0.0" 升级为 "2.0.1" 就会导致问题
13-
毕竟调用 utils 的 init 函数赋值给 defaultTracer 的是 2.0.0 包里面的全局变量,而你在新项目里使用的是 2.0.1 包里的全局变量
14-
因此我们建议你在引用这个 utils 包的项目里,在项目开头都写这样的断言
15-
或者比较完以后不panic而是发出告警、日志等信息
16-
因为两个包使用的版本不相同时,监控肯定是无效的
17-
这是我们由 1.15.0 升级为 2.0.0 时发现的问题,相对来说还是挺坑的
18-
19-
go.elastic.co/apm v1.15.0
20-
go.elastic.co/apm/module/apmgin v1.15.0
21-
go.elastic.co/apm/module/apmgopg v1.15.0
22-
go.elastic.co/apm/module/apmgoredisv8 v1.15.0
23-
go.elastic.co/apm/module/apmhttp v1.15.0
24-
go.elastic.co/apm/v2 v2.0.0
25-
26-
这里 v1 和 v2 使用的 defaultTracer 是完全不同的两个变量
27-
*/
28-
func CheckApmAgentVersion(agentVersion string) bool {
29-
if version := apm.AgentVersion; agentVersion != version {
30-
zaplog.LOGGER.LOG.Warn("check apm agent versions not match", zap.String("arg_version", agentVersion), zap.String("pkg_version", version))
31-
return false
12+
// Initialize 初始化全局的APM,需要校验 agentVersion 是因为有可能系统里是 2.0.0 而新项目用的是 2.0.1 的,或者总之就是出现版本不匹配的情况
13+
func Initialize(cfg *Config) error {
14+
if err := InitializeWithOptions(cfg, NewEnvOption()); err != nil {
15+
return erero.Wro(err)
3216
}
33-
return true
17+
zaplog.LOG.Debug("Initialize apm success")
18+
//设置日志
19+
apm.DefaultTracer().SetLogger(apmzaplog.NewLog(zaplog.ZAPS.Skip1.SUG))
20+
return nil
3421
}
3522

36-
// GetApmAgentVersion 获得版本号
37-
// 假如你用的我的包,我的包 go.mod 里面引用的 apm 是 v2.0.0 的,这里就会返回 v2.0.0 版本号字符串
38-
// 假如你项目里直接用到 apm 包,则你需要检查你的包和我的包版本是否相同
39-
// 假如不同,逻辑不通
40-
func GetApmAgentVersion() string {
41-
return apm.AgentVersion
23+
func InitializeWithOptions(cfg *Config, evo *EnvOption, setEnvs ...func()) error {
24+
zaplog.SUG.Info("Initialize apm cfg=" + neatjsons.S(cfg))
25+
zaplog.SUG.Info("Initialize apm evo=" + neatjsons.S(evo))
26+
27+
if cfg.ServerUrl == "" && len(cfg.ServerUrls) == 0 {
28+
return erero.New("APM server URL is missing")
29+
}
30+
31+
cfg.SetEnv(evo)
32+
33+
for _, setFunc := range setEnvs {
34+
setFunc() //设置环境变量
35+
}
36+
37+
zaplog.LOG.Debug("Initialize apm", zap.String("service_name", cfg.ServiceName), zap.String("agent_version", apm.AgentVersion))
38+
39+
tracer, err := apm.NewTracer(cfg.ServiceName, cfg.ServiceVersion)
40+
if err != nil {
41+
return erero.Wro(err)
42+
}
43+
apm.SetDefaultTracer(tracer)
44+
45+
zaplog.LOG.Debug("Initialize apm success")
46+
return nil
4247
}

apm_init.go

Lines changed: 0 additions & 47 deletions
This file was deleted.

apm_init_test.go

Lines changed: 0 additions & 1 deletion
This file was deleted.

apm_test.go

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1 @@
11
package elasticapm
2-
3-
import (
4-
"testing"
5-
6-
"github.com/stretchr/testify/require"
7-
"go.elastic.co/apm/v2"
8-
)
9-
10-
func TestGetApmAgentVersion(t *testing.T) {
11-
t.Log(GetApmAgentVersion())
12-
}
13-
14-
func TestCheckApmAgentVersion(t *testing.T) {
15-
require.True(t, CheckApmAgentVersion(apm.AgentVersion))
16-
}

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ go 1.22.8
55
require (
66
github.com/stretchr/testify v1.10.0
77
github.com/yyle88/erero v1.0.20
8-
github.com/yyle88/must v0.0.20
8+
github.com/yyle88/must v0.0.22
99
github.com/yyle88/neatjson v0.0.12
10-
github.com/yyle88/zaplog v0.0.21
10+
github.com/yyle88/zaplog v0.0.22
1111
go.elastic.co/apm/module/apmhttp/v2 v2.6.3
1212
go.elastic.co/apm/v2 v2.6.3
1313
go.uber.org/zap v1.27.0
@@ -22,11 +22,11 @@ require (
2222
github.com/pkg/errors v0.9.1 // indirect
2323
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
2424
github.com/prometheus/procfs v0.15.1 // indirect
25-
github.com/yyle88/done v1.0.24 // indirect
26-
github.com/yyle88/mutexmap v1.0.10 // indirect
25+
github.com/yyle88/done v1.0.25 // indirect
26+
github.com/yyle88/mutexmap v1.0.13 // indirect
2727
github.com/yyle88/sure v0.0.38 // indirect
2828
github.com/yyle88/syntaxgo v0.0.48 // indirect
29-
github.com/yyle88/tern v0.0.6 // indirect
29+
github.com/yyle88/tern v0.0.8 // indirect
3030
go.elastic.co/fastjson v1.4.0 // indirect
3131
go.uber.org/multierr v1.11.0 // indirect
3232
golang.org/x/sys v0.30.0 // indirect

go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR
2323
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
2424
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
2525
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
26-
github.com/yyle88/done v1.0.24 h1:Uz5I6TKeeZmemP172uE0JR2a1nrWxDOKEp5i8fndcao=
27-
github.com/yyle88/done v1.0.24/go.mod h1:DaeF2NaYbUnvJKaNOAEQwT7PhVJbd8TNcT85ajIp1eU=
26+
github.com/yyle88/done v1.0.25 h1:zBOFbByEybPited1OZcF+VMaZF5lSTueBgGeTCLH6XA=
27+
github.com/yyle88/done v1.0.25/go.mod h1:ATFPtqXx5TgRuk0abvGQivAA1yupqKAq6gogUNBYb4s=
2828
github.com/yyle88/erero v1.0.20 h1:S561vG3urdQ1pM6Se2/x8OQicrmVxnlWe9J7rC+WPvU=
2929
github.com/yyle88/erero v1.0.20/go.mod h1:nbNNXS09v4YZop/nYswXuxvnga874h6tjYOcDGYKKuA=
3030
github.com/yyle88/formatgo v1.0.23 h1:RrLxVGbv2aLbkfjpm97YYOpxD8fdTC1CwkggdNlRCFU=
3131
github.com/yyle88/formatgo v1.0.23/go.mod h1:I0yhAaSqWiIjBe98wL+rzgepj3F8GWYF8He+VWneQ2Q=
32-
github.com/yyle88/must v0.0.20 h1:i+RU2v2wPEZba4MoA/2eUXYfZtSq99b5Ej5vlAkgn7Q=
33-
github.com/yyle88/must v0.0.20/go.mod h1:eh05Aksb3JGi2tzb6OBgoY37icxT0OHmBQEM1dvMaVQ=
34-
github.com/yyle88/mutexmap v1.0.10 h1:PIsx9KTdK6h1yH5NzBrPl21RrZ/XsE4IbgulMlhJzZE=
35-
github.com/yyle88/mutexmap v1.0.10/go.mod h1:QUYDuARLPlGj414kHewQ5tt8jkDxQXoai8H3C4Gg+yc=
32+
github.com/yyle88/must v0.0.22 h1:Ay5TkDOWWsPmvTy8HpzNs0YoymsBgGuljivEMB4lrdE=
33+
github.com/yyle88/must v0.0.22/go.mod h1:grBswgDZIpUOjs4ujCj0WXMGVOU/fL9xjMS3D50pfaU=
34+
github.com/yyle88/mutexmap v1.0.13 h1:wp/6mv/gsC2DSqNbhMYiil4gtnb0sDCIhHHIHK2h0cQ=
35+
github.com/yyle88/mutexmap v1.0.13/go.mod h1:QUYDuARLPlGj414kHewQ5tt8jkDxQXoai8H3C4Gg+yc=
3636
github.com/yyle88/neatjson v0.0.12 h1:M6y4IsHbe2/3drF/kDl3zBpaN29lmfW4MetEQcoG04A=
3737
github.com/yyle88/neatjson v0.0.12/go.mod h1:LT3nIhKyB3lkD3INiIXCN3FejNu+g+qvzCJ+fZSZaRc=
3838
github.com/yyle88/printgo v1.0.5 h1:gmaJKzEkrH6adbgfOfS6xq02CdvsE8QF+uKXXOdVLN8=
@@ -45,10 +45,10 @@ github.com/yyle88/sure v0.0.38 h1:+yw3++UKizkh7JsBtoZKH6jC2K1Jr4Z2U088zYBLJ/w=
4545
github.com/yyle88/sure v0.0.38/go.mod h1:zkSgOlFeW4xETRZNoR0GZ2v/q7wxnlHl3dxI4f4tftI=
4646
github.com/yyle88/syntaxgo v0.0.48 h1:JbyUnpq1pnf/hXgkfQ65bGMzJh/EVOvkXR7TtqjcpgQ=
4747
github.com/yyle88/syntaxgo v0.0.48/go.mod h1:Zx2vsDL+025u78thQwDqM6z33t7/czEuRAOzRvVsGxk=
48-
github.com/yyle88/tern v0.0.6 h1:tCGF8MoNZaAJaWM/kpZMbBkbYtRz9ZmKcMLXGy2qxEQ=
49-
github.com/yyle88/tern v0.0.6/go.mod h1:g9weyOMLtXYyt37EAshZPUTTHdH7WFauuxDi4oPr7/8=
50-
github.com/yyle88/zaplog v0.0.21 h1:b3YBP7ThOofapa8CS/k//Odc/hXmaCmkc1rV4Jgj1VQ=
51-
github.com/yyle88/zaplog v0.0.21/go.mod h1:jN9/2IXYlpHOgoIyOTid1EPlUyGBWzFjr0dX9YKLkC0=
48+
github.com/yyle88/tern v0.0.8 h1:Qn6dpYNbYA8bhPX/SjQHnML0MIoKScGNRgGH+VFox1U=
49+
github.com/yyle88/tern v0.0.8/go.mod h1:g9weyOMLtXYyt37EAshZPUTTHdH7WFauuxDi4oPr7/8=
50+
github.com/yyle88/zaplog v0.0.22 h1:hozMmQ0bhXLS6bkR3yHwW5cH8YelK09Df3lhy1k3iMM=
51+
github.com/yyle88/zaplog v0.0.22/go.mod h1:lOdA2Ju4Alify777G8AvdZVqfCPUEpkWjsLgEOkVfS4=
5252
go.elastic.co/apm/module/apmhttp/v2 v2.6.3 h1:jwFovJZkccySKCyy2oE9ZKvUry/a4gdQHF/MtZUQVtE=
5353
go.elastic.co/apm/module/apmhttp/v2 v2.6.3/go.mod h1:w94Gkk6uzI/K+eJYKDLB66tvWC5uK0fSHyWcyX2jPlQ=
5454
go.elastic.co/apm/v2 v2.6.3 h1:yVKFPLnmHOxpzLMGd3aexcik20ziXmRHqgcn9NZn/VU=

version.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package elasticapm
2+
3+
import (
4+
"github.com/yyle88/zaplog"
5+
"go.elastic.co/apm/v2"
6+
"go.uber.org/zap"
7+
)
8+
9+
/*
10+
CheckApmAgentVersion 检查是否都是用的 "go.elastic.co/apm/v2" 这个依赖
11+
有些老项目用的还是 "go.elastic.co/apm" 而不是 "go.elastic.co/apm/v2",这个项目明确只支持新版的 "v2" 依赖
12+
这是我们由 1.15.0 升级为 2.0.0 时发现的问题
13+
14+
go.elastic.co/apm v1.15.0
15+
go.elastic.co/apm/module/apmgin v1.15.0
16+
go.elastic.co/apm/module/apmgopg v1.15.0
17+
go.elastic.co/apm/module/apmgoredisv8 v1.15.0
18+
go.elastic.co/apm/module/apmhttp v1.15.0
19+
go.elastic.co/apm/v2 v2.0.0
20+
21+
这里 v1 和 v2 使用的 defaultTracer 是完全不同的两个变量
22+
*/
23+
func CheckApmAgentVersion(agentVersion string) bool {
24+
if version := apm.AgentVersion; agentVersion != version {
25+
zaplog.LOGGER.LOG.Warn("check apm agent versions not match", zap.String("arg_version", agentVersion), zap.String("pkg_version", version))
26+
return false
27+
}
28+
return true
29+
}
30+
31+
// GetApmAgentVersion 获得版本号,只要都是用的 "go.elastic.co/apm/v2" 这个依赖,他就会和主项目的依赖保持相同
32+
// 假如主项目是 go.elastic.co/apm/v2 v2.6.3 就会显示 2.6.3
33+
// 假如主项目是 go.elastic.co/apm/v2 v2.7.0 就会显示 2.7.0
34+
// 但是假如主项目依赖的是 go.elastic.co/apm v1.15.0 这里就不会是 1.15.0 因为这里是 v2 的
35+
// 因此建议新项目都使用 go.elastic.co/apm/v2 这个新版的
36+
func GetApmAgentVersion() string {
37+
return apm.AgentVersion
38+
}

version_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package elasticapm
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
"go.elastic.co/apm/v2"
8+
)
9+
10+
func TestCheckApmAgentVersion(t *testing.T) {
11+
require.True(t, CheckApmAgentVersion(apm.AgentVersion))
12+
}
13+
14+
func TestGetApmAgentVersion(t *testing.T) {
15+
t.Log(GetApmAgentVersion())
16+
}

0 commit comments

Comments
 (0)