You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:40:30