Skip to content

Conversation

iksaif
Copy link
Contributor

@iksaif iksaif commented May 11, 2025

TODO:

  • Write better PR description
    -- Why we want that
    --- How the agent works today, with links (including flush and aggregation intervals)
    --- Add Graphs
    --- How to enabled it
    --- Note about dd.cardinality.

Example output:

statsd> my.counter:1|c|#tag1:value1|T1746976020
statsd> my.gauge:1|g|#tag1:value1|T1746976020
statsd> my.counter:1|c|#tag1:value1|T1746976030
statsd> my.gauge:1|g|#tag1:value1|T1746976030
statsd> my.counter:0|c|#tag1:value1|T1746976040
statsd> my.counter:1|c|#tag1:value1|T1746976050
statsd> my.gauge:1|g|#tag1:value1|T1746976050
statsd> my.counter:1|c|#tag1:value1|T1746976060
statsd> my.gauge:1|g|#tag1:value1|T1746976060
^C2025/05/11 17:07:48 Received interrupt signal, shutting down...
statsd> my.counter:0|c|#tag1:value1|T1746976068

For

func main() {
	writer := newPrefixWriter(os.Stdout, "statsd> ")
	client, err := statsd.NewWithWriter(
		writer,
		statsd.WithRecommendedAggregationOptionsWithTimestamps(),
		statsd.WithoutTelemetry())
	if err != nil {
		log.Fatal(err)
	}
	defer client.Close()

	// Create a channel to listen for OS signals
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)

	ticker := time.NewTicker(15 * time.Second)
	defer ticker.Stop()

	for {
		select {
		case <-ticker.C:
			client.Gauge("my.gauge", 1, []string{"tag1:value1"}, 1)
			client.Count("my.counter", 1, []string{"tag1:value1"}, 1)
		case <-sigChan:
			log.Println("Received interrupt signal, shutting down...")
			return
		}
	}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant