aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
Diffstat (limited to 'metrics')
-rw-r--r--metrics/metrics.go31
1 files changed, 24 insertions, 7 deletions
diff --git a/metrics/metrics.go b/metrics/metrics.go
index 5910fb073..6d14c8ecf 100644
--- a/metrics/metrics.go
+++ b/metrics/metrics.go
@@ -15,24 +15,41 @@ import (
)
// Enabled is checked by the constructor functions for all of the
-// standard metrics. If it is true, the metric returned is a stub.
+// standard metrics. If it is true, the metric returned is a stub.
//
// This global kill-switch helps quantify the observer effect and makes
// for less cluttered pprof profiles.
var Enabled = false
-// MetricsEnabledFlag is the CLI flag name to use to enable metrics collections.
-const MetricsEnabledFlag = "metrics"
-const DashboardEnabledFlag = "dashboard"
+// EnabledExpensive is a soft-flag meant for external packages to check if costly
+// metrics gathering is allowed or not. The goal is to separate standard metrics
+// for health monitoring and debug metrics that might impact runtime performance.
+var EnabledExpensive = false
+
+// enablerFlags is the CLI flag names to use to enable metrics collections.
+var enablerFlags = []string{"metrics", "dashboard"}
+
+// expensiveEnablerFlags is the CLI flag names to use to enable metrics collections.
+var expensiveEnablerFlags = []string{"metrics.expensive"}
// Init enables or disables the metrics system. Since we need this to run before
// any other code gets to create meters and timers, we'll actually do an ugly hack
// and peek into the command line args for the metrics flag.
func init() {
for _, arg := range os.Args {
- if flag := strings.TrimLeft(arg, "-"); flag == MetricsEnabledFlag || flag == DashboardEnabledFlag {
- log.Info("Enabling metrics collection")
- Enabled = true
+ flag := strings.TrimLeft(arg, "-")
+
+ for _, enabler := range enablerFlags {
+ if !Enabled && flag == enabler {
+ log.Info("Enabling metrics collection")
+ Enabled = true
+ }
+ }
+ for _, enabler := range expensiveEnablerFlags {
+ if !Enabled && flag == enabler {
+ log.Info("Enabling expensive metrics collection")
+ EnabledExpensive = true
+ }
}
}
}