diff --git a/config.go b/config.go
index 68a351523..07dcd94b5 100644
--- a/config.go
+++ b/config.go
@@ -43,9 +43,6 @@ const (
// DefaultMaxWritesPerRequest is the default number of writes per request.
DefaultMaxWritesPerRequest = 5000
-
- // DefaultDiagnosticsInterval is the default sync frequency diagnostic metrics.
- DefaultDiagnosticsInterval = 1 * time.Hour
)
// ClusterTypes set of cluster types.
@@ -91,10 +88,10 @@ type Config struct {
LogPath string `toml:"log-path"`
Metric struct {
- Service string `toml:"service"`
- Host string `toml:"host"`
- PollInterval Duration `toml:"poll-interval"`
- DiagnosticInterval Duration `toml:"diagnostics"`
+ Service string `toml:"service"`
+ Host string `toml:"host"`
+ PollInterval Duration `toml:"poll-interval"`
+ Diagnostics bool `toml:"diagnostics"`
} `toml:"metric"`
TLS TLSConfig
@@ -112,7 +109,7 @@ func NewConfig() *Config {
c.Cluster.Hosts = []string{}
c.AntiEntropy.Interval = Duration(DefaultAntiEntropyInterval)
c.Metric.Service = DefaultMetrics
- c.Metric.DiagnosticInterval = Duration(DefaultDiagnosticsInterval)
+ c.Metric.Diagnostics = true
c.TLS = TLSConfig{}
return c
}
diff --git a/ctl/server.go b/ctl/server.go
index a39c86e3e..46777df48 100644
--- a/ctl/server.go
+++ b/ctl/server.go
@@ -41,7 +41,7 @@ func BuildServerFlags(cmd *cobra.Command, srv *server.Command) {
flags.StringVarP(&srv.Config.Cluster.Type, "cluster.type", "", "gossip", "Determine how the cluster handles membership and state sharing. Choose from [static, gossip]")
flags.StringVarP(&srv.Config.Metric.Service, "metric.service", "", "nop", "Default URI on which pilosa should listen.")
flags.StringVarP(&srv.Config.Metric.Host, "metric.host", "", "", "Default URI to send metrics.")
- flags.DurationVarP((*time.Duration)(&srv.Config.Metric.DiagnosticInterval), "metric.diagnostics", "", time.Hour*1, "Diagnostic reporting interval back to Pilosa.")
+ flags.BoolVarP((&srv.Config.Metric.Diagnostics), "metric.diagnostics", "", true, "Enabled diagnostics reporting.")
flags.DurationVarP((*time.Duration)(&srv.Config.Metric.PollInterval), "metric.poll-interval", "", time.Minute*0, "Polling interval metrics.")
SetTLSConfig(flags, &srv.Config.TLS.CertificatePath, &srv.Config.TLS.CertificateKeyPath, &srv.Config.TLS.SkipVerify)
}
diff --git a/docs/administration.md b/docs/administration.md
index 861d7f6a1..8d8762086 100644
--- a/docs/administration.md
+++ b/docs/administration.md
@@ -131,7 +131,7 @@ Each Pilosa cluster is configured by default to share anonymous usage details wi
OpenFiles: Open file handle count.
GoRoutines: Go routine count.
-You can opt-out of the Pilosa diagnostics reporting by setting the `diagnostics` configuration option under `metric` to `0m0s`.
+You can opt-out of the Pilosa diagnostics reporting by setting either the `metric.diagnostics` configuration option to false, using the `PILOSA_METRIC_DIAGNOSTICS` environment variable, or the TOML configuration file `[metric]` `diagnostics` option.
#### Metrics
diff --git a/docs/configuration.md b/docs/configuration.md
index d786d0513..e74f6798f 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -206,16 +206,16 @@ Any flag that has a value that is a comma separated list on the command line bec
poll-interval = "0m15s"
```
-##### Metric Diagnostics Interval
+##### Metric Diagnostics
-* Description: Diagnostic reporting interval. To disable diagnostics set to zero.
-* Flag: `metric.diagnostics=ā60m0sā`
-* Env: `PILOSA_METRIC_DIAGNOSTICS=60m0s`
+* Description: Enable diagnostic reporting. To disable diagnostics set to false.
+* Flag: `metric.diagnostics`
+* Env: `PILOSA_METRIC_DIAGNOSTICS`
* Config:
```toml
[metric]
- diagnostics = "60m0s"
+ diagnostics = true
```
diff --git a/server.go b/server.go
index d9b4209fc..ff6a57808 100644
--- a/server.go
+++ b/server.go
@@ -517,6 +517,7 @@ func (s *Server) checkMaxSlices(scheme string, hostPort string) (map[string]uint
// monitorDiagnostics periodically polls the the Pilosa Indexes for cluster info.
func (s *Server) monitorDiagnostics() {
if s.DiagnosticInterval <= 0 {
+ s.Logger().Printf("diagnostics disabled")
return
}
diff --git a/server/server.go b/server/server.go
index fb18137ad..7c4ad8081 100644
--- a/server/server.go
+++ b/server/server.go
@@ -43,6 +43,9 @@ func init() {
const (
// DefaultDataDir is the default data directory.
DefaultDataDir = "~/.pilosa"
+
+ // DefaultDiagnosticsInterval is the default sync frequency diagnostic metrics.
+ DefaultDiagnosticsInterval = 1 * time.Hour
)
// Command represents the state of the pilosa server command.
@@ -143,8 +146,10 @@ func (m *Command) SetupServer() error {
m.Server.Logger().Printf("Using data from: %s\n", m.Config.DataDir)
m.Server.Holder.Path = m.Config.DataDir
m.Server.MetricInterval = time.Duration(m.Config.Metric.PollInterval)
+ if m.Config.Metric.Diagnostics {
+ m.Server.DiagnosticInterval = time.Duration(DefaultDiagnosticsInterval)
+ }
m.Server.Holder.Stats, err = NewStatsClient(m.Config.Metric.Service, m.Config.Metric.Host)
- m.Server.DiagnosticInterval = time.Duration(m.Config.Metric.DiagnosticInterval)
if err != nil {
return err
}