hooks/examples/monitor_cpu.js

"use strict";

/**
 * @alias monitor_cpu
 * @member {Object} monitor_cpu
 * @description A monitoring hook definition example
 * @memberOf hooks/examples
 */

const config = require('../../code/config');

const Promise = require('promise');
const os = require("os");

module.exports = {
  interval: 30000,
  check: function (hook, api) {
    return new Promise(function (resolve, reject) {
      let cpus = os.cpus();
      let out = "";
      let total = 0;
      let used = 0;
      for (var i = 0, len = cpus.length; i < len; i++) {
        var cpu = cpus[i]
        for (let type in cpu.times) {
          total += cpu.times[type];
        }
        used += cpu.times["user"] + cpu.times["nice"] + cpu.times["sys"]
      }
      let total_percent = Math.round(100 * used / total);
      if (total_percent >= (config.get("hooks:config:monitor_cpu:percent_limit") || 60) * 1) {
        resolve(`Watch out: cpu is at ${total_percent}%`);
      } else {
        resolve(null);
      }
    });
  },
  description: "Example of monitoring hook. Read config too."
};