Публикация показателей использования памяти экземпляра aws с помощью nodeJs

Я хочу получить данные показателей использования памяти экземпляра aws в моем проекте с использованием nodeJs, но я обнаружил, что показатели использования памяти не являются показателями по умолчанию, поэтому я попробовал то, что указано на этой странице - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html и это работало, как показано на рисунке показатели использования памяти, но я хочу знать как опубликовать эту метрику с помощью 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 Используйте показатели после публикации через putMetricsData, что неверно, если вы видите показатели использования памяти генерируется скриптами мониторинга CloudWatch.


person Abhishek    schedule 02.06.2020    source источник


Ответы (1)


Использование CloudWatch NodeJS SDK и вызов API PutMetricData.

Эта статья может помочь вам получить нужные показатели в NodeJS.

Однако я не понимаю, почему вы хотите это сделать. Вместо этого я бы предложил настроить агент CloudWatch. для сбора этих показателей независимо от кода любого приложения.

ИЗМЕНИТЬ НА ОСНОВЕ ОБНОВЛЕННОГО ВОПРОСА:

Вы жестко кодируете StatisticValues. Судя по снимку экрана, похоже, что вы рисуете либо сумму, либо минимум, для которых вы жестко закодировали значение 5. Как вы ожидаете, что CloudWatch покажет что-то отличное от того, что вы отправляете?

Если вы хотите опубликовать данные памяти, вам нужно получить данные памяти с помощью NodeJS, выполнив некоторый вызов API/библиотеки, например. То, на что я ссылался выше. Затем вы передаете это значение вызову CloudWatch PutMetricData...

Клиент CloudWatch не может волшебным образом узнать об этом, потому что вы установили MetricName=MemoryUtilization, чтобы NodeJS публиковал метрики памяти. MetricName — это просто метка, это может быть абсолютно все, что вы хотите, например. HowManyBeersIHadLastNight, HowLong ThatPieceOfCodeTookToExecute

Кроме того, с другой стороны, использование StatisicValues, т. е. StatisticSet, является устаревшим и не рекомендуется использовать API CloudWatch. Такая публикация метрик не позволяет CloudWatch вычислять расширенные процентили. Вместо этого используйте Value или Values ​​& Counts.

person mickzer    schedule 02.06.2020
comment
я использовал putMetricData Api, но я не смог правильно получить параметры для этого, я думаю, вы можете помочь мне с json StatisticValues ​​​​в параметрах, я имею в виду, как параметры должны публиковать значения использования памяти каждые 5 минут - person Abhishek; 02.06.2020
comment
Если вам нужна помощь с кодом, ваш вопрос должен содержать код и сообщение об ошибке, с которым вы столкнулись. - person mickzer; 02.06.2020
comment
да, я прочитал то, что дано по ссылке, которую вы дали, но я думаю, что это для использования памяти чьего-то кода, написанного в nodeJs, и не связанного с сервером, верно? - person Abhishek; 04.06.2020
comment
На данный момент я думаю, что ваш вопрос становится слишком широким... Но быстрый поиск в Google: stackoverflow.com/questions/36816181/ - person mickzer; 05.06.2020