12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Copyright 2017, 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 zpages implements a collection of HTML pages that display RPC stats
- // and trace data, and also functions to write that same data in plain text to
- // an io.Writer.
- //
- // Users can also embed the HTML for stats and traces in custom status pages.
- //
- // zpages are currrently work-in-process and cannot display minutely and
- // hourly stats correctly.
- //
- // Performance
- //
- // Installing the zpages has a performance overhead because additional traces
- // and stats will be collected in-process. In most cases, we expect this
- // overhead will not be significant but it depends on many factors, including
- // how many spans your process creates and how richly annotated they are.
- package zpages // import "go.opencensus.io/zpages"
- import (
- "net/http"
- "path"
- "sync"
- "go.opencensus.io/internal"
- )
- // TODO(ramonza): Remove Handler to make initialization lazy.
- // Handler is deprecated: Use Handle.
- var Handler http.Handler
- func init() {
- mux := http.NewServeMux()
- Handle(mux, "/")
- Handler = mux
- }
- // Handle adds the z-pages to the given ServeMux rooted at pathPrefix.
- func Handle(mux *http.ServeMux, pathPrefix string) {
- enable()
- if mux == nil {
- mux = http.DefaultServeMux
- }
- mux.HandleFunc(path.Join(pathPrefix, "rpcz"), rpczHandler)
- mux.HandleFunc(path.Join(pathPrefix, "tracez"), tracezHandler)
- mux.Handle(path.Join(pathPrefix, "public/"), http.FileServer(fs))
- }
- var enableOnce sync.Once
- func enable() {
- enableOnce.Do(func() {
- internal.LocalSpanStoreEnabled = true
- registerRPCViews()
- })
- }
|