AWS ec2 度量集

编辑

aws 模块的 ec2 度量集允许您监控您的 AWS EC2 实例,包括 cpunetworkdiskstatusec2 度量集从 Cloudwatch AWS EC2 指标 获取一组值。

我们获取以下数据

  • cpu.total.pct: 实例当前正在使用的已分配 EC2 计算单元的百分比。
  • cpu.credit_usage: 实例为 CPU 使用而消耗的 CPU 信用额度数量。
  • cpu.credit_balance: 实例自启动或开始以来累积的已赚取的 CPU 信用额度数量。
  • cpu.surplus_credit_balance: 当无限实例的 CPUCreditBalance 值为零时,已花费的剩余信用额度数量。
  • cpu.surplus_credits_charged: 未由已赚取的 CPU 信用额度偿还的已花费剩余信用额度数量,因此会产生额外费用。
  • network.in.packets: 实例在所有网络接口上接收到的数据包数量。
  • network.out.packets: 实例在所有网络接口上发送出的数据包数量。
  • network.in.bytes: 实例在所有网络接口上接收到的字节数。
  • network.out.bytes: 实例在所有网络接口上发送出的字节数。
  • diskio.read.bytes: 从实例可用的所有实例存储卷读取的字节数。
  • diskio.write.bytes: 写入实例可用的所有实例存储卷的字节数。
  • diskio.read.ops: 在指定的时间段内,从实例可用的所有实例存储卷完成的读取操作次数。
  • diskio.write.ops: 在指定的时间段内,写入实例可用的所有实例存储卷完成的写入操作次数。
  • status.check_failed: 报告实例在过去一分钟内是否通过了实例状态检查和系统状态检查。
  • status.check_failed_system: 报告实例在过去一分钟内是否通过了系统状态检查。
  • status.check_failed_instance: 报告实例在过去一分钟内是否通过了实例状态检查。
  • instance.core.count: 实例的 CPU 内核数。
  • instance.image.id: 用于启动实例的映像的 ID。
  • instance.monitoring.state: 指示是否启用了详细监控。
  • instance.private.dns_name: 网络接口的私有 DNS 名称。
  • instance.private.ip: 与网络接口关联的私有 IPv4 地址。
  • instance.public.dns_name: 实例的公共 DNS 名称。
  • instance.public.ip: 绑定到网络接口的弹性 IP 地址 (IPv4) 的地址。
  • instance.state.code: 实例的状态,以 16 位无符号整数表示。
  • instance.threads_per_core: 实例的状态 (pending | running | shutting-down | terminated | stopping | stopped)。

AWS 权限

编辑

IAM 用户需要一些特定的 AWS 权限才能收集 AWS EC2 指标。

ec2:DescribeInstances
ec2:DescribeRegions
cloudwatch:GetMetricData
cloudwatch:ListMetrics
sts:GetCallerIdentity
iam:ListAccountAliases

仪表盘

编辑

aws ec2 度量集附带一个预定义的仪表盘。例如

metricbeat aws ec2 overview

配置示例

编辑
- module: aws
  period: 300s
  metricsets:
    - ec2
  access_key_id: '<access_key_id>'
  secret_access_key: '<secret_access_key>'
  session_token: '<session_token>'
  tags_filter:
    - key: "Organization"
      value: ["Engineering", "Product"]

tags_filter 可以指定仅收集具有某些标签键/值对的指标。例如,使用上面的配置示例,ec2 度量集将仅从具有标签键等于“Organization”且标签值等于“Engineering”或“Product”的 EC2 实例收集指标。

这是一个默认的度量集。如果主机模块未配置,则默认情况下启用此度量集。

字段

有关度量集中的每个字段的说明,请参阅 导出字段 部分。

以下是由此度量集生成的示例文档

{
    "@timestamp": "2017-10-12T08:05:34.853Z",
    "aws": {
        "cloudwatch": {
            "namespace": "AWS/EC2"
        },
        "dimensions": {
            "InstanceId": "i-05b6228ff8d8c5d49"
        },
        "ec2": {
            "cpu": {
                "credit_balance": 144,
                "credit_usage": 0.007318,
                "surplus_credit_balance": 0,
                "surplus_credits_charged": 0
            },
            "diskio": {
                "read": {
                    "bytes_per_sec": 0,
                    "count_per_sec": 0
                },
                "write": {
                    "bytes_per_sec": 0,
                    "count_per_sec": 0
                }
            },
            "instance": {
                "core": {
                    "count": 1
                },
                "image": {
                    "id": "ami-058b1b7fe545997ae"
                },
                "monitoring": {
                    "state": "disabled"
                },
                "private": {
                    "dns_name": "ip-172-31-31-247.eu-west-1.compute.internal",
                    "ip": "172.31.31.247"
                },
                "public": {
                    "dns_name": "ec2-54-194-39-129.eu-west-1.compute.amazonaws.com",
                    "ip": "54.194.39.129"
                },
                "state": {
                    "code": 16,
                    "name": "running"
                },
                "threads_per_core": 1
            },
            "network": {
                "in": {
                    "bytes_per_sec": 18.343333333333334,
                    "packets_per_sec": 0.15666666666666668
                },
                "out": {
                    "bytes_per_sec": 15.326666666666666,
                    "packets_per_sec": 0.16
                }
            },
            "status": {
                "check_failed": 0,
                "check_failed_instance": 0,
                "check_failed_system": 0
            }
        }
    },
    "cloud": {
        "account": {
            "id": "428152502467",
            "name": "elastic-beats"
        },
        "availability_zone": "eu-west-1a",
        "instance": {
            "id": "i-05b6228ff8d8c5d49"
        },
        "machine": {
            "type": "t2.micro"
        },
        "provider": "aws",
        "region": "eu-west-1"
    },
    "event": {
        "dataset": "aws.ec2",
        "duration": 115000,
        "module": "aws"
    },
    "host": {
        "cpu": {
            "usage": 0.1005649717511616
        },
        "disk": {
            "read": {
                "bytes": 0
            },
            "write": {
                "bytes": 0
            }
        },
        "id": "i-05b6228ff8d8c5d49",
        "name": "i-05b6228ff8d8c5d49",
        "network": {
            "egress": {
                "bytes": 4598,
                "packets": 48
            },
            "ingress": {
                "bytes": 5503,
                "packets": 47
            }
        }
    },
    "metricset": {
        "name": "ec2",
        "period": 10000
    },
    "service": {
        "type": "aws"
    }
}