如何将EKS节点的内存利用率指标导出至CloudWatch
如何将EKS节点的内存利用率指标导出到CloudWatch
你可以通过CloudWatch Agent DaemonSet批量给EKS集群所有节点配置内存指标收集并推送到CloudWatch,具体步骤如下:
方法一:使用CloudWatch Agent DaemonSet(推荐)
1. 创建IAM权限策略
创建允许CloudWatch Agent向CloudWatch上报指标的IAM策略,示例内容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ec2:DescribeTags" ], "Resource": "*" } ] }
将该策略命名为AmazonCloudWatchAgentServerPolicy-EKS。
2. 给EKS节点IAM角色附加策略
找到你的EKS节点组对应的IAM角色(通常名称包含eks-nodegroup-前缀),将上面创建的策略附加到该角色上。如果使用IRSA(IAM角色绑定服务账号),可以给CloudWatch Agent的ServiceAccount关联该权限角色,安全性更高。
3. 部署CloudWatch Agent配置与DaemonSet
首先创建amazon-cloudwatch命名空间:
kubectl create namespace amazon-cloudwatch
然后创建CloudWatch Agent的配置ConfigMap(替换your-cluster-name为你的EKS集群名称):
apiVersion: v1 kind: ConfigMap metadata: name: cloudwatch-agent-config namespace: amazon-cloudwatch data: amazon-cloudwatch-agent.json: | { "agent": { "metrics_collection_interval": 60, "run_as_user": 0 }, "metrics": { "namespace": "EKS/NodeMetrics", "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}", "InstanceId": "${aws:InstanceId}", "ClusterName": "your-cluster-name" }, "metrics_collected": { "mem": { "measurement": [ "mem_used_percent", "mem_used", "mem_free" ], "metrics_collection_interval": 60 } } } }
最后部署CloudWatch Agent DaemonSet:
apiVersion: apps/v1 kind: DaemonSet metadata: name: cloudwatch-agent namespace: amazon-cloudwatch labels: k8s-app: cloudwatch-agent spec: selector: matchLabels: k8s-app: cloudwatch-agent template: metadata: labels: k8s-app: cloudwatch-agent spec: containers: - name: cloudwatch-agent image: amazon/cloudwatch-agent:latest resources: limits: cpu: 200m memory: 200Mi requests: cpu: 100m memory: 100Mi volumeMounts: - name: config-volume mountPath: /etc/amazon/cloudwatch-agent - name: rootfs mountPath: /host readOnly: true env: - name: HOST_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: HOST_ROOT value: /host volumes: - name: config-volume configMap: name: cloudwatch-agent-config - name: rootfs hostPath: path: / terminationGracePeriodSeconds: 60
4. 验证指标
部署完成后,等待1-2分钟,登录CloudWatch控制台,在指标页面找到命名空间EKS/NodeMetrics,即可查看各节点的内存使用率、已用内存、空闲内存等指标。
方法二:使用AWS Distro for OpenTelemetry(ADOT)
如果需要同时收集其他监控数据(如容器、应用指标),可以使用ADOT Collector部署DaemonSet,通过hostmetrics接收器收集节点内存指标,再通过awscloudwatch导出器推送到CloudWatch。这种方式更灵活,但配置相对复杂,适合多类型指标统一收集的场景。
内容的提问来源于stack exchange,提问作者Taimoor Abbasi
相关产品推荐
相关产品推荐

