Skip to content

Commit 9700d0e

Browse files
committed
add metrics to track the managed resource count
1 parent 227315a commit 9700d0e

13 files changed

+270
-26
lines changed

config/webhook/manifests.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
---
21
apiVersion: admissionregistration.k8s.io/v1
32
kind: MutatingWebhookConfiguration
43
metadata:

docs/install/iam_policy.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
"elasticloadbalancing:DescribeTags",
4343
"elasticloadbalancing:DescribeTrustStores",
4444
"elasticloadbalancing:DescribeListenerAttributes",
45-
"elasticloadbalancing:DescribeCapacityReservation"
45+
"elasticloadbalancing:DescribeCapacityReservation",
46+
"tag:GetResources"
4647
],
4748
"Resource": "*"
4849
},

docs/install/iam_policy_cn.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
"elasticloadbalancing:DescribeTags",
4343
"elasticloadbalancing:DescribeTrustStores",
4444
"elasticloadbalancing:DescribeListenerAttributes",
45-
"elasticloadbalancing:DescribeCapacityReservation"
45+
"elasticloadbalancing:DescribeCapacityReservation",
46+
"tag:GetResources"
4647
],
4748
"Resource": "*"
4849
},

docs/install/iam_policy_iso.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"elasticloadbalancing:DescribeTargetGroups",
4040
"elasticloadbalancing:DescribeTargetGroupAttributes",
4141
"elasticloadbalancing:DescribeTargetHealth",
42-
"elasticloadbalancing:DescribeTags"
42+
"elasticloadbalancing:DescribeTags",
43+
"tag:GetResources"
4344
],
4445
"Resource": "*"
4546
},

docs/install/iam_policy_isob.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"elasticloadbalancing:DescribeTargetGroups",
4040
"elasticloadbalancing:DescribeTargetGroupAttributes",
4141
"elasticloadbalancing:DescribeTargetHealth",
42-
"elasticloadbalancing:DescribeTags"
42+
"elasticloadbalancing:DescribeTags",
43+
"tag:GetResources"
4344
],
4445
"Resource": "*"
4546
},

docs/install/iam_policy_isoe.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"elasticloadbalancing:DescribeTargetGroups",
4040
"elasticloadbalancing:DescribeTargetGroupAttributes",
4141
"elasticloadbalancing:DescribeTargetHealth",
42-
"elasticloadbalancing:DescribeTags"
42+
"elasticloadbalancing:DescribeTags",
43+
"tag:GetResources"
4344
],
4445
"Resource": "*"
4546
},

docs/install/iam_policy_isof.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"elasticloadbalancing:DescribeTargetGroups",
4040
"elasticloadbalancing:DescribeTargetGroupAttributes",
4141
"elasticloadbalancing:DescribeTargetHealth",
42-
"elasticloadbalancing:DescribeTags"
42+
"elasticloadbalancing:DescribeTags",
43+
"tag:GetResources"
4344
],
4445
"Resource": "*"
4546
},

docs/install/iam_policy_us-gov.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
"elasticloadbalancing:DescribeTags",
4343
"elasticloadbalancing:DescribeTrustStores",
4444
"elasticloadbalancing:DescribeListenerAttributes",
45-
"elasticloadbalancing:DescribeCapacityReservation"
45+
"elasticloadbalancing:DescribeCapacityReservation",
46+
"tag:GetResources"
4647
],
4748
"Resource": "*"
4849
},

main.go

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,24 @@ limitations under the License.
1717
package main
1818

