diff --git a/src/server/status/index.js b/src/server/status/index.js index 90dea44ce5378..74da51100ae96 100644 --- a/src/server/status/index.js +++ b/src/server/status/index.js @@ -28,6 +28,26 @@ export default function (kbnServer, server, config) { } })); + // Outputs the status object under /api/_node + server.route(wrapAuth({ + method: 'GET', + path: '/api/_node', + handler: function (request, reply) { + return reply({ + name: config.get('server.name'), + version: config.get('pkg.version'), + build: { + num: config.get('pkg.buildNum'), + sha: config.get('pkg.buildSha'), + }, + uuid: config.get('server.uuid'), + heap: kbnServer.stats.heap, + connections: kbnServer.stats.connections, + requests: kbnServer.stats.requests, + }); + } + })); + server.decorate('reply', 'renderStatusPage', async function () { const app = kbnServer.uiExports.getHiddenApp('status_page'); const response = await getResponse(this); diff --git a/src/server/status/metrics.js b/src/server/status/metrics.js index d00a8eb540d04..c054d4396d0c3 100644 --- a/src/server/status/metrics.js +++ b/src/server/status/metrics.js @@ -1,9 +1,11 @@ import _ from 'lodash'; import Samples from './samples'; + module.exports = function (kbnServer, server, config) { let lastReport = Date.now(); kbnServer.metrics = new Samples(12); + kbnServer.stats = {}; server.plugins['even-better'].monitor.on('ops', function (event) { const now = Date.now(); @@ -23,5 +25,16 @@ module.exports = function (kbnServer, server, config) { requestsPerSecond: requestsPerSecond }); + // Creates a status object for this node + kbnServer.stats = { + heap: { + total: _.get(event, 'psmem.heapTotal'), + used: _.get(event, 'psmem.heapUsed'), + rss: _.get(event, 'psmem.rss'), + }, + connections: _.get(event, ['concurrents', port]), + requests: _.get(event, ['requests', port]), + }; }); }; +