Merge pull request #935 from prometheus/beorn7/examples

example/random: Move flags and metrics into main()
This commit is contained in:
Kemal Akkoyun 2021-11-10 18:25:28 +01:00 committed by GitHub
commit 1b145cad68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 34 deletions

View File

@ -29,47 +29,45 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/client_golang/prometheus/promhttp"
) )
var ( func main() {
addr = flag.String("listen-address", ":8080", "The address to listen on for HTTP requests.") var (
uniformDomain = flag.Float64("uniform.domain", 0.0002, "The domain for the uniform distribution.") addr = flag.String("listen-address", ":8080", "The address to listen on for HTTP requests.")
normDomain = flag.Float64("normal.domain", 0.0002, "The domain for the normal distribution.") uniformDomain = flag.Float64("uniform.domain", 0.0002, "The domain for the uniform distribution.")
normMean = flag.Float64("normal.mean", 0.00001, "The mean for the normal distribution.") normDomain = flag.Float64("normal.domain", 0.0002, "The domain for the normal distribution.")
oscillationPeriod = flag.Duration("oscillation-period", 10*time.Minute, "The duration of the rate oscillation period.") normMean = flag.Float64("normal.mean", 0.00001, "The mean for the normal distribution.")
) oscillationPeriod = flag.Duration("oscillation-period", 10*time.Minute, "The duration of the rate oscillation period.")
)
var (
// Create a summary to track fictional interservice RPC latencies for three flag.Parse()
// distinct services with different latency distributions. These services are
// differentiated via a "service" label. var (
rpcDurations = prometheus.NewSummaryVec( // Create a summary to track fictional interservice RPC latencies for three
prometheus.SummaryOpts{ // distinct services with different latency distributions. These services are
Name: "rpc_durations_seconds", // differentiated via a "service" label.
Help: "RPC latency distributions.", rpcDurations = prometheus.NewSummaryVec(
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}, prometheus.SummaryOpts{
}, Name: "rpc_durations_seconds",
[]string{"service"}, Help: "RPC latency distributions.",
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
},
[]string{"service"},
)
// The same as above, but now as a histogram, and only for the normal
// distribution. The buckets are targeted to the parameters of the
// normal distribution, with 20 buckets centered on the mean, each
// half-sigma wide.
rpcDurationsHistogram = prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "rpc_durations_histogram_seconds",
Help: "RPC latency distributions.",
Buckets: prometheus.LinearBuckets(*normMean-5**normDomain, .5**normDomain, 20),
})
) )
// The same as above, but now as a histogram, and only for the normal
// distribution. The buckets are targeted to the parameters of the
// normal distribution, with 20 buckets centered on the mean, each
// half-sigma wide.
rpcDurationsHistogram = prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "rpc_durations_histogram_seconds",
Help: "RPC latency distributions.",
Buckets: prometheus.LinearBuckets(*normMean-5**normDomain, .5**normDomain, 20),
})
)
func init() {
// Register the summary and the histogram with Prometheus's default registry. // Register the summary and the histogram with Prometheus's default registry.
prometheus.MustRegister(rpcDurations) prometheus.MustRegister(rpcDurations)
prometheus.MustRegister(rpcDurationsHistogram) prometheus.MustRegister(rpcDurationsHistogram)
// Add Go module build info. // Add Go module build info.
prometheus.MustRegister(prometheus.NewBuildInfoCollector()) prometheus.MustRegister(prometheus.NewBuildInfoCollector())
}
func main() {
flag.Parse()
start := time.Now() start := time.Now()