Skip to content

Commit

Permalink
demo: Add telemetry about usage of new demo features.
Browse files Browse the repository at this point in the history
This PR adds telemetry for some of the new features added to cockroach
demo (nodes, with-load, localities, geo-partitioned-replicas).

It isn't straight forward how to test this, as there seems to be a race
between the background thread that flushes telemetry and actually
querying for the counter's values on startup.

Work towards #228.

Release justification: Low risk monitoring improvement.

Release note: None
  • Loading branch information
Rohan Yadav committed Sep 18, 2019
1 parent 8e15411 commit c4465cd
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 1 deletion.
18 changes: 18 additions & 0 deletions pkg/cli/demo.go
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,21 @@ func runWorkload(
return nil
}

func incrementTelemetryCounters(cmd *cobra.Command) {
if flagSetForCmd(cmd).Lookup(cliflags.DemoNodes.Name).Changed {
incrementDemoCounter(nodes)
}
if demoCtx.localities != nil {
incrementDemoCounter(demoLocality)
}
if demoCtx.runWorkload {
incrementDemoCounter(withLoad)
}
if demoCtx.geoPartitionedReplicas {
incrementDemoCounter(geoPartitionedReplicas)
}
}

func runDemo(cmd *cobra.Command, gen workload.Generator) error {
if gen == nil && !demoCtx.useEmptyDatabase {
// Use a default dataset unless prevented by --empty.
Expand Down Expand Up @@ -391,6 +406,9 @@ func runDemo(cmd *cobra.Command, gen workload.Generator) error {
}
}

// Record some telemetry about what flags are being used.
incrementTelemetryCounters(cmd)

// Th geo-partitioned replicas demo only works on a 9 node cluster, so set the node count as such.
// Ignore input user localities so that the nodes have the same attributes/localities as expected.
if demoCtx.geoPartitionedReplicas {
Expand Down
47 changes: 47 additions & 0 deletions pkg/cli/demo_telemetry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Copyright 2019 The Cockroach Authors.
//
// Use of this software is governed by the Business Source License
// included in the file licenses/BSL.txt.
//
// As of the Change Date specified in that file, in accordance with
// the Business Source License, use of this software will be governed
// by the Apache License, Version 2.0, included in the file
// licenses/APL.txt.

package cli

import (
"fmt"

"github.com/cockroachdb/cockroach/pkg/server/telemetry"
)

type demoTelemetry int

const (
_ demoTelemetry = iota
nodes
demoLocality
withLoad
geoPartitionedReplicas
)

var demoTelemetryMap = map[demoTelemetry]string{
nodes: "nodes",
demoLocality: "demo-locality",
withLoad: "withload",
geoPartitionedReplicas: "geo-partitioned-replicas",
}

var demoTelemetryCounters map[demoTelemetry]telemetry.Counter

func init() {
demoTelemetryCounters = make(map[demoTelemetry]telemetry.Counter)
for ty, s := range demoTelemetryMap {
demoTelemetryCounters[ty] = telemetry.GetCounterOnce(fmt.Sprintf("cli.demo.%s", s))
}
}

func incrementDemoCounter(d demoTelemetry) {
telemetry.Inc(demoTelemetryCounters[d])
}
2 changes: 1 addition & 1 deletion pkg/server/telemetry/features.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ type ResetCounters bool
const (
// Quantized returns counts quantized to order of magnitude.
Quantized QuantizeCounts = true
// Raw returns the raw, unquanitzed counter values.
// Raw returns the raw, unquantized counter values.
Raw QuantizeCounts = false
// ResetCounts resets the counter to zero after fetching its value.
ResetCounts ResetCounters = true
Expand Down

0 comments on commit c4465cd

Please sign in to comment.