【问题标题】:Get CPU and RAM performance data with Java使用 Java 获取 CPU 和 RAM 性能数据
【发布时间】:2015-12-14 02:14:01
【问题描述】:

我想使用此代码获取 EC2 实例性能数据:

public void testCreateSpotInstance() throws Exception
    {
        BasicAWSCredentials bawsc = new BasicAWSCredentials(
            "AKI2IUYDKF4KZV1DAL2A", "Onv+nq32tUkiLlKI32H3JtIB7Y4QM3esh01J37tL");

        AmazonEC2 ec2 = new AmazonEC2Client(bawsc);

        ec2.setEndpoint("ec2.ap-southeast-1.amazonaws.com");
        ec2.setRegion(Region.getRegion(Regions.EU_CENTRAL_1));

        fetchInstancePublicIP(ec2);
    }

    public void fetchInstancePublicIP(AmazonEC2 ec2)
    {
        DescribeInstancesRequest request = new DescribeInstancesRequest().withInstanceIds("i-03f5b2c1");
        DescribeInstancesResult result = ec2.describeInstances(request);
        List<Reservation> list = result.getReservations();
        for (Reservation res : list)
        {
            List<Instance> instanceList = res.getInstances();
            for (Instance instance : instanceList)
            {
                System.out.println("Public IP : " + instance.getPublicIpAddress());
                System.out.println("Public DNS : " + instance.getPublicDnsName());
                System.out.println("Instance State : " + instance.getState());
                System.out.println("Instance TAGS : " + instance.getTags());
                System.out.println("Instance Architecture : " + instance.getArchitecture());
                System.out.println("Instance VpcId : " + instance.getVpcId());
                System.out.println("Instance Launch Time : " + instance.getLaunchTime());
                System.out.println("Instance Root Device Name : " + instance.getRootDeviceName());
                System.out.println("Instance Hypervisor : " + instance.getHypervisor());
                System.out.println("Instance Root Device Type : " + instance.getRootDeviceType());
                System.out.println("Instance Virtualization Type : " + instance.getVirtualizationType());
                System.out.println("Instance Location : " + instance.getPlacement());
                instance.getNetworkInterfaces();

                for (int i = 0; i < instance.getNetworkInterfaces().size(); i++)
                {
                    InstanceNetworkInterface get = instance.getNetworkInterfaces().get(i);

                    System.out.println("Private Ip Address " + get.getPrivateIpAddress());
                    System.out.println("Mac Address " + get.getMacAddress());
                    System.out.println("Private Dns Name " + get.getPrivateDnsName());
                    InstanceNetworkInterfaceAssociation association = get.getAssociation();
                    System.out.println("Public Ip " + association.getPublicIp());
                    System.out.println("Public Dns Name " + association.getPublicDnsName());
                    System.out.println("Ip Owner Id " + association.getIpOwnerId());

                }
            }
        }
    }

我可以获取实例数据,但无法获取有关 CPU 性能和 RAM 的数据。

您能否提供一些建议,如何使用 Java 获取这些数据?

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    第 1 步:配置服务器以将 RAM 使用信息发送到 CloudWatch:http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts.html

    第 2 步:查询 CloudWatch 的 CPU 和 RAM 使用情况。

    说明:

    RAM 使用只能在服务器上运行的操作系统中使用,因此您必须将其推送到 CloudWatch 以使其可访问。将它放在 CloudWatch 中也很不错,这样您就可以针对该指标设置警报。

    在 CloudWatch 中获得所需的所有值后,您可以使用 AmazonCloudWatchClient.getMetricStatistics() 方法在 Java 应用程序中获取这些值。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多