123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- // Copyright 2018, OpenCensus Authors
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- package ochttp
- import (
- "go.opencensus.io/stats"
- "go.opencensus.io/stats/view"
- "go.opencensus.io/tag"
- )
- // Deprecated: client HTTP measures.
- var (
- // Deprecated: Use a Count aggregation over one of the other client measures to achieve the same effect.
- ClientRequestCount = stats.Int64(
- "opencensus.io/http/client/request_count",
- "Number of HTTP requests started",
- stats.UnitDimensionless)
- // Deprecated: Use ClientSentBytes.
- ClientRequestBytes = stats.Int64(
- "opencensus.io/http/client/request_bytes",
- "HTTP request body size if set as ContentLength (uncompressed)",
- stats.UnitBytes)
- // Deprecated: Use ClientReceivedBytes.
- ClientResponseBytes = stats.Int64(
- "opencensus.io/http/client/response_bytes",
- "HTTP response body size (uncompressed)",
- stats.UnitBytes)
- // Deprecated: Use ClientRoundtripLatency.
- ClientLatency = stats.Float64(
- "opencensus.io/http/client/latency",
- "End-to-end latency",
- stats.UnitMilliseconds)
- )
- // The following client HTTP measures are supported for use in custom views.
- var (
- ClientSentBytes = stats.Int64(
- "opencensus.io/http/client/sent_bytes",
- "Total bytes sent in request body (not including headers)",
- stats.UnitBytes,
- )
- ClientReceivedBytes = stats.Int64(
- "opencensus.io/http/client/received_bytes",
- "Total bytes received in response bodies (not including headers but including error responses with bodies)",
- stats.UnitBytes,
- )
- ClientRoundtripLatency = stats.Float64(
- "opencensus.io/http/client/roundtrip_latency",
- "Time between first byte of request headers sent to last byte of response received, or terminal error",
- stats.UnitMilliseconds,
- )
- )
- // The following server HTTP measures are supported for use in custom views:
- var (
- ServerRequestCount = stats.Int64(
- "opencensus.io/http/server/request_count",
- "Number of HTTP requests started",
- stats.UnitDimensionless)
- ServerRequestBytes = stats.Int64(
- "opencensus.io/http/server/request_bytes",
- "HTTP request body size if set as ContentLength (uncompressed)",
- stats.UnitBytes)
- ServerResponseBytes = stats.Int64(
- "opencensus.io/http/server/response_bytes",
- "HTTP response body size (uncompressed)",
- stats.UnitBytes)
- ServerLatency = stats.Float64(
- "opencensus.io/http/server/latency",
- "End-to-end latency",
- stats.UnitMilliseconds)
- )
- // The following tags are applied to stats recorded by this package. Host, Path
- // and Method are applied to all measures. StatusCode is not applied to
- // ClientRequestCount or ServerRequestCount, since it is recorded before the status is known.
- var (
- // Host is the value of the HTTP Host header.
- //
- // The value of this tag can be controlled by the HTTP client, so you need
- // to watch out for potentially generating high-cardinality labels in your
- // metrics backend if you use this tag in views.
- Host, _ = tag.NewKey("http.host")
- // StatusCode is the numeric HTTP response status code,
- // or "error" if a transport error occurred and no status code was read.
- StatusCode, _ = tag.NewKey("http.status")
- // Path is the URL path (not including query string) in the request.
- //
- // The value of this tag can be controlled by the HTTP client, so you need
- // to watch out for potentially generating high-cardinality labels in your
- // metrics backend if you use this tag in views.
- Path, _ = tag.NewKey("http.path")
- // Method is the HTTP method of the request, capitalized (GET, POST, etc.).
- Method, _ = tag.NewKey("http.method")
- // KeyServerRoute is a low cardinality string representing the logical
- // handler of the request. This is usually the pattern registered on the a
- // ServeMux (or similar string).
- KeyServerRoute, _ = tag.NewKey("http_server_route")
- )
- // Client tag keys.
- var (
- // KeyClientMethod is the HTTP method, capitalized (i.e. GET, POST, PUT, DELETE, etc.).
- KeyClientMethod, _ = tag.NewKey("http_client_method")
- // KeyClientPath is the URL path (not including query string).
- KeyClientPath, _ = tag.NewKey("http_client_path")
- // KeyClientStatus is the HTTP status code as an integer (e.g. 200, 404, 500.), or "error" if no response status line was received.
- KeyClientStatus, _ = tag.NewKey("http_client_status")
- // KeyClientHost is the value of the request Host header.
- KeyClientHost, _ = tag.NewKey("http_client_host")
- )
- // Default distributions used by views in this package.
- var (
- DefaultSizeDistribution = view.Distribution(1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824, 4294967296)
- DefaultLatencyDistribution = view.Distribution(1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000)
- )
- // Package ochttp provides some convenience views for client measures.
- // You still need to register these views for data to actually be collected.
- var (
- ClientSentBytesDistribution = &view.View{
- Name: "opencensus.io/http/client/sent_bytes",
- Measure: ClientSentBytes,
- Aggregation: DefaultSizeDistribution,
- Description: "Total bytes sent in request body (not including headers), by HTTP method and response status",
- TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus},
- }
- ClientReceivedBytesDistribution = &view.View{
- Name: "opencensus.io/http/client/received_bytes",
- Measure: ClientReceivedBytes,
- Aggregation: DefaultSizeDistribution,
- Description: "Total bytes received in response bodies (not including headers but including error responses with bodies), by HTTP method and response status",
- TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus},
- }
- ClientRoundtripLatencyDistribution = &view.View{
- Name: "opencensus.io/http/client/roundtrip_latency",
- Measure: ClientRoundtripLatency,
- Aggregation: DefaultLatencyDistribution,
- Description: "End-to-end latency, by HTTP method and response status",
- TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus},
- }
- ClientCompletedCount = &view.View{
- Name: "opencensus.io/http/client/completed_count",
- Measure: ClientRoundtripLatency,
- Aggregation: view.Count(),
- Description: "Count of completed requests, by HTTP method and response status",
- TagKeys: []tag.Key{KeyClientMethod, KeyClientStatus},
- }
- )
- // Deprecated: Old client Views.
- var (
- // Deprecated: No direct replacement, but see ClientCompletedCount.
- ClientRequestCountView = &view.View{
- Name: "opencensus.io/http/client/request_count",
- Description: "Count of HTTP requests started",
- Measure: ClientRequestCount,
- Aggregation: view.Count(),
- }
- // Deprecated: Use ClientSentBytesDistribution.
- ClientRequestBytesView = &view.View{
- Name: "opencensus.io/http/client/request_bytes",
- Description: "Size distribution of HTTP request body",
- Measure: ClientSentBytes,
- Aggregation: DefaultSizeDistribution,
- }
- // Deprecated: Use ClientReceivedBytesDistribution instead.
- ClientResponseBytesView = &view.View{
- Name: "opencensus.io/http/client/response_bytes",
- Description: "Size distribution of HTTP response body",
- Measure: ClientReceivedBytes,
- Aggregation: DefaultSizeDistribution,
- }
- // Deprecated: Use ClientRoundtripLatencyDistribution instead.
- ClientLatencyView = &view.View{
- Name: "opencensus.io/http/client/latency",
- Description: "Latency distribution of HTTP requests",
- Measure: ClientRoundtripLatency,
- Aggregation: DefaultLatencyDistribution,
- }
- // Deprecated: Use ClientCompletedCount instead.
- ClientRequestCountByMethod = &view.View{
- Name: "opencensus.io/http/client/request_count_by_method",
- Description: "Client request count by HTTP method",
- TagKeys: []tag.Key{Method},
- Measure: ClientSentBytes,
- Aggregation: view.Count(),
- }
- // Deprecated: Use ClientCompletedCount instead.
- ClientResponseCountByStatusCode = &view.View{
- Name: "opencensus.io/http/client/response_count_by_status_code",
- Description: "Client response count by status code",
- TagKeys: []tag.Key{StatusCode},
- Measure: ClientRoundtripLatency,
- Aggregation: view.Count(),
- }
- )
- // Package ochttp provides some convenience views for server measures.
- // You still need to register these views for data to actually be collected.
- var (
- ServerRequestCountView = &view.View{
- Name: "opencensus.io/http/server/request_count",
- Description: "Count of HTTP requests started",
- Measure: ServerRequestCount,
- Aggregation: view.Count(),
- }
- ServerRequestBytesView = &view.View{
- Name: "opencensus.io/http/server/request_bytes",
- Description: "Size distribution of HTTP request body",
- Measure: ServerRequestBytes,
- Aggregation: DefaultSizeDistribution,
- }
- ServerResponseBytesView = &view.View{
- Name: "opencensus.io/http/server/response_bytes",
- Description: "Size distribution of HTTP response body",
- Measure: ServerResponseBytes,
- Aggregation: DefaultSizeDistribution,
- }
- ServerLatencyView = &view.View{
- Name: "opencensus.io/http/server/latency",
- Description: "Latency distribution of HTTP requests",
- Measure: ServerLatency,
- Aggregation: DefaultLatencyDistribution,
- }
- ServerRequestCountByMethod = &view.View{
- Name: "opencensus.io/http/server/request_count_by_method",
- Description: "Server request count by HTTP method",
- TagKeys: []tag.Key{Method},
- Measure: ServerRequestCount,
- Aggregation: view.Count(),
- }
- ServerResponseCountByStatusCode = &view.View{
- Name: "opencensus.io/http/server/response_count_by_status_code",
- Description: "Server response count by status code",
- TagKeys: []tag.Key{StatusCode},
- Measure: ServerLatency,
- Aggregation: view.Count(),
- }
- )
- // DefaultClientViews are the default client views provided by this package.
- // Deprecated: No replacement. Register the views you would like individually.
- var DefaultClientViews = []*view.View{
- ClientRequestCountView,
- ClientRequestBytesView,
- ClientResponseBytesView,
- ClientLatencyView,
- ClientRequestCountByMethod,
- ClientResponseCountByStatusCode,
- }
- // DefaultServerViews are the default server views provided by this package.
- // Deprecated: No replacement. Register the views you would like individually.
- var DefaultServerViews = []*view.View{
- ServerRequestCountView,
- ServerRequestBytesView,
- ServerResponseBytesView,
- ServerLatencyView,
- ServerRequestCountByMethod,
- ServerResponseCountByStatusCode,
- }
|