Skip to content

Commit feb5934

Browse files
committed
upd telemetry
1 parent e6fcd31 commit feb5934

File tree

3 files changed

+42
-20
lines changed

3 files changed

+42
-20
lines changed

packages/system/cozystack-workload-controller/cmd/main.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func main() {
101101
Disabled: disableTelemetry,
102102
Endpoint: telemetryEndpoint,
103103
Interval: interval,
104-
CozyStackVersion: cozystackVersion,
104+
CozystackVersion: cozystackVersion,
105105
}
106106

107107
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
@@ -190,7 +190,12 @@ func main() {
190190
}
191191

192192
// Initialize telemetry collector
193-
collector := telemetry.NewCollector(mgr.GetClient(), &telemetryConfig)
193+
collector, err := telemetry.NewCollector(mgr.GetClient(), &telemetryConfig, mgr.GetConfig())
194+
if err != nil {
195+
setupLog.Error(err, "unable to create telemetry collector")
196+
os.Exit(1)
197+
}
198+
194199
if err := mgr.Add(collector); err != nil {
195200
setupLog.Error(err, "unable to set up telemetry collector")
196201
os.Exit(1)

packages/system/cozystack-workload-controller/internal/telemetry/collector.go

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010

1111
corev1 "k8s.io/api/core/v1"
1212
"k8s.io/apimachinery/pkg/types"
13+
"k8s.io/client-go/discovery"
14+
"k8s.io/client-go/rest"
1315
"sigs.k8s.io/controller-runtime/pkg/client"
1416
"sigs.k8s.io/controller-runtime/pkg/log"
1517

@@ -18,18 +20,24 @@ import (
1820

1921
// Collector handles telemetry data collection and sending
2022
type Collector struct {
21-
client client.Client
22-
config *Config
23-
ticker *time.Ticker
24-
stopCh chan struct{}
23+
client client.Client
24+
discoveryClient discovery.DiscoveryInterface
25+
config *Config
26+
ticker *time.Ticker
27+
stopCh chan struct{}
2528
}
2629

2730
// NewCollector creates a new telemetry collector
28-
func NewCollector(client client.Client, config *Config) *Collector {
29-
return &Collector{
30-
client: client,
31-
config: config,
31+
func NewCollector(client client.Client, config *Config, kubeConfig *rest.Config) (*Collector, error) {
32+
discoveryClient, err := discovery.NewDiscoveryClientForConfig(kubeConfig)
33+
if err != nil {
34+
return nil, fmt.Errorf("failed to create discovery client: %w", err)
3235
}
36+
return &Collector{
37+
client: client,
38+
discoveryClient: discoveryClient,
39+
config: config,
40+
}, nil
3341
}
3442

3543
// Start implements manager.Runnable
@@ -80,6 +88,14 @@ func (c *Collector) collect(ctx context.Context) {
8088

8189
clusterID := string(kubeSystemNS.UID)
8290

91+
var cozystackCM corev1.ConfigMap
92+
if err := c.client.Get(ctx, types.NamespacedName{Namespace: "cozy-system", Name: "cozystack"}, &cozystackCM); err != nil {
93+
logger.Error(err, "Failed to get cozystack configmap in cozy-system namespace")
94+
return
95+
}
96+
97+
bundle := cozystackCM.Data["bundle-name"]
98+
8399
// Get Kubernetes version from nodes
84100
var nodeList corev1.NodeList
85101
if err := c.client.List(ctx, &nodeList); err != nil {
@@ -90,13 +106,14 @@ func (c *Collector) collect(ctx context.Context) {
90106
// Create metrics buffer
91107
var metrics strings.Builder
92108

93-
// Add CozyStack info metric
109+
// Add Cozystack info metric
94110
if len(nodeList.Items) > 0 {
95-
k8sVersion := nodeList.Items[0].Status.NodeInfo.KubeletVersion
111+
k8sVersion, _ := c.discoveryClient.ServerVersion()
96112
metrics.WriteString(fmt.Sprintf(
97-
"cozystack_info{version=\"%s\",kubernetes_version=\"%s\"} 1\n",
98-
c.config.CozyStackVersion,
113+
"cozystack_cluster_info{version=\"%s\",kubernetes_version=\"%s\",bundle=\"%s\"} 1\n",
114+
c.config.CozystackVersion,
99115
k8sVersion,
116+
bundle,
100117
))
101118
}
102119

@@ -109,7 +126,7 @@ func (c *Collector) collect(ctx context.Context) {
109126

110127
for osKey, count := range nodeOSCount {
111128
metrics.WriteString(fmt.Sprintf(
112-
"nodes_count{os=\"%s\",kernel=\"%s\"} %d\n",
129+
"cozystack_nodes{os=\"%s\",kernel=\"%s\"} %d\n",
113130
osKey,
114131
nodeList.Items[0].Status.NodeInfo.KernelVersion,
115132
count,
@@ -125,8 +142,8 @@ func (c *Collector) collect(ctx context.Context) {
125142

126143
for _, monitor := range monitorList.Items {
127144
metrics.WriteString(fmt.Sprintf(
128-
"workload_count{uid=\"%s\",kind=\"%s\",type=\"%s\",version=\"%s\"} %d\n",
129-
clusterID,
145+
"cozystack_workload_replicas{uid=\"%s\",kind=\"%s\",type=\"%s\",version=\"%s\"} %d\n",
146+
monitor.UID,
130147
monitor.Spec.Kind,
131148
monitor.Spec.Type,
132149
monitor.Spec.Version,

packages/system/cozystack-workload-controller/internal/telemetry/config.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ type Config struct {
1212
Endpoint string
1313
// Interval between telemetry data collection
1414
Interval time.Duration
15-
// CozyStackVersion represents the current version of CozyStack
16-
CozyStackVersion string
15+
// CozystackVersion represents the current version of Cozystack
16+
CozystackVersion string
1717
}
1818

1919
// DefaultConfig returns default telemetry configuration
@@ -22,6 +22,6 @@ func DefaultConfig() *Config {
2222
Disabled: false,
2323
Endpoint: "https://telemetry.cozystack.io",
2424
Interval: 15 * time.Minute,
25-
CozyStackVersion: "unknown",
25+
CozystackVersion: "unknown",
2626
}
2727
}

0 commit comments

Comments
 (0)