Skip to content

Commit ac9c937

Browse files
authored
Collect UpstreamSettingsPolicyCount in telemetry (#2922)
Problem: Want to collect number of UpstreamSettingsPolicies in cluster. Solution: Collect the count of UpstreamSettingsPolicies in cluster.
1 parent b968639 commit ac9c937

File tree

7 files changed

+24
-17
lines changed

7 files changed

+24
-17
lines changed

internal/mode/static/telemetry/collector.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ type NGFResourceCounts struct {
9797
NginxProxyCount int64
9898
// SnippetsFilterCount is the number of SnippetsFilters.
9999
SnippetsFilterCount int64
100+
// UpstreamSettingsPolicyCount is the number of UpstreamSettingsPolicies.
101+
UpstreamSettingsPolicyCount int64
100102
}
101103

102104
// DataCollectorConfig holds configuration parameters for DataCollectorImpl.
@@ -239,6 +241,8 @@ func collectGraphResourceCount(
239241
}
240242
case kinds.ObservabilityPolicy:
241243
ngfResourceCounts.ObservabilityPolicyCount++
244+
case kinds.UpstreamSettingsPolicy:
245+
ngfResourceCounts.UpstreamSettingsPolicyCount++
242246
}
243247
}
244248

internal/mode/static/telemetry/collector_test.go

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,10 @@ var _ = Describe("Collector", Ordered, func() {
329329
NsName: types.NamespacedName{Namespace: "test", Name: "ObservabilityPolicy-1"},
330330
GVK: schema.GroupVersionKind{Kind: kinds.ObservabilityPolicy},
331331
}: {},
332+
{
333+
NsName: types.NamespacedName{Namespace: "test", Name: "UpstreamSettingsPolicy-1"},
334+
GVK: schema.GroupVersionKind{Kind: kinds.UpstreamSettingsPolicy},
335+
}: {},
332336
},
333337
NginxProxy: &graph.NginxProxy{},
334338
SnippetsFilters: map[types.NamespacedName]*graph.SnippetsFilter{
@@ -412,6 +416,7 @@ var _ = Describe("Collector", Ordered, func() {
412416
ObservabilityPolicyCount: 1,
413417
NginxProxyCount: 1,
414418
SnippetsFilterCount: 3,
419+
UpstreamSettingsPolicyCount: 1,
415420
}
416421
expData.ClusterVersion = "1.29.2"
417422
expData.ClusterPlatform = "kind"
@@ -603,6 +608,10 @@ var _ = Describe("Collector", Ordered, func() {
603608
NsName: types.NamespacedName{Namespace: "test", Name: "ObservabilityPolicy-1"},
604609
GVK: schema.GroupVersionKind{Kind: kinds.ObservabilityPolicy},
605610
}: {},
611+
{
612+
NsName: types.NamespacedName{Namespace: "test", Name: "UpstreamSettingsPolicy-1"},
613+
GVK: schema.GroupVersionKind{Kind: kinds.UpstreamSettingsPolicy},
614+
}: {},
606615
},
607616
NginxProxy: &graph.NginxProxy{},
608617
SnippetsFilters: map[types.NamespacedName]*graph.SnippetsFilter{
@@ -682,6 +691,7 @@ var _ = Describe("Collector", Ordered, func() {
682691
ObservabilityPolicyCount: 1,
683692
NginxProxyCount: 1,
684693
SnippetsFilterCount: 1,
694+
UpstreamSettingsPolicyCount: 1,
685695
}
686696

687697
data, err := dataCollector.Collect(ctx)
@@ -693,22 +703,7 @@ var _ = Describe("Collector", Ordered, func() {
693703
It("ignores invalid and empty upstreams", func(ctx SpecContext) {
694704
fakeGraphGetter.GetLatestGraphReturns(&graph.Graph{})
695705
fakeConfigurationGetter.GetLatestConfigurationReturns(invalidUpstreamsConfig)
696-
expData.NGFResourceCounts = telemetry.NGFResourceCounts{
697-
GatewayCount: 0,
698-
GatewayClassCount: 0,
699-
HTTPRouteCount: 0,
700-
TLSRouteCount: 0,
701-
SecretCount: 0,
702-
ServiceCount: 0,
703-
EndpointCount: 0,
704-
GRPCRouteCount: 0,
705-
BackendTLSPolicyCount: 0,
706-
GatewayAttachedClientSettingsPolicyCount: 0,
707-
RouteAttachedClientSettingsPolicyCount: 0,
708-
ObservabilityPolicyCount: 0,
709-
NginxProxyCount: 0,
710-
SnippetsFilterCount: 0,
711-
}
706+
expData.NGFResourceCounts = telemetry.NGFResourceCounts{}
712707

713708
data, err := dataCollector.Collect(ctx)
714709

internal/mode/static/telemetry/data.avdl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ attached at the Gateway level. */
9999
/** SnippetsFilterCount is the number of SnippetsFilters. */
100100
long? SnippetsFilterCount = null;
101101

102+
/** UpstreamSettingsPolicyCount is the number of UpstreamSettingsPolicies. */
103+
long? UpstreamSettingsPolicyCount = null;
104+
102105
/** NGFReplicaCount is the number of replicas of the NGF Pod. */
103106
long? NGFReplicaCount = null;
104107

internal/mode/static/telemetry/data_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func TestDataAttributes(t *testing.T) {
3939
ObservabilityPolicyCount: 11,
4040
NginxProxyCount: 12,
4141
SnippetsFilterCount: 13,
42+
UpstreamSettingsPolicyCount: 14,
4243
},
4344
NGFReplicaCount: 3,
4445
SnippetsFiltersDirectives: []string{"main-three-count", "http-two-count", "server-one-count"},
@@ -77,6 +78,7 @@ func TestDataAttributes(t *testing.T) {
7778
attribute.Int64("ObservabilityPolicyCount", 11),
7879
attribute.Int64("NginxProxyCount", 12),
7980
attribute.Int64("SnippetsFilterCount", 13),
81+
attribute.Int64("UpstreamSettingsPolicyCount", 14),
8082
attribute.Int64("NGFReplicaCount", 3),
8183
}
8284

@@ -119,6 +121,7 @@ func TestDataAttributesWithEmptyData(t *testing.T) {
119121
attribute.Int64("ObservabilityPolicyCount", 0),
120122
attribute.Int64("NginxProxyCount", 0),
121123
attribute.Int64("SnippetsFilterCount", 0),
124+
attribute.Int64("UpstreamSettingsPolicyCount", 0),
122125
attribute.Int64("NGFReplicaCount", 0),
123126
}
124127

internal/mode/static/telemetry/ngfresourcecounts_attributes_generated.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func (d *NGFResourceCounts) Attributes() []attribute.KeyValue {
2626
attrs = append(attrs, attribute.Int64("ObservabilityPolicyCount", d.ObservabilityPolicyCount))
2727
attrs = append(attrs, attribute.Int64("NginxProxyCount", d.NginxProxyCount))
2828
attrs = append(attrs, attribute.Int64("SnippetsFilterCount", d.SnippetsFilterCount))
29+
attrs = append(attrs, attribute.Int64("UpstreamSettingsPolicyCount", d.UpstreamSettingsPolicyCount))
2930

3031
return attrs
3132
}

site/content/overview/product-telemetry.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Telemetry data is collected once every 24 hours and sent to a service managed by
2727
- **Deployment Replica Count:** the count of NGINX Gateway Fabric Pods.
2828
- **Image Build Source:** whether the image was built by GitHub or locally (values are `gha`, `local`, or `unknown`). The source repository of the images is **not** collected.
2929
- **Deployment Flags:** a list of NGINX Gateway Fabric Deployment flags that are specified by a user. The actual values of non-boolean flags are **not** collected; we only record that they are either `true` or `false` for boolean flags and `default` or `user-defined` for the rest.
30-
- **Count of Resources:** the total count of resources related to NGINX Gateway Fabric. This includes `GatewayClasses`, `Gateways`, `HTTPRoutes`,`GRPCRoutes`, `TLSRoutes`, `Secrets`, `Services`, `BackendTLSPolicies`, `ClientSettingsPolicies`, `NginxProxies`, `ObservabilityPolicies`, `SnippetsFilters`, and `Endpoints`. The data within these resources is **not** collected.
30+
- **Count of Resources:** the total count of resources related to NGINX Gateway Fabric. This includes `GatewayClasses`, `Gateways`, `HTTPRoutes`,`GRPCRoutes`, `TLSRoutes`, `Secrets`, `Services`, `BackendTLSPolicies`, `ClientSettingsPolicies`, `NginxProxies`, `ObservabilityPolicies`, `UpstreamSettingsPolicies`, `SnippetsFilters`, and `Endpoints`. The data within these resources is **not** collected.
3131
- **SnippetsFilters Info**a list of directive-context strings from applied SnippetFilters and a total count per strings. The actual value of any NGINX directive is **not** collected.
3232
This data is used to identify the following information:
3333

tests/suite/telemetry_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ var _ = Describe("Telemetry test with OTel collector", Label("telemetry"), func(
8888
"ObservabilityPolicyCount: Int(0)",
8989
"NginxProxyCount: Int(0)",
9090
"SnippetsFilterCount: Int(0)",
91+
"UpstreamSettingsPolicyCount: Int(0)",
9192
"NGFReplicaCount: Int(1)",
9293
},
9394
)

0 commit comments

Comments
 (0)