-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutapiRequests.js
More file actions
72 lines (67 loc) · 2.53 KB
/
utapiRequests.js
File metadata and controls
72 lines (67 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
'use strict'; // eslint-disable-line strict
/* eslint no-console: 0 */
const http = require('http');
const auth = require('arsenal').auth;
const configFile = require('./config.json');
const accessKey = configFile.account.accessKey;
const secretKey = configFile.account.secretKey;
const endpointArr = configFile.utapiEndpoint.split(':');
const port = endpointArr.pop();
const host = endpointArr[1].slice(2);
const millsecondsInHour = 3600000;
function getStartTimestamp(millisecondsBackInTime) {
const time = new Date(Date.now() - millisecondsBackInTime);
const minutes = time.getMinutes();
const timestamp = time.setMinutes((minutes - minutes % 15), 0, 0);
return timestamp;
}
function getEndTimestampCloseToNow() {
const time = new Date(Date.now());
const minutes = time.getMinutes();
const timestamp = time.setMinutes((minutes - minutes % 15) + 15, 0, -1);
return timestamp;
}
function listBucketMetrics(buckets, timeRange) {
const options = {
host,
port,
method: 'POST',
path: '/buckets?Action=ListMetrics',
headers: {
'content-type': 'application/json',
'cache-control': 'no-cache',
},
rejectUnauthorized: false,
};
const request = http.request(options, response => {
console.log('response status code', {
statusCode: response.statusCode,
});
console.log('response headers', { headers: response.headers });
const body = [];
response.setEncoding('utf8');
response.on('data', chunk => body.push(chunk));
response.on('end', () => {
const responseBody = JSON.parse(body.join(''));
if (response.statusCode >= 200 && response.statusCode < 300) {
// eslint-disable-next-line no-console
console.log(responseBody);
} else {
console.log('request failed with HTTP Status ', {
statusCode: response.statusCode,
body: responseBody,
});
}
});
});
request.path = '/buckets';
auth.client.generateV4Headers(request, { Action: 'ListMetrics' },
accessKey, secretKey, 's3');
request.path = '/buckets?Action=ListMetrics';
console.log('request headers', { headers: request._headers });
request.write(JSON.stringify({ buckets, timeRange }));
request.end();
}
const start = getStartTimestamp(millsecondsInHour);
const end = getEndTimestampCloseToNow();
listBucketMetrics(['superbucket', 'someotherbucket'], [start, end]);