【问题标题】:Posting memory utilization metrics of aws instance by using nodeJs使用 nodeJs 发布 aws 实例的内存利用率指标
【发布时间】:2020-06-04 19:20:14
【问题描述】:

我想使用 nodeJs 在我的项目中获取 aws 实例的内存利用率指标数据,但我发现内存利用率指标不是默认指标,所以我尝试了此页面上给出的内容 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html,它的工作原理是如图memory Utilization metrics 所示,但我想知道如何使用 nodeJs 发布此指标。

这是我在使用 putMetricData 时编写的参数 -

AWS.config.update({ region: 'ap-south-1' });
var instanceId = 'i-096d2fed45f9ee1'
var params = {
    MetricData: [ /* required */
      {
        MetricName: 'MemoryUtilization', /* required */
        // Counts: [
        //   'NUMBER_VALUE',
        //   /* more items */
        // ],
        Dimensions: [
          {
            Name: 'InstanceId', /* required */
            Value: instanceId /* required */
          },
          /* more items */
        ],
        StatisticValues: {
          Maximum: 100, /* required */
          Minimum: 5, /* required */
          SampleCount: 1, /* required */
          Sum: 5 /* required */
        },
        // Timestamp: new Date || 'Wed Dec 31 1969 16:00:00 GMT-0800 (PST)' || 123456789,
        // Unit: Percent,
        // Value: 'NUMBER_VALUE',
        // Values: [
        //   'NUMBER_VALUE',
        //   /* more items */
        // ]
      },
      /* more items */
    ],
    Namespace: 'System/Linux' /* required */
};
cw.putMetricData(params, function(err, data) {
        if (err) {
          console.log("Error", err);
        } else {
          console.log("Metrics", JSON.stringify(data));
        }
});

我没有收到任何错误,但内存利用率值如下图所示 - memory Util metrics after posting through putMetricsData 如果您看到 CloudWatch 监控脚本生成的 memory Utilization metrics,这是不正确的。

【问题讨论】:

    标签: node.js amazon-ec2 amazon-cloudwatch amazon-cloudwatch-metrics


    【解决方案1】:

    使用CloudWatch NodeJS SDK and calling the PutMetricData API

    article 可能会帮助您在 NodeJS 中获得所需的指标。

    但是,我不明白您为什么要这样做。我建议改为配置 CloudWatch Agent 以独立于任何应用程序代码收集这些指标。

    根据更新后的问题进行编辑:

    您正在对 StatisticValues 进行硬编码。根据屏幕截图,您似乎正在绘制已硬编码为 5 的 Sum 或 Minimum。您如何期望 CloudWatch 显示与您发送的内容不同的任何内容?

    如果你想发布内存数据,你需要使用 NodeJS 通过调用一些 API/Library 来获取内存数据,例如What I linked above。然后将此值传递给 CloudWatch PutMetricData 调用...

    CloudWatch 客户端无法神奇地知道这一点,因为您设置了 MetricName=MemoryUtilization 您希望 NodeJS 发布内存指标。 MetricName 只是一个标签,它可以是你想要的任何东西,例如HowManyBeersIHadLastNight, HowLongThatPieceOfCodeTookToExecute

    另外,另一方面,使用 StatisicValues,即 StatisticSet 是 CloudWatch API 的传统,不推荐使用。像这样发布您的指标会阻止 CloudWatch 能够计算丰富的百分位数。请改用 ValueValues & Counts

    【讨论】:

    • 我使用了 putMetricData Api,但我认为我无法正确获取参数,你能帮我处理参数中的 StatisticValues json,我的意思是参数应该如何发布内存利用率每 5 分钟的值
    • 如果您需要代码方面的帮助,您的问题应该包含代码和您遇到的错误消息。
    • 是的,我已经阅读了您提供的链接上给出的内容,但我认为这是某人用 nodeJs 编写的代码的内存使用,与服务器无关,对吧?
    • 在这一点上,我认为您的问题过于笼统......但是快速谷歌搜索:stackoverflow.com/questions/36816181/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2018-04-16
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    相关资源
    最近更新 更多