1919
import (
20-
"k8s.io/client-go/util/workqueue"
21-
"os"
22-
23-
elbv2deploy "sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/elbv2"
24-
2520
"github.com/go-logr/logr"
2621
"github.com/spf13/pflag"
2722
zapraw "go.uber.org/zap"
2823
k8sruntime "k8s.io/apimachinery/pkg/runtime"
2924
"k8s.io/client-go/kubernetes"
3025
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3126
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
27+
"k8s.io/client-go/util/workqueue"
3228
"k8s.io/klog/v2"
29+
"os"
3330
elbv2api "sigs.k8s.io/aws-load-balancer-controller/apis/elbv2/v1beta1"
3431
elbv2controller "sigs.k8s.io/aws-load-balancer-controller/controllers/elbv2"
3532
"sigs.k8s.io/aws-load-balancer-controller/controllers/ingress"
3633
"sigs.k8s.io/aws-load-balancer-controller/controllers/service"
3734
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws"
3835
"sigs.k8s.io/aws-load-balancer-controller/pkg/aws/throttle"
3936
"sigs.k8s.io/aws-load-balancer-controller/pkg/config"
37+
elbv2deploy "sigs.k8s.io/aws-load-balancer-controller/pkg/deploy/elbv2"
4038
"sigs.k8s.io/aws-load-balancer-controller/pkg/inject"
4139
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
4240
awsmetrics "sigs.k8s.io/aws-load-balancer-controller/pkg/metrics/aws"
@@ -84,8 +82,6 @@ func main() {
8482
klog.SetLoggerWithOptions(appLogger, klog.ContextualLogger(true))
8583

8684
var awsMetricsCollector *awsmetrics.Collector
87-
lbcMetricsCollector := lbcmetrics.NewCollector(metrics.Registry)
88-
8985
if metrics.Registry != nil {
9086
awsMetricsCollector = awsmetrics.NewCollector(metrics.Registry)
9187
}
@@ -107,6 +103,17 @@ func main() {
107103
os.Exit(1)
108104
}
109105

106+
// track the k8s resources with finalizers contains "k8s.aws"
107+
// track the aws resources with cluster tag "elbv2.k8s.aws/cluster=$ClusterName"
108+
lbcMetricsCollector := lbcmetrics.NewCollector(
109+
metrics.Registry,
110+
mgr.GetClient(),
111+
cloud.RGT(),
112+
"k8s.aws",
113+
"elbv2.k8s.aws/cluster",
114+
controllerCFG.ClusterName,
115+
)
116+
110117
clientSet, err := kubernetes.NewForConfig(mgr.GetConfig())
111118
if err != nil {
112119
setupLog.Error(err, "unable to obtain clientSet")
@@ -163,6 +170,19 @@ func main() {
163170
os.Exit(1)
164171
}
165172

173+
// update of the managed resource metrics
174+
go func() {
175+
if err := lbcMetricsCollector.UpdateManagedK8sResourceMetrics(ctx); err != nil {
176+
setupLog.Error(err, "failed to update managed Kubernetes resource metrics")
177+
}
178+
if err := lbcMetricsCollector.UpdateManagedALBMetrics(ctx); err != nil {
179+
setupLog.Error(err, "failed to update managed ALB metrics")
180+
}
181+
if err := lbcMetricsCollector.UpdateManagedNLBMetrics(ctx); err != nil {
182+
setupLog.Error(err, "failed to update managed NLB metrics")
183+
}
184+
}()
185+
166186
// Add liveness probe
167187
err = mgr.AddHealthzCheck("health-ping", healthz.Ping)
168188
setupLog.Info("adding health check for controller")
@@ -210,6 +230,7 @@ func main() {
210230
setupLog.Error(err, "problem running manager")
211231
os.Exit(1)
212232
}
233+
213234
}
214235

215236
// loadControllerConfig loads the controller configuration.

pkg/metrics/aws/instruments.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,13 @@ func newInstruments(registerer prometheus.Registerer) *instruments {
5959
Name: metricAPIRequestDurationSeconds,
6060
Help: "Latency of an individual HTTP request to the service endpoint",
6161
}, []string{labelService, labelOperation})
62-
63-
registerer.MustRegister(apiCallsTotal, apiCallDurationSeconds, apiCallRetries, apiRequestsTotal, apiRequestDurationSecond)
62+
registerer.MustRegister(
63+
apiCallsTotal,
64+
apiCallDurationSeconds,
65+
apiCallRetries,
66+
apiRequestsTotal,
67+
apiRequestDurationSecond,
68+
)
6469
return &instruments{
6570
apiCallsTotal: apiCallsTotal,
6671
apiCallDurationSeconds: apiCallDurationSeconds,

0 commit comments

Comments
 (0)