Introduce trace verbosity config and produce less spans by default
This commit is contained in:
parent
77ef7fe490
commit
8c23eb6833
93 changed files with 1005 additions and 524 deletions
|
|
@ -648,25 +648,6 @@ func (s *AccessLogSuite) TestAccessLogDisabledForInternals() {
|
|||
|
||||
require.Equal(s.T(), 0, count)
|
||||
|
||||
// Make some requests on the custom ping router in error.
|
||||
req, err = http.NewRequest(http.MethodGet, "http://127.0.0.1:8010/ping-error", nil)
|
||||
require.NoError(s.T(), err)
|
||||
req.Host = "ping-error.docker.local"
|
||||
|
||||
err = try.Request(req, 500*time.Millisecond, try.StatusCodeIs(http.StatusUnauthorized), try.BodyContains("X-Forwarded-Host: ping-error.docker.local"))
|
||||
require.NoError(s.T(), err)
|
||||
err = try.Request(req, 500*time.Millisecond, try.StatusCodeIs(http.StatusUnauthorized), try.BodyContains("X-Forwarded-Host: ping-error.docker.local"))
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
// Here we verify that the remove of observability doesn't break the metrics for the error page service.
|
||||
req, err = http.NewRequest(http.MethodGet, "http://127.0.0.1:8080/metrics", nil)
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
err = try.Request(req, 500*time.Millisecond, try.StatusCodeIs(http.StatusOK), try.BodyContains("service3"))
|
||||
require.NoError(s.T(), err)
|
||||
err = try.Request(req, 500*time.Millisecond, try.StatusCodeIs(http.StatusOK), try.BodyNotContains("service=\"ping"))
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
// Verify no other Traefik problems.
|
||||
s.checkNoOtherTraefikProblems()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,10 +92,21 @@ spec:
|
|||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#observability
|
||||
properties:
|
||||
accessLogs:
|
||||
description: AccessLogs enables access logs for this router.
|
||||
type: boolean
|
||||
metrics:
|
||||
description: Metrics enables metrics for this router.
|
||||
type: boolean
|
||||
traceVerbosity:
|
||||
default: minimal
|
||||
description: TraceVerbosity defines the verbosity level
|
||||
of the tracing for this router.
|
||||
enum:
|
||||
- minimal
|
||||
- detailed
|
||||
type: string
|
||||
tracing:
|
||||
description: Tracing enables tracing for this router.
|
||||
type: boolean
|
||||
type: object
|
||||
priority:
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@
|
|||
[entryPoints]
|
||||
[entryPoints.web]
|
||||
address = ":8000"
|
||||
[entryPoints.web.observability]
|
||||
traceVerbosity = "detailed"
|
||||
[entryPoints.web-minimal]
|
||||
address = ":8001"
|
||||
|
||||
# Adding metrics to confirm that there is no wrong interaction with tracing.
|
||||
[metrics]
|
||||
|
|
@ -44,9 +48,13 @@
|
|||
## dynamic configuration ##
|
||||
|
||||
[http.routers]
|
||||
[http.routers.routerBasicMinimal]
|
||||
Service = "service0"
|
||||
Rule = "Path(`/basic-minimal`)"
|
||||
[http.routers.routerBasicMinimal.observability]
|
||||
traceVerbosity = "minimal"
|
||||
[http.routers.router0]
|
||||
Service = "service0"
|
||||
Middlewares = []
|
||||
Rule = "Path(`/basic`)"
|
||||
[http.routers.router1]
|
||||
Service = "service1"
|
||||
|
|
|
|||
|
|
@ -101,13 +101,3 @@ services:
|
|||
traefik.http.routers.ping.entryPoints: ping
|
||||
traefik.http.routers.ping.rule: PathPrefix(`/ping`)
|
||||
traefik.http.routers.ping.service: ping@internal
|
||||
|
||||
traefik.http.routers.ping-error.entryPoints: ping
|
||||
traefik.http.routers.ping-error.rule: PathPrefix(`/ping-error`)
|
||||
traefik.http.routers.ping-error.middlewares: errors, basicauth
|
||||
traefik.http.routers.ping-error.service: ping@internal
|
||||
traefik.http.middlewares.basicauth.basicauth.users: "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
|
||||
traefik.http.middlewares.errors.errors.status: 401
|
||||
traefik.http.middlewares.errors.errors.service: service3
|
||||
traefik.http.middlewares.errors.errors.query: /
|
||||
traefik.http.services.service3.loadbalancer.server.port: 80
|
||||
|
|
|
|||
21
integration/testdata/rawdata-consul.json
vendored
21
integration/testdata/rawdata-consul.json
vendored
|
|
@ -14,8 +14,9 @@
|
|||
"tls": {},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +50,9 @@
|
|||
},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -67,8 +69,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -89,8 +92,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -100,7 +104,13 @@
|
|||
},
|
||||
"middlewares": {
|
||||
"compressor@consul": {
|
||||
"compress": {},
|
||||
"compress": {
|
||||
"encodings": [
|
||||
"gzip",
|
||||
"br",
|
||||
"zstd"
|
||||
]
|
||||
},
|
||||
"status": "enabled",
|
||||
"usedBy": [
|
||||
"Router0@consul"
|
||||
|
|
@ -173,6 +183,7 @@
|
|||
"mirror@consul": {
|
||||
"mirroring": {
|
||||
"service": "simplesvc",
|
||||
"mirrorBody": true,
|
||||
"maxBodySize": -1,
|
||||
"mirrors": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -9,8 +9,9 @@
|
|||
"priority": 18,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -29,8 +30,9 @@
|
|||
},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
|
|||
18
integration/testdata/rawdata-crd.json
vendored
18
integration/testdata/rawdata-crd.json
vendored
|
|
@ -9,8 +9,9 @@
|
|||
"priority": 18,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -29,8 +30,9 @@
|
|||
},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +51,9 @@
|
|||
"priority": 46,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -66,8 +69,9 @@
|
|||
"priority": 38,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -83,8 +87,9 @@
|
|||
"priority": 50,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -100,8 +105,9 @@
|
|||
"priority": 35,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"error": [
|
||||
"the service \"other-ns-wrr3@kubernetescrd\" does not exist"
|
||||
|
|
|
|||
21
integration/testdata/rawdata-etcd.json
vendored
21
integration/testdata/rawdata-etcd.json
vendored
|
|
@ -14,8 +14,9 @@
|
|||
"tls": {},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +50,9 @@
|
|||
},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -67,8 +69,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -89,8 +92,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -100,7 +104,13 @@
|
|||
},
|
||||
"middlewares": {
|
||||
"compressor@etcd": {
|
||||
"compress": {},
|
||||
"compress": {
|
||||
"encodings": [
|
||||
"gzip",
|
||||
"br",
|
||||
"zstd"
|
||||
]
|
||||
},
|
||||
"status": "enabled",
|
||||
"usedBy": [
|
||||
"Router0@etcd"
|
||||
|
|
@ -173,6 +183,7 @@
|
|||
"mirror@etcd": {
|
||||
"mirroring": {
|
||||
"service": "simplesvc",
|
||||
"mirrorBody": true,
|
||||
"maxBodySize": -1,
|
||||
"mirrors": [
|
||||
{
|
||||
|
|
|
|||
12
integration/testdata/rawdata-gateway.json
vendored
12
integration/testdata/rawdata-gateway.json
vendored
|
|
@ -10,8 +10,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -32,8 +33,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -50,8 +52,9 @@
|
|||
"priority": 100008,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -69,8 +72,9 @@
|
|||
"tls": {},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -32,8 +33,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +51,9 @@
|
|||
"priority": 44,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
|
|||
18
integration/testdata/rawdata-ingress.json
vendored
18
integration/testdata/rawdata-ingress.json
vendored
|
|
@ -10,8 +10,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -32,8 +33,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +51,9 @@
|
|||
"priority": 50,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -66,8 +69,9 @@
|
|||
"priority": 44,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -83,8 +87,9 @@
|
|||
"priority": 47,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -100,8 +105,9 @@
|
|||
"priority": 47,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -32,8 +33,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -32,8 +33,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +51,9 @@
|
|||
"priority": 47,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
|
|||
22
integration/testdata/rawdata-redis.json
vendored
22
integration/testdata/rawdata-redis.json
vendored
|
|
@ -14,8 +14,9 @@
|
|||
"tls": {},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +50,9 @@
|
|||
},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -67,8 +69,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -89,8 +92,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -100,7 +104,13 @@
|
|||
},
|
||||
"middlewares": {
|
||||
"compressor@redis": {
|
||||
"compress": {},
|
||||
"compress": {
|
||||
"encodings": [
|
||||
"gzip",
|
||||
"br",
|
||||
"zstd"
|
||||
]
|
||||
},
|
||||
"status": "enabled",
|
||||
"usedBy": [
|
||||
"Router0@redis"
|
||||
|
|
@ -173,6 +183,7 @@
|
|||
"mirror@redis": {
|
||||
"mirroring": {
|
||||
"service": "simplesvc",
|
||||
"mirrorBody": true,
|
||||
"maxBodySize": -1,
|
||||
"mirrors": [
|
||||
{
|
||||
|
|
@ -244,6 +255,7 @@
|
|||
"url": "http://10.0.1.3:8889"
|
||||
}
|
||||
],
|
||||
"strategy": "wrr",
|
||||
"passHostHeader": true,
|
||||
"responseForwarding": {
|
||||
"flushInterval": "100ms"
|
||||
|
|
|
|||
21
integration/testdata/rawdata-zk.json
vendored
21
integration/testdata/rawdata-zk.json
vendored
|
|
@ -14,8 +14,9 @@
|
|||
"tls": {},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -49,8 +50,9 @@
|
|||
},
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -67,8 +69,9 @@
|
|||
"priority": 9223372036854775806,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -89,8 +92,9 @@
|
|||
"priority": 9223372036854775805,
|
||||
"observability": {
|
||||
"accessLogs": true,
|
||||
"metrics": true,
|
||||
"tracing": true,
|
||||
"metrics": true
|
||||
"traceVerbosity": "minimal"
|
||||
},
|
||||
"status": "enabled",
|
||||
"using": [
|
||||
|
|
@ -100,7 +104,13 @@
|
|||
},
|
||||
"middlewares": {
|
||||
"compressor@zookeeper": {
|
||||
"compress": {},
|
||||
"compress": {
|
||||
"encodings": [
|
||||
"gzip",
|
||||
"br",
|
||||
"zstd"
|
||||
]
|
||||
},
|
||||
"status": "enabled",
|
||||
"usedBy": [
|
||||
"Router0@zookeeper"
|
||||
|
|
@ -173,6 +183,7 @@
|
|||
"mirror@zookeeper": {
|
||||
"mirroring": {
|
||||
"service": "simplesvc",
|
||||
"mirrorBody": true,
|
||||
"maxBodySize": -1,
|
||||
"mirrors": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -77,6 +77,104 @@ func (s *TracingSuite) TearDownTest() {
|
|||
s.composeStop("tempo")
|
||||
}
|
||||
|
||||
func (s *TracingSuite) TestOpenTelemetryBasic_HTTP_router_minimalVerbosity() {
|
||||
file := s.adaptFile("fixtures/tracing/simple-opentelemetry.toml", TracingTemplate{
|
||||
WhoamiIP: s.whoamiIP,
|
||||
WhoamiPort: s.whoamiPort,
|
||||
IP: s.otelCollectorIP,
|
||||
IsHTTP: true,
|
||||
})
|
||||
|
||||
s.traefikCmd(withConfigFile(file))
|
||||
|
||||
// wait for traefik
|
||||
err := try.GetRequest("http://127.0.0.1:8080/api/rawdata", time.Second, try.BodyContains("basic-auth"))
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
err = try.GetRequest("http://127.0.0.1:8000/basic-minimal", 500*time.Millisecond, try.StatusCodeIs(http.StatusOK))
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
contains := []map[string]string{
|
||||
{
|
||||
"batches.0.scopeSpans.0.scope.name": "github.com/traefik/traefik",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.0.name": "ReverseProxy",
|
||||
"batches.0.scopeSpans.0.spans.0.kind": "SPAN_KIND_CLIENT",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"network.protocol.version\").value.stringValue": "1.1",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"url.full\").value.stringValue": fmt.Sprintf("http://%s/basic-minimal", net.JoinHostPort(s.whoamiIP, "80")),
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"user_agent.original\").value.stringValue": "Go-http-client/1.1",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"network.peer.address\").value.stringValue": s.whoamiIP,
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"network.peer.port\").value.intValue": "80",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"server.address\").value.stringValue": s.whoamiIP,
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"server.port\").value.intValue": "80",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"http.response.status_code\").value.intValue": "200",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.1.name": "EntryPoint",
|
||||
"batches.0.scopeSpans.0.spans.1.kind": "SPAN_KIND_SERVER",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"entry_point\").value.stringValue": "web",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"url.path\").value.stringValue": "/basic-minimal",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"url.query\").value.stringValue": "",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"user_agent.original\").value.stringValue": "Go-http-client/1.1",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"server.address\").value.stringValue": "127.0.0.1:8000",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"network.peer.address\").value.stringValue": "127.0.0.1",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.response.status_code\").value.intValue": "200",
|
||||
},
|
||||
}
|
||||
|
||||
s.checkTraceContent(contains)
|
||||
}
|
||||
|
||||
func (s *TracingSuite) TestOpenTelemetryBasic_HTTP_entrypoint_minimalVerbosity() {
|
||||
file := s.adaptFile("fixtures/tracing/simple-opentelemetry.toml", TracingTemplate{
|
||||
WhoamiIP: s.whoamiIP,
|
||||
WhoamiPort: s.whoamiPort,
|
||||
IP: s.otelCollectorIP,
|
||||
IsHTTP: true,
|
||||
})
|
||||
|
||||
s.traefikCmd(withConfigFile(file))
|
||||
|
||||
// wait for traefik
|
||||
err := try.GetRequest("http://127.0.0.1:8080/api/rawdata", time.Second, try.BodyContains("basic-auth"))
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
err = try.GetRequest("http://127.0.0.1:8001/basic", 500*time.Millisecond, try.StatusCodeIs(http.StatusOK))
|
||||
require.NoError(s.T(), err)
|
||||
|
||||
contains := []map[string]string{
|
||||
{
|
||||
"batches.0.scopeSpans.0.scope.name": "github.com/traefik/traefik",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.0.name": "ReverseProxy",
|
||||
"batches.0.scopeSpans.0.spans.0.kind": "SPAN_KIND_CLIENT",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"network.protocol.version\").value.stringValue": "1.1",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"url.full\").value.stringValue": fmt.Sprintf("http://%s/basic", net.JoinHostPort(s.whoamiIP, "80")),
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"user_agent.original\").value.stringValue": "Go-http-client/1.1",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"network.peer.address\").value.stringValue": s.whoamiIP,
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"network.peer.port\").value.intValue": "80",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"server.address\").value.stringValue": s.whoamiIP,
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"server.port\").value.intValue": "80",
|
||||
"batches.0.scopeSpans.0.spans.0.attributes.#(key=\"http.response.status_code\").value.intValue": "200",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.1.name": "EntryPoint",
|
||||
"batches.0.scopeSpans.0.spans.1.kind": "SPAN_KIND_SERVER",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"entry_point\").value.stringValue": "web-minimal",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.request.method\").value.stringValue": "GET",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"url.path\").value.stringValue": "/basic",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"url.query\").value.stringValue": "",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"user_agent.original\").value.stringValue": "Go-http-client/1.1",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"server.address\").value.stringValue": "127.0.0.1:8001",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"network.peer.address\").value.stringValue": "127.0.0.1",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.response.status_code\").value.intValue": "200",
|
||||
},
|
||||
}
|
||||
|
||||
s.checkTraceContent(contains)
|
||||
}
|
||||
|
||||
func (s *TracingSuite) TestOpenTelemetryBasic_HTTP() {
|
||||
file := s.adaptFile("fixtures/tracing/simple-opentelemetry.toml", TracingTemplate{
|
||||
WhoamiIP: s.whoamiIP,
|
||||
|
|
@ -121,7 +219,7 @@ func (s *TracingSuite) TestOpenTelemetryBasic_HTTP() {
|
|||
"batches.0.scopeSpans.0.spans.3.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.3.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.service.name\").value.stringValue": "service0@file",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.router.name\").value.stringValue": "router0@file",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router0@file",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"http.route\").value.stringValue": "Path(`/basic`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.4.name": "Metrics",
|
||||
|
|
@ -189,7 +287,7 @@ func (s *TracingSuite) TestOpenTelemetryBasic_gRPC() {
|
|||
"batches.0.scopeSpans.0.spans.3.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.3.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.service.name\").value.stringValue": "service0@file",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.router.name\").value.stringValue": "router0@file",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router0@file",
|
||||
"batches.0.scopeSpans.0.spans.3.attributes.#(key=\"http.route\").value.stringValue": "Path(`/basic`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.4.name": "Metrics",
|
||||
|
|
@ -251,7 +349,7 @@ func (s *TracingSuite) TestOpenTelemetryRateLimit() {
|
|||
"batches.0.scopeSpans.0.spans.1.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.1.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"traefik.service.name\").value.stringValue": "service1@file",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"traefik.router.name\").value.stringValue": "router1@file",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router1@file",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.route\").value.stringValue": "Path(`/ratelimit`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.2.name": "Metrics",
|
||||
|
|
@ -299,7 +397,7 @@ func (s *TracingSuite) TestOpenTelemetryRateLimit() {
|
|||
"batches.0.scopeSpans.0.spans.4.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.4.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.service.name\").value.stringValue": "service1@file",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.router.name\").value.stringValue": "router1@file",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router1@file",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"http.route\").value.stringValue": "Path(`/ratelimit`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.5.name": "Metrics",
|
||||
|
|
@ -423,7 +521,7 @@ func (s *TracingSuite) TestOpenTelemetryRetry() {
|
|||
"batches.0.scopeSpans.0.spans.12.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.12.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.12.attributes.#(key=\"traefik.service.name\").value.stringValue": "service2@file",
|
||||
"batches.0.scopeSpans.0.spans.12.attributes.#(key=\"traefik.router.name\").value.stringValue": "router2@file",
|
||||
"batches.0.scopeSpans.0.spans.12.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router2@file",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.13.name": "Metrics",
|
||||
"batches.0.scopeSpans.0.spans.13.kind": "SPAN_KIND_INTERNAL",
|
||||
|
|
@ -475,7 +573,7 @@ func (s *TracingSuite) TestOpenTelemetryAuth() {
|
|||
"batches.0.scopeSpans.0.spans.1.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.1.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"traefik.service.name\").value.stringValue": "service3@file",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"traefik.router.name\").value.stringValue": "router3@file",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router3@file",
|
||||
"batches.0.scopeSpans.0.spans.1.attributes.#(key=\"http.route\").value.stringValue": "Path(`/auth`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.2.name": "Metrics",
|
||||
|
|
@ -532,7 +630,7 @@ func (s *TracingSuite) TestOpenTelemetryAuthWithRetry() {
|
|||
"batches.0.scopeSpans.0.spans.2.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.2.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.2.attributes.#(key=\"traefik.service.name\").value.stringValue": "service4@file",
|
||||
"batches.0.scopeSpans.0.spans.2.attributes.#(key=\"traefik.router.name\").value.stringValue": "router4@file",
|
||||
"batches.0.scopeSpans.0.spans.2.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router4@file",
|
||||
"batches.0.scopeSpans.0.spans.2.attributes.#(key=\"http.route\").value.stringValue": "Path(`/retry-auth`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.3.name": "Metrics",
|
||||
|
|
@ -601,7 +699,7 @@ func (s *TracingSuite) TestOpenTelemetrySafeURL() {
|
|||
"batches.0.scopeSpans.0.spans.4.name": "Router",
|
||||
"batches.0.scopeSpans.0.spans.4.kind": "SPAN_KIND_INTERNAL",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.service.name\").value.stringValue": "service3@file",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.router.name\").value.stringValue": "router3@file",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"traefik.router.name\").value.stringValue": "web-router3@file",
|
||||
"batches.0.scopeSpans.0.spans.4.attributes.#(key=\"http.route\").value.stringValue": "Path(`/auth`)",
|
||||
|
||||
"batches.0.scopeSpans.0.spans.5.name": "Metrics",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue