Patterns
This library is not intended to be used standalone and provides no guarantees of backwards compatibility. README.md
Metrics
The metrics package provides a common interface for emitting metrics. It provides a set of functions for creating different metric types, such as counters, timers, gauges, and histograms.
The metrics package supports different backends, such as Prometheus, Go-kit, and Expvar. The specific backend is configured using the Factory
interface.
The metrics package uses a Namespace
pattern to group metrics together. metrics/factory.go
The metrics package uses a Multi
pattern to emit metrics to multiple backends simultaneously. metrics/multi/multi.go
The metrics package uses a Wrap
pattern to add functionality to the Factory
interface. metrics/adapters/factory_test.go metrics/expvar/factory_test.go metrics/prometheus/factory.go metrics/go-kit/factory_test.go
The metrics package provides a set of interfaces for different metric types. metrics/counter.go metrics/histogram.go
The metrics package uses a Factory
pattern to create new metrics. metrics/expvar/factory.go
Testing
The library uses a Makefile
to automate common testing tasks. Makefile
Constraints
The library uses a Gopkg.toml
file to specify dependencies and their versions. Gopkg.toml
DCO
The library uses a DCO
to ensure that all contributions are properly attributed. DCO
## Top-Level Directory Explanations
<a class='local-link directory-link' data-ref="metrics/" href="#metrics/">metrics/</a> - This directory contains the metrics implementation for the Jaeger Tracing library.
<a class='local-link directory-link' data-ref="metrics/adapters/" href="#metrics/adapters/">metrics/adapters/</a> - This subdirectory contains the various metric adapters for different backends.
<a class='local-link directory-link' data-ref="metrics/expvar/" href="#metrics/expvar/">metrics/expvar/</a> - This subdirectory contains the implementation for exposing metrics as HTTP endpoints using the expvar package.
<a class='local-link directory-link' data-ref="metrics/fork/" href="#metrics/fork/">metrics/fork/</a> - This subdirectory contains the implementation for forking metrics between processes.
<a class='local-link directory-link' data-ref="metrics/go-kit/" href="#metrics/go-kit/">metrics/go-kit/</a> - This subdirectory contains the Go-Kit integration for the Jaeger Tracing library.
<a class='local-link directory-link' data-ref="metrics/go-kit/expvar/" href="#metrics/go-kit/expvar/">metrics/go-kit/expvar/</a> - This subdirectory contains the expvar implementation for the Go-Kit integration.
<a class='local-link directory-link' data-ref="metrics/go-kit/influx/" href="#metrics/go-kit/influx/">metrics/go-kit/influx/</a> - This subdirectory contains the InfluxDB implementation for the Go-Kit integration.
<a class='local-link directory-link' data-ref="metrics/metricstest/" href="#metrics/metricstest/">metrics/metricstest/</a> - This subdirectory contains the testing implementation for the metrics.
<a class='local-link directory-link' data-ref="metrics/multi/" href="#metrics/multi/">metrics/multi/</a> - This subdirectory contains the implementation for collecting metrics from multiple sources.
<a class='local-link directory-link' data-ref="metrics/prometheus/" href="#metrics/prometheus/">metrics/prometheus/</a> - This subdirectory contains the Prometheus implementation for the Jaeger Tracing library.
<a class='local-link directory-link' data-ref="metrics/tally/" href="#metrics/tally/">metrics/tally/</a> - This subdirectory contains the implementation for counting metrics using the tally package.
<a class='local-link directory-link' data-ref="sample/" href="#sample/">sample/</a> - This directory contains a sample implementation for the Jaeger Tracing library.