Skip to content

Commit 4b522ed

Browse files
committed
cannot share labels by agent and manager
Signed-off-by: clyang82 <chuyang@redhat.com>
1 parent 525b638 commit 4b522ed

3 files changed

Lines changed: 111 additions & 62 deletions

File tree

pkg/cloudevents/generic/agentclient.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (c *CloudEventAgentClient[T]) Resync(ctx context.Context, source string) er
111111
return err
112112
}
113113

114-
increaseCloudEventsSentCounter(evt.Source(), source, "", c.codec.EventDataType().String(), string(eventType.SubResource), string(eventType.Action))
114+
increaseCloudEventsSentFromAgentCounter(evt.Source(), source, c.codec.EventDataType().String(), string(eventType.SubResource), string(eventType.Action))
115115

116116
return nil
117117
}
@@ -132,7 +132,7 @@ func (c *CloudEventAgentClient[T]) Publish(ctx context.Context, eventType types.
132132
}
133133

134134
originalSource, _ := cloudeventstypes.ToString(evt.Context.GetExtensions()[types.ExtensionOriginalSource])
135-
increaseCloudEventsSentCounter(evt.Source(), originalSource, "", eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
135+
increaseCloudEventsSentFromAgentCounter(evt.Source(), originalSource, eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
136136

137137
return nil
138138
}
@@ -153,7 +153,7 @@ func (c *CloudEventAgentClient[T]) receive(ctx context.Context, evt cloudevents.
153153
return
154154
}
155155

156-
increaseCloudEventsReceivedCounter(evt.Source(), "", eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
156+
increaseCloudEventsReceivedByAgentCounter(evt.Source(), eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
157157

158158
if eventType.Action == types.ResyncRequestAction {
159159
if eventType.SubResource != types.SubResourceStatus {

pkg/cloudevents/generic/metrics_collector.go

Lines changed: 104 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,25 @@ const (
2828

2929
const noneOriginalSource = "none"
3030

31-
// cloudeventsReceivedMetricsLabels - Array of labels added to cloudevents received metrics:
32-
var cloudeventsReceivedMetricsLabels = []string{
31+
// cloudeventsReceivedBySourceMetricsLabels - Array of labels added to cloudevents received by source metrics:
32+
var cloudeventsReceivedBySourceMetricsLabels = []string{
3333
metricsSourceLabel, // source
3434
metricsConsumerLabel, // consumer
3535
metricsDataTypeLabel, // data type, e.g. manifests, manifestbundles
3636
metricsSubResourceLabel, // subresource, eg, spec or status
3737
metricsActionLabel, // action, eg, create, update, delete, resync_request, resync_response
3838
}
3939

40-
// cloudeventsSentMetricsLabels - Array of labels added to cloudevents sent metrics:
41-
var cloudeventsSentMetricsLabels = []string{
40+
// cloudeventsReceivedByClientMetricsLabels - Array of labels added to cloudevents received by client metrics:
41+
var cloudeventsReceivedByClientMetricsLabels = []string{
42+
metricsSourceLabel, // source
43+
metricsDataTypeLabel, // data type, e.g. manifests, manifestbundles
44+
metricsSubResourceLabel, // subresource, eg, spec or status
45+
metricsActionLabel, // action, eg, create, update, delete, resync_request, resync_response
46+
}
47+
48+
// cloudeventsSentFromSourceMetricsLabels - Array of labels added to cloudevents sent from source metrics:
49+
var cloudeventsSentFromSourceMetricsLabels = []string{
4250
metricsSourceLabel, // source
4351
metricsOriginalSourceLabel, // original source, if no, set to "none"
4452
metricsConsumerLabel, // consumer
@@ -47,6 +55,15 @@ var cloudeventsSentMetricsLabels = []string{
4755
metricsActionLabel, // action, eg, create, update, delete, resync_request, resync_response
4856
}
4957

58+
// cloudeventsSentFromClientMetricsLabels - Array of labels added to cloudevents sent from client metrics:
59+
var cloudeventsSentFromClientMetricsLabels = []string{
60+
metricsSourceLabel, // source
61+
metricsOriginalSourceLabel, // original source, if no, set to "none"
62+
metricsDataTypeLabel, // data type, e.g. manifests, manifestbundles
63+
metricsSubResourceLabel, // subresource, eg, spec or status
64+
metricsActionLabel, // action, eg, create, update, delete, resync_request, resync_response
65+
}
66+
5067
// cloudeventsResyncMetricsLabels - Array of labels added to cloudevents resync metrics:
5168
var cloudeventsResyncMetricsLabels = []string{
5269
metricsSourceLabel, // source
@@ -75,34 +92,60 @@ const (
7592
workProcessedCounter = "processed_total"
7693
)
7794

78-
// The cloudevents received counter metric is a counter with a base metric name of 'received_total'
79-
// and a help string of 'The total number of received CloudEvents.'
80-
// For example, 2 CloudEvents received from source1 to consumer1 with data type manifests, one for resource create,
95+
// The cloudevents received by source counter metric is a counter with a base metric name of 'received_by_source_total'
96+
// and a help string of 'The total number of CloudEvents received by source.'
97+
// For example, 2 CloudEvents received from agent to source with consumer1 for data type manifests, one for resource create,
98+
// another for resource update would result in the following metrics:
99+
// cloudevents_received_total{source="agent1",consumer="consumer1",type="io.open-cluster-management.works.v1alpha1.manifests",subresource="spec",action="create"} 1
100+
// cloudevents_received_total{source="agent1",consumer="consumer1",type="io.open-cluster-management.works.v1alpha1.manifests",subresource="spec",action="update"} 1
101+
var cloudeventsReceivedBySourceCounterMetric = prometheus.NewCounterVec(
102+
prometheus.CounterOpts{
103+
Subsystem: cloudeventsMetricsSubsystem,
104+
Name: receivedCounterMetric,
105+
Help: "The total number of CloudEvents received by source.",
106+
},
107+
cloudeventsReceivedBySourceMetricsLabels,
108+
)
109+
110+
// The cloudevents received by agent counter metric is a counter with a base metric name of 'received_by_agent_total'
111+
// and a help string of 'The total number of CloudEvents received by agent.'
112+
// For example, 2 CloudEvents received from source1 by agent with data type manifests, one for resource create,
81113
// another for resource update would result in the following metrics:
82-
// cloudevents_received_total{source="source1",consumer="consumer1",type="io.open-cluster-management.works.v1alpha1.manifests",subresource="spec",action="create"} 1
83-
// cloudevents_received_total{source="source1",consumer="consumer1",type="io.open-cluster-management.works.v1alpha1.manifests",subresource="spec",action="update"} 1
84-
var cloudeventsReceivedCounterMetric = prometheus.NewCounterVec(
114+
// cloudevents_received_total{source="source1",type="io.open-cluster-management.works.v1alpha1.manifests",subresource="spec",action="create"} 1
115+
// cloudevents_received_total{source="source1",type="io.open-cluster-management.works.v1alpha1.manifests",subresource="spec",action="update"} 1
116+
var cloudeventsReceivedByClientCounterMetric = prometheus.NewCounterVec(
85117
prometheus.CounterOpts{
86118
Subsystem: cloudeventsMetricsSubsystem,
87119
Name: receivedCounterMetric,
88-
Help: "The total number of received CloudEvents.",
120+
Help: "The total number of CloudEvents received by client.",
121+
},
122+
cloudeventsReceivedByClientMetricsLabels,
123+
)
124+
125+
// The cloudevents sent from source counter metric is a counter with a base metric name of 'sent_from_source_total'
126+
// and a help string of 'The total number of CloudEvents sent from source.'
127+
// For example, 1 cloudevent sent from source1 to consumer1 with data type manifestbundles for resource spec create would result in the following metrics:
128+
// cloudevents_sent_total{source="source1",original_source="none",consumer="consumer1",type="io.open-cluster-management.works.v1alpha1.manifestbundles",subresource="spec",action="create"} 1
129+
var cloudeventsSentFromSourceCounterMetric = prometheus.NewCounterVec(
130+
prometheus.CounterOpts{
131+
Subsystem: cloudeventsMetricsSubsystem,
132+
Name: sentCounterMetric,
133+
Help: "The total number of CloudEvents sent from source.",
89134
},
90-
cloudeventsReceivedMetricsLabels,
135+
cloudeventsSentFromSourceMetricsLabels,
91136
)
92137

93-
// The cloudevents sent counter metric is a counter with a base metric name of 'sent_total'
94-
// and a help string of 'The total number of sent CloudEvents.'
95-
// For example, 1 cloudevent sent from source1 with data type manifestbundles for resource spec create (original source is empty),
96-
// and 2 CloudEvents sent from consumer1-work-agent back to source1 for resource status update would result in the following metrics:
97-
// cloudevents_sent_total{source="source1",original_source="none",type="io.open-cluster-management.works.v1alpha1.manifestbundles",subresource="spec",action="create"} 1
138+
// The cloudevents sent from agent counter metric is a counter with a base metric name of 'sent_from_agent_total'
139+
// and a help string of 'The total number of CloudEvents sent from agent.'
140+
// For example, 2 CloudEvents sent from consumer1-work-agent back to source1 for resource status update would result in the following metrics:
98141
// cloudevents_sent_total{source="consumer1-work-agent",original_source="source1",type="io.open-cluster-management.works.v1alpha1.manifestbundles",subresource="status",action="update"} 2
99-
var cloudeventsSentCounterMetric = prometheus.NewCounterVec(
142+
var cloudeventsSentFromClientCounterMetric = prometheus.NewCounterVec(
100143
prometheus.CounterOpts{
101144
Subsystem: cloudeventsMetricsSubsystem,
102145
Name: sentCounterMetric,
103-
Help: "The total number of sent CloudEvents.",
146+
Help: "The total number of CloudEvents sent from client.",
104147
},
105-
cloudeventsSentMetricsLabels,
148+
cloudeventsSentFromClientMetricsLabels,
106149
)
107150

108151
// The resource spec resync duration metric is a histogram with a base metric name of 'resource_spec_resync_duration_second'
@@ -195,68 +238,74 @@ var workProcessedCounterMetric = prometheus.NewCounterVec(
195238
workMetricsLabels,
196239
)
197240

198-
// Register the metrics:
199-
func RegisterCloudEventsMetrics(register prometheus.Registerer) {
200-
register.MustRegister(cloudeventsReceivedCounterMetric)
201-
register.MustRegister(cloudeventsSentCounterMetric)
202-
register.MustRegister(resourceSpecResyncDurationMetric)
241+
// Register the metrics
242+
func RegisterClientCloudEventsMetrics(register prometheus.Registerer) {
243+
register.MustRegister(cloudeventsReceivedByClientCounterMetric)
244+
register.MustRegister(cloudeventsSentFromClientCounterMetric)
203245
register.MustRegister(resourceStatusResyncDurationMetric)
204-
register.MustRegister(clientReconnectedCounterMetric)
205246
register.MustRegister(workProcessedCounterMetric)
206247
}
207248

208-
// Unregister the metrics:
209-
func UnregisterCloudEventsMetrics(register prometheus.Registerer) {
210-
register.Unregister(cloudeventsReceivedCounterMetric)
211-
register.Unregister(cloudeventsSentCounterMetric)
212-
register.Unregister(resourceStatusResyncDurationMetric)
213-
register.Unregister(resourceStatusResyncDurationMetric)
214-
register.Unregister(clientReconnectedCounterMetric)
215-
register.Unregister(workProcessedCounterMetric)
249+
// Register the metrics
250+
func RegisterSourceCloudEventsMetrics(register prometheus.Registerer) {
251+
register.MustRegister(cloudeventsReceivedBySourceCounterMetric)
252+
register.MustRegister(cloudeventsSentFromSourceCounterMetric)
253+
register.MustRegister(resourceSpecResyncDurationMetric)
254+
register.MustRegister(clientReconnectedCounterMetric)
216255
}
217256

218-
// ResetCloudEventsMetrics resets all collectors
219-
func ResetCloudEventsMetrics() {
220-
cloudeventsReceivedCounterMetric.Reset()
221-
cloudeventsSentCounterMetric.Reset()
222-
resourceSpecResyncDurationMetric.Reset()
223-
resourceStatusResyncDurationMetric.Reset()
224-
clientReconnectedCounterMetric.Reset()
225-
workProcessedCounterMetric.Reset()
257+
// increaseCloudEventsReceivedBySourceCounter increases the cloudevents received by source counter metric:
258+
func increaseCloudEventsReceivedBySourceCounter(source, consumer, dataType, subresource, action string) {
259+
labels := prometheus.Labels{
260+
metricsSourceLabel: source,
261+
metricsConsumerLabel: consumer,
262+
metricsDataTypeLabel: dataType,
263+
metricsSubResourceLabel: subresource,
264+
metricsActionLabel: action,
265+
}
266+
cloudeventsReceivedBySourceCounterMetric.With(labels).Inc()
226267
}
227268

228-
// increaseCloudEventsReceivedCounter increases the cloudevents received counter metric:
229-
func increaseCloudEventsReceivedCounter(source, consumer, dataType, subresource, action string) {
269+
// increaseCloudEventsReceivedByAgentCounter increases the cloudevents received by agent counter metric:
270+
func increaseCloudEventsReceivedByAgentCounter(source, dataType, subresource, action string) {
230271
labels := prometheus.Labels{
231272
metricsSourceLabel: source,
232273
metricsDataTypeLabel: dataType,
233274
metricsSubResourceLabel: subresource,
234275
metricsActionLabel: action,
235276
}
236-
// if it is called by the agent, the consumer is empty
237-
if consumer != "" {
238-
labels[metricsConsumerLabel] = consumer
239-
}
240-
cloudeventsReceivedCounterMetric.With(labels).Inc()
277+
cloudeventsReceivedByAgentCounterMetric.With(labels).Inc()
241278
}
242279

243-
// increaseCloudEventsSentCounter increases the cloudevents sent counter metric:
244-
func increaseCloudEventsSentCounter(source, originalSource, consumer, dataType, subresource, action string) {
280+
// increaseCloudEventsSentFromSourceCounter increases the cloudevents sent from source counter metric:
281+
func increaseCloudEventsSentFromSourceCounter(source, originalSource, consumer, dataType, subresource, action string) {
245282
if originalSource == "" {
246283
originalSource = noneOriginalSource
247284
}
248285
labels := prometheus.Labels{
249286
metricsSourceLabel: source,
250287
metricsOriginalSourceLabel: originalSource,
288+
metricsConsumerLabel: consumer,
251289
metricsDataTypeLabel: dataType,
252290
metricsSubResourceLabel: subresource,
253291
metricsActionLabel: action,
254292
}
255-
// if it is called by the agent, the consumer is empty
256-
if consumer != "" {
257-
labels[metricsConsumerLabel] = consumer
293+
cloudeventsSentFromSourceCounterMetric.With(labels).Inc()
294+
}
295+
296+
// increaseCloudEventsSentFromAgentCounter increases the cloudevents sent from agent counter metric:
297+
func increaseCloudEventsSentFromAgentCounter(source, originalSource, dataType, subresource, action string) {
298+
if originalSource == "" {
299+
originalSource = noneOriginalSource
300+
}
301+
labels := prometheus.Labels{
302+
metricsSourceLabel: source,
303+
metricsOriginalSourceLabel: originalSource,
304+
metricsDataTypeLabel: dataType,
305+
metricsSubResourceLabel: subresource,
306+
metricsActionLabel: action,
258307
}
259-
cloudeventsSentCounterMetric.With(labels).Inc()
308+
cloudeventsSentFromAgentCounterMetric.With(labels).Inc()
260309
}
261310

262311
// updateResourceSpecResyncDurationMetric updates the resource spec resync duration metric:

pkg/cloudevents/generic/sourceclient.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func (c *CloudEventSourceClient[T]) Resync(ctx context.Context, clusterName stri
105105
return err
106106
}
107107

108-
increaseCloudEventsSentCounter(evt.Source(), "", clusterName, c.codec.EventDataType().String(), string(eventType.SubResource), string(eventType.Action))
108+
increaseCloudEventsSentFromSourceCounter(evt.Source(), "", clusterName, c.codec.EventDataType().String(), string(eventType.SubResource), string(eventType.Action))
109109

110110
return nil
111111
}
@@ -130,7 +130,7 @@ func (c *CloudEventSourceClient[T]) Publish(ctx context.Context, eventType types
130130
}
131131

132132
clusterName := evt.Context.GetExtensions()[types.ExtensionClusterName].(string)
133-
increaseCloudEventsSentCounter(evt.Source(), "", clusterName, eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
133+
increaseCloudEventsSentFromSourceCounter(evt.Source(), "", clusterName, eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
134134

135135
return nil
136136
}
@@ -158,7 +158,7 @@ func (c *CloudEventSourceClient[T]) receive(ctx context.Context, evt cloudevents
158158
cn = ""
159159
}
160160

161-
increaseCloudEventsReceivedCounter(evt.Source(), cn, eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
161+
increaseCloudEventsReceivedBySourceCounter(evt.Source(), cn, eventType.CloudEventsDataType.String(), string(eventType.SubResource), string(eventType.Action))
162162

163163
if eventType.Action == types.ResyncRequestAction {
164164
if eventType.SubResource != types.SubResourceSpec {
@@ -290,7 +290,7 @@ func (c *CloudEventSourceClient[T]) respondResyncSpecRequest(
290290
if err := c.publish(ctx, evt); err != nil {
291291
return err
292292
}
293-
increaseCloudEventsSentCounter(evt.Source(), "", fmt.Sprintf("%s", clusterName), evtDataType.String(), string(eventType.SubResource), string(eventType.Action))
293+
increaseCloudEventsSentFromSourceCounter(evt.Source(), "", fmt.Sprintf("%s", clusterName), evtDataType.String(), string(eventType.SubResource), string(eventType.Action))
294294
}
295295

296296
return nil

0 commit comments

Comments
 (0)