Bump go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
Bumps [go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://github.com/open-telemetry/opentelemetry-go-contrib) from 0.43.0 to 0.44.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-go-contrib/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.43.0...zpages/v0.44.0) --- updated-dependencies: - dependency-name: go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
committed by
Ralf Haferkamp
parent
4f0f106fd1
commit
91e2b0ff20
@@ -83,7 +83,7 @@ require (
|
|||||||
github.com/xhit/go-simple-mail/v2 v2.16.0
|
github.com/xhit/go-simple-mail/v2 v2.16.0
|
||||||
go-micro.dev/v4 v4.9.0
|
go-micro.dev/v4 v4.9.0
|
||||||
go.etcd.io/bbolt v1.3.7
|
go.etcd.io/bbolt v1.3.7
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.43.0
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0
|
||||||
go.opentelemetry.io/contrib/zpages v0.44.0
|
go.opentelemetry.io/contrib/zpages v0.44.0
|
||||||
go.opentelemetry.io/otel v1.18.0
|
go.opentelemetry.io/otel v1.18.0
|
||||||
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
|
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
|
||||||
|
|||||||
@@ -2059,8 +2059,8 @@ go.opentelemetry.io/contrib v1.0.0 h1:khwDCxdSspjOLmFnvMuSHd/5rPzbTx0+l6aURwtQdf
|
|||||||
go.opentelemetry.io/contrib v1.0.0/go.mod h1:EH4yDYeNoaTqn/8yCWQmfNB78VHfGX2Jt2bvnvzBlGM=
|
go.opentelemetry.io/contrib v1.0.0/go.mod h1:EH4yDYeNoaTqn/8yCWQmfNB78VHfGX2Jt2bvnvzBlGM=
|
||||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 h1:PRXhsszxTt5bbPriTjmaweWUsAnJYeWBhUMLRetUgBU=
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4 h1:PRXhsszxTt5bbPriTjmaweWUsAnJYeWBhUMLRetUgBU=
|
||||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4/go.mod h1:05eWWy6ZWzmpeImD3UowLTB3VjDMU1yxQ+ENuVWDM3c=
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.36.4/go.mod h1:05eWWy6ZWzmpeImD3UowLTB3VjDMU1yxQ+ENuVWDM3c=
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.43.0 h1:HKORGpiOY0R0nAPtKx/ub8/7XoHhRooP8yNRkuPfelI=
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 h1:KfYpVmrjI7JuToy5k8XV3nkapjWx48k4E4JOtVstzQI=
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.43.0/go.mod h1:e+y1M74SYXo/FcIx3UATwth2+5dDkM8dBi7eXg1tbw8=
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0/go.mod h1:SeQhzAEccGVZVEy7aH87Nh0km+utSpo1pTv6eMMop48=
|
||||||
go.opentelemetry.io/contrib/zpages v0.44.0 h1:9J/cxTTWhM6kzgdaBt6NiXS2HUreXn/eW2M+vzHgDAQ=
|
go.opentelemetry.io/contrib/zpages v0.44.0 h1:9J/cxTTWhM6kzgdaBt6NiXS2HUreXn/eW2M+vzHgDAQ=
|
||||||
go.opentelemetry.io/contrib/zpages v0.44.0/go.mod h1:G3eNCGhodjn2wIdM+i6GneZb1Cqg6dNRBlm1cpNEElg=
|
go.opentelemetry.io/contrib/zpages v0.44.0/go.mod h1:G3eNCGhodjn2wIdM+i6GneZb1Cqg6dNRBlm1cpNEElg=
|
||||||
go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
|
go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
|
||||||
|
|||||||
+1
-1
@@ -219,7 +219,7 @@ func (h *middleware) serveHTTP(w http.ResponseWriter, r *http.Request, next http
|
|||||||
setAfterServeAttributes(span, bw.read, rww.written, rww.statusCode, bw.err, rww.err)
|
setAfterServeAttributes(span, bw.read, rww.written, rww.statusCode, bw.err, rww.err)
|
||||||
|
|
||||||
// Add metrics
|
// Add metrics
|
||||||
attributes := append(labeler.Get(), semconvutil.HTTPServerRequest(h.server, r)...)
|
attributes := append(labeler.Get(), semconvutil.HTTPServerRequestMetrics(h.server, r)...)
|
||||||
if rww.statusCode > 0 {
|
if rww.statusCode > 0 {
|
||||||
attributes = append(attributes, semconv.HTTPStatusCode(rww.statusCode))
|
attributes = append(attributes, semconv.HTTPStatusCode(rww.statusCode))
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
Vendored
+95
-3
@@ -83,6 +83,30 @@ func HTTPServerRequest(server string, req *http.Request) []attribute.KeyValue {
|
|||||||
return hc.ServerRequest(server, req)
|
return hc.ServerRequest(server, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HTTPServerRequestMetrics returns metric attributes for an HTTP request received by a
|
||||||
|
// server.
|
||||||
|
//
|
||||||
|
// The server must be the primary server name if it is known. For example this
|
||||||
|
// would be the ServerName directive
|
||||||
|
// (https://httpd.apache.org/docs/2.4/mod/core.html#servername) for an Apache
|
||||||
|
// server, and the server_name directive
|
||||||
|
// (http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) for an
|
||||||
|
// nginx server. More generically, the primary server name would be the host
|
||||||
|
// header value that matches the default virtual host of an HTTP server. It
|
||||||
|
// should include the host identifier and if a port is used to route to the
|
||||||
|
// server that port identifier should be included as an appropriate port
|
||||||
|
// suffix.
|
||||||
|
//
|
||||||
|
// If the primary server name is not known, server should be an empty string.
|
||||||
|
// The req Host will be used to determine the server instead.
|
||||||
|
//
|
||||||
|
// The following attributes are always returned: "http.method", "http.scheme",
|
||||||
|
// "http.flavor", "net.host.name". The following attributes are
|
||||||
|
// returned if they related values are defined in req: "net.host.port".
|
||||||
|
func HTTPServerRequestMetrics(server string, req *http.Request) []attribute.KeyValue {
|
||||||
|
return hc.ServerRequestMetrics(server, req)
|
||||||
|
}
|
||||||
|
|
||||||
// HTTPServerStatus returns a span status code and message for an HTTP status code
|
// HTTPServerStatus returns a span status code and message for an HTTP status code
|
||||||
// value returned by a server. Status codes in the 400-499 range are not
|
// value returned by a server. Status codes in the 400-499 range are not
|
||||||
// returned as errors.
|
// returned as errors.
|
||||||
@@ -217,7 +241,7 @@ func (c *httpConv) ClientRequest(req *http.Request) []attribute.KeyValue {
|
|||||||
attrs := make([]attribute.KeyValue, 0, n)
|
attrs := make([]attribute.KeyValue, 0, n)
|
||||||
|
|
||||||
attrs = append(attrs, c.method(req.Method))
|
attrs = append(attrs, c.method(req.Method))
|
||||||
attrs = append(attrs, c.proto(req.Proto))
|
attrs = append(attrs, c.flavor(req.Proto))
|
||||||
|
|
||||||
var u string
|
var u string
|
||||||
if req.URL != nil {
|
if req.URL != nil {
|
||||||
@@ -318,7 +342,7 @@ func (c *httpConv) ServerRequest(server string, req *http.Request) []attribute.K
|
|||||||
|
|
||||||
attrs = append(attrs, c.method(req.Method))
|
attrs = append(attrs, c.method(req.Method))
|
||||||
attrs = append(attrs, c.scheme(req.TLS != nil))
|
attrs = append(attrs, c.scheme(req.TLS != nil))
|
||||||
attrs = append(attrs, c.proto(req.Proto))
|
attrs = append(attrs, c.flavor(req.Proto))
|
||||||
attrs = append(attrs, c.NetConv.HostName(host))
|
attrs = append(attrs, c.NetConv.HostName(host))
|
||||||
|
|
||||||
if hostPort > 0 {
|
if hostPort > 0 {
|
||||||
@@ -349,6 +373,64 @@ func (c *httpConv) ServerRequest(server string, req *http.Request) []attribute.K
|
|||||||
return attrs
|
return attrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ServerRequestMetrics returns metric attributes for an HTTP request received
|
||||||
|
// by a server.
|
||||||
|
//
|
||||||
|
// The server must be the primary server name if it is known. For example this
|
||||||
|
// would be the ServerName directive
|
||||||
|
// (https://httpd.apache.org/docs/2.4/mod/core.html#servername) for an Apache
|
||||||
|
// server, and the server_name directive
|
||||||
|
// (http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name) for an
|
||||||
|
// nginx server. More generically, the primary server name would be the host
|
||||||
|
// header value that matches the default virtual host of an HTTP server. It
|
||||||
|
// should include the host identifier and if a port is used to route to the
|
||||||
|
// server that port identifier should be included as an appropriate port
|
||||||
|
// suffix.
|
||||||
|
//
|
||||||
|
// If the primary server name is not known, server should be an empty string.
|
||||||
|
// The req Host will be used to determine the server instead.
|
||||||
|
//
|
||||||
|
// The following attributes are always returned: "http.method", "http.scheme",
|
||||||
|
// "http.flavor", "net.host.name". The following attributes are
|
||||||
|
// returned if they related values are defined in req: "net.host.port".
|
||||||
|
func (c *httpConv) ServerRequestMetrics(server string, req *http.Request) []attribute.KeyValue {
|
||||||
|
// TODO: This currently does not add the specification required
|
||||||
|
// `http.target` attribute. It has too high of a cardinality to safely be
|
||||||
|
// added. An alternate should be added, or this comment removed, when it is
|
||||||
|
// addressed by the specification. If it is ultimately decided to continue
|
||||||
|
// not including the attribute, the HTTPTargetKey field of the httpConv
|
||||||
|
// should be removed as well.
|
||||||
|
|
||||||
|
n := 4 // Method, scheme, proto, and host name.
|
||||||
|
var host string
|
||||||
|
var p int
|
||||||
|
if server == "" {
|
||||||
|
host, p = splitHostPort(req.Host)
|
||||||
|
} else {
|
||||||
|
// Prioritize the primary server name.
|
||||||
|
host, p = splitHostPort(server)
|
||||||
|
if p < 0 {
|
||||||
|
_, p = splitHostPort(req.Host)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hostPort := requiredHTTPPort(req.TLS != nil, p)
|
||||||
|
if hostPort > 0 {
|
||||||
|
n++
|
||||||
|
}
|
||||||
|
attrs := make([]attribute.KeyValue, 0, n)
|
||||||
|
|
||||||
|
attrs = append(attrs, c.methodMetric(req.Method))
|
||||||
|
attrs = append(attrs, c.scheme(req.TLS != nil))
|
||||||
|
attrs = append(attrs, c.flavor(req.Proto))
|
||||||
|
attrs = append(attrs, c.NetConv.HostName(host))
|
||||||
|
|
||||||
|
if hostPort > 0 {
|
||||||
|
attrs = append(attrs, c.NetConv.HostPort(hostPort))
|
||||||
|
}
|
||||||
|
|
||||||
|
return attrs
|
||||||
|
}
|
||||||
|
|
||||||
func (c *httpConv) method(method string) attribute.KeyValue {
|
func (c *httpConv) method(method string) attribute.KeyValue {
|
||||||
if method == "" {
|
if method == "" {
|
||||||
return c.HTTPMethodKey.String(http.MethodGet)
|
return c.HTTPMethodKey.String(http.MethodGet)
|
||||||
@@ -356,6 +438,16 @@ func (c *httpConv) method(method string) attribute.KeyValue {
|
|||||||
return c.HTTPMethodKey.String(method)
|
return c.HTTPMethodKey.String(method)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *httpConv) methodMetric(method string) attribute.KeyValue {
|
||||||
|
method = strings.ToUpper(method)
|
||||||
|
switch method {
|
||||||
|
case http.MethodConnect, http.MethodDelete, http.MethodGet, http.MethodHead, http.MethodOptions, http.MethodPatch, http.MethodPost, http.MethodPut, http.MethodTrace:
|
||||||
|
default:
|
||||||
|
method = "_OTHER"
|
||||||
|
}
|
||||||
|
return c.HTTPMethodKey.String(method)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *httpConv) scheme(https bool) attribute.KeyValue { // nolint:revive
|
func (c *httpConv) scheme(https bool) attribute.KeyValue { // nolint:revive
|
||||||
if https {
|
if https {
|
||||||
return c.HTTPSchemeHTTPS
|
return c.HTTPSchemeHTTPS
|
||||||
@@ -363,7 +455,7 @@ func (c *httpConv) scheme(https bool) attribute.KeyValue { // nolint:revive
|
|||||||
return c.HTTPSchemeHTTP
|
return c.HTTPSchemeHTTP
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *httpConv) proto(proto string) attribute.KeyValue {
|
func (c *httpConv) flavor(proto string) attribute.KeyValue {
|
||||||
switch proto {
|
switch proto {
|
||||||
case "HTTP/1.0":
|
case "HTTP/1.0":
|
||||||
return c.HTTPFlavorKey.String("1.0")
|
return c.HTTPFlavorKey.String("1.0")
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http
|
|||||||
|
|
||||||
// Version is the current release version of the otelhttp instrumentation.
|
// Version is the current release version of the otelhttp instrumentation.
|
||||||
func Version() string {
|
func Version() string {
|
||||||
return "0.43.0"
|
return "0.44.0"
|
||||||
// This string is updated by the pre_release.sh script during release
|
// This string is updated by the pre_release.sh script during release
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1839,7 +1839,7 @@ go.opentelemetry.io/contrib
|
|||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
|
||||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal
|
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal
|
||||||
# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.43.0
|
# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
|
||||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil
|
||||||
|
|||||||
Reference in New Issue
Block a user