Skip to content

Commit

Permalink
Merge #40883
Browse files Browse the repository at this point in the history
40883: demo: Add telemetry about usage of new demo features. r=jordanlewis a=rohany

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

Co-authored-by: Rohan Yadav <rohany@cockroachlabs.com>
  • Loading branch information
craig[bot] and Rohan Yadav committed Sep 18, 2019
2 parents 7c8323a + 61fd06a commit 33eb2c0
Show file tree
Hide file tree
Showing 3 changed files with 71 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
52 changes: 52 additions & 0 deletions pkg/cli/demo_telemetry.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// 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"
)

// demoTelemetry corresponds to different sources of telemetry we are recording from cockroach demo.
type demoTelemetry int

const (
_ demoTelemetry = iota
// nodes represents when cockroach demo is started with multiple nodes.
nodes
// demoLocality represents when cockroach demo is started with user defined localities.
demoLocality
// withLoad represents when cockroach demo is used with a background workload
withLoad
// geoPartitionedReplicas is used when cockroach demo is started with the geo-partitioned-replicas topology.
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 33eb2c0

Please sign in to comment.