Skip to content

Commit 4e1b9f3

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

File tree

13 files changed

+269
-26
lines changed

13 files changed

+269
-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: 27 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")
@@ -210,6 +217,19 @@ func main() {
210217
setupLog.Error(err, "problem running manager")
211218
os.Exit(1)
212219
}
220+
221+
// update of the managed resource metrics
222+
go func() {
223+
if err := lbcMetricsCollector.UpdateManagedK8sResourceMetrics(ctx); err != nil {
224+
setupLog.Error(err, "failed to update managed Kubernetes resource metrics")
225+
}
226+
if err := lbcMetricsCollector.UpdateManagedALBMetrics(ctx); err != nil {
227+
setupLog.Error(err, "failed to update managed ALB metrics")
228+
}
229+
if err := lbcMetricsCollector.UpdateManagedNLBMetrics(ctx); err != nil {
230+
setupLog.Error(err, "failed to update managed NLB metrics")
231+
}
232+
}()
213233
}
214234

215235
// 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)