Add collectd for backups

This commit is contained in:
Girish Ramakrishnan
2020-01-31 13:37:07 -08:00
parent 1981493398
commit e1ded9f7b5
7 changed files with 46 additions and 4 deletions

View File

@@ -30,6 +30,8 @@ exports = module.exports = {
checkConfiguration: checkConfiguration,
configureCollectd: configureCollectd,
SECRET_PLACEHOLDER: String.fromCharCode(0x25CF).repeat(8),
// for testing
@@ -44,12 +46,14 @@ var addons = require('./addons.js'),
assert = require('assert'),
backupdb = require('./backupdb.js'),
BoxError = require('./boxerror.js'),
collectd = require('./collectd.js'),
constants = require('./constants.js'),
crypto = require('crypto'),
database = require('./database.js'),
DataLayout = require('./datalayout.js'),
debug = require('debug')('box:backups'),
df = require('@sindresorhus/df'),
ejs = require('ejs'),
eventlog = require('./eventlog.js'),
fs = require('fs'),
locker = require('./locker.js'),
@@ -69,6 +73,7 @@ var addons = require('./addons.js'),
zlib = require('zlib');
const BACKUP_UPLOAD_CMD = path.join(__dirname, 'scripts/backupupload.js');
const COLLECTD_CONFIG_EJS = fs.readFileSync(__dirname + '/collectd/cloudron-backup.ejs', { encoding: 'utf8' });
function debugApp(app) {
assert(typeof app === 'object');
@@ -1302,3 +1307,15 @@ function checkConfiguration(callback) {
callback(null, message);
});
}
function configureCollectd(backupConfig, callback) {
assert.strictEqual(typeof backupConfig, 'object');
assert.strictEqual(typeof callback, 'function');
if (backupConfig.provider === 'filesystem') {
const collectdConf = ejs.render(COLLECTD_CONFIG_EJS, { backupDir: backupConfig.backupFolder });
collectd.addProfile('cloudron-backup', collectdConf, callback);
} else {
collectd.removeProfile('cloudron-backup', callback);
}
}