All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.18.a060f9176ccc026762a6.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.5
Show newest version
{"version":3,"sources":["webpack:///18.a060f9176ccc026762a6.js","webpack:///./src/components/nodes/JvmHeapUsage.jsx","webpack:///./src/components/throughput/NodeThroughput.jsx","webpack:///./src/components/nodes/index.js","webpack:///./src/components/nodes/NodesList.jsx","webpack:///./src/components/nodes/NodeListItem.jsx","webpack:///./src/components/nodes/NodesActions.jsx","webpack:///./src/components/nodes/SystemOverviewSummary.jsx","webpack:///./src/components/nodes/JournalState.jsx","webpack:///./src/components/nodes/NodeMaintenanceDropdown.jsx","webpack:///./src/components/nodes/NodeOverview.jsx","webpack:///./src/components/nodes/BufferUsage.jsx","webpack:///./src/components/nodes/SystemOverviewDetails.jsx","webpack:///./src/components/nodes/JournalDetails.jsx","webpack:///./src/components/nodes/SystemInformation.jsx","webpack:///./src/components/nodes/RestApiOverview.jsx","webpack:///./src/components/nodes/PluginsDataTable.jsx","webpack:///./src/components/nodes/InputTypesDataTable.jsx","webpack:///./src/pages/ShowNodePage.jsx","webpack:///./src/logic/metrics/MetricsExtractor.js"],"names":["webpackJsonp","1033","module","exports","__webpack_require__","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_propTypes","_propTypes2","_react","_react2","_reflux","_reflux2","_reactBootstrap","_common","_NumberUtils","_NumberUtils2","_MetricsExtractor","_MetricsExtractor2","_StoreProvider","_StoreProvider2","_ActionsProvider","_ActionsProvider2","MetricsStore","getStore","MetricsActions","getActions","JvmHeapUsage","createClass","displayName","propTypes","nodeId","string","isRequired","mixins","connect","componentWillMount","_this","this","metricNames","usedMemory","committedMemory","maxMemory","keys","forEach","metricShortName","add","props","componentWillUnmount","_this2","remove","_extractMetricValues","nodeMetrics","state","metrics","getValuesForNode","usedPercentage","committedPercentage","render","progressBar","detail","length","createElement","className","ProgressBar","now","formatBytes","style","border","Spinner","text","data-node-id","1034","_numeral","_numeral2","NodeThroughput","longFormat","bool","getDefaultProps","totalIn","totalOut","_isLoading","_formatThroughput","format","1146","_NodesList","enumerable","get","_NodeMaintenanceDropdown","_NodeOverview","1147","_NodeListItem","_NodeListItem2","NodesStore","ClusterOverviewStore","NodesList","permissions","array","nodes","clusterOverview","_formatNodes","map","nodeID","key","node","systemOverview","nodesNo","Row","Col","md","Pluralize","singular","plural","EntityList","bsNoItemsStyle","noItemsText","items","1148","_NodesActions","_NodesActions2","_SystemOverviewSummary","_SystemOverviewSummary2","_JvmHeapUsage","_JvmHeapUsage2","_JournalState","_JournalState2","_NodeThroughput","_NodeThroughput2","NodeListItem","object","title","LinkToNode","node_id","EntityListItem","description","nodeThroughput","journalState","actions","additionalContent","information","titleSuffix","contentRow","1149","_reactRouterBootstrap","_urijs","_urijs2","_Routes","_Routes2","SystemProcessingStore","SystemLoadBalancerStore","SystemShutdownStore","NodesActions","_toggleMessageProcessing","confirm","is_processing","pause","resume","_changeLBStatus","status","override","_shutdown","prompt","shutdown","apiBrowserURI","transport_address","normalizePathname","toString","LinkContainer","to","SYSTEM","NODES","SHOW","Button","bsStyle","METRICS","ExternalLinkButton","href","DropdownButton","id","pullRight","IfPermitted","MenuItem","onSelect","anyPermissions","divider","node_inputs","THREADDUMP","1150","_StringUtils","_StringUtils2","SystemOverviewSummary","lbStatus","lb_status","toUpperCase","capitalizeFirstLetter","lifecycle","1151","JournalState","append","read","segments","entriesUncommitted","1152","NodeMaintenanceDropdown","ButtonGroup","bsSize","LOGGING","target","ExternalLink","1153","_BufferUsage","_BufferUsage2","_SystemOverviewDetails","_SystemOverviewDetails2","_JournalDetails","_JournalDetails2","_SystemInformation","_SystemInformation2","_RestApiOverview","_RestApiOverview2","_PluginsDataTable","_PluginsDataTable2","_InputTypesDataTable","_InputTypesDataTable2","NodeOverview","jvmInformation","plugins","inputDescriptions","inputStates","pluginCount","inputCount","filter","inputState","marginBottom","bufferType","systemInformation","1154","BufferUsage","prefix","_metricPrefix","metricName","_metricFilter","usageMetric","usage","metric","NaN","sizeMetric","size","usagePercentage","isNaN","percentLabel","formatPercentage","filtered_metrics","label","toLowerCase","1155","_support","_DocsHelper","_DocsHelper2","SystemOverviewDetails","processingStatus","Alert","DocumentationLink","page","PAGES","LOAD_BALANCERS","onClick","1156","_moment","_moment2","JournalStore","JournalDetails","getInitialState","journalInformation","undefined","componentDidMount","then","setState","_listenToMetrics","_this3","enabled","utilizationRatio","oldestSegment","overcommittedWarning","OVERVIEW","journal_config","directory","Timestamp","dateTime","relative","max_size","duration","max_age","flush_interval","flush_age","1157","_DateTime","_DateTime2","SystemInformation","time","interval","setInterval","clearTimeout","pid","info","hostname","version","codename","Formats","DATETIME_TZ","tz","timezone","1158","RestApiOverview","last_seen","1159","PluginsDataTable","_headerCellFormatter","header","_pluginInfoFormatter","plugin","name","author","width","url","marginLeft","headers","DataTable","rowClassName","headerCellFormatter","sortByKey","rows","dataRowFormatter","filterLabel","filterKeys","1160","InputTypesDataTable","_inputTypeFormatter","inputType","type","link_to_docs","1468","nodeFilter","params","clusterOverviewFilter","_nodes","PluginsStore","InputStatesStore","InputTypesStore","ShowNodePage","connectFilter","Promise","all","jvm","list","inputIds","filteredInputStates","inputId","inputObject","push","errors","PageErrorOverview","short_node_id","DocumentTitle","PageHeader","is_master","928","MetricsExtractor","metricFullName","metricObject","count","rate","total"],"mappings":"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","file":"18.a060f9176ccc026762a6.js","sourcesContent":["webpackJsonp([18],{\n\n/***/ 1033:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(46);\n\nvar _NumberUtils = __webpack_require__(120);\n\nvar _NumberUtils2 = _interopRequireDefault(_NumberUtils);\n\nvar _MetricsExtractor = __webpack_require__(928);\n\nvar _MetricsExtractor2 = _interopRequireDefault(_MetricsExtractor);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _ActionsProvider = __webpack_require__(8);\n\nvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MetricsStore = _StoreProvider2.default.getStore('Metrics');\n\nvar MetricsActions = _ActionsProvider2.default.getActions('Metrics');\n\nvar JvmHeapUsage = _react2.default.createClass({\n  displayName: 'JvmHeapUsage',\n\n  propTypes: {\n    nodeId: _propTypes2.default.string.isRequired\n  },\n  mixins: [_reflux2.default.connect(MetricsStore)],\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    this.metricNames = {\n      usedMemory: 'jvm.memory.heap.used',\n      committedMemory: 'jvm.memory.heap.committed',\n      maxMemory: 'jvm.memory.heap.max'\n    };\n\n    Object.keys(this.metricNames).forEach(function (metricShortName) {\n      return MetricsActions.add(_this.props.nodeId, _this.metricNames[metricShortName]);\n    });\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    var _this2 = this;\n\n    Object.keys(this.metricNames).forEach(function (metricShortName) {\n      return MetricsActions.remove(_this2.props.nodeId, _this2.metricNames[metricShortName]);\n    });\n  },\n  _extractMetricValues: function _extractMetricValues() {\n    var nodeId = this.props.nodeId;\n    var nodeMetrics = this.state.metrics[nodeId];\n    var metrics = _MetricsExtractor2.default.getValuesForNode(nodeMetrics, this.metricNames);\n\n    metrics.usedPercentage = metrics.maxMemory === 0 ? 0 : metrics.usedMemory / metrics.maxMemory * 100;\n    metrics.committedPercentage = metrics.maxMemory === 0 ? 0 : metrics.committedMemory / metrics.maxMemory * 100;\n\n    return metrics;\n  },\n  render: function render() {\n    var progressBar = void 0;\n    var detail = void 0;\n\n    if (this.state.metrics) {\n      var metrics = this._extractMetricValues();\n\n      if (Object.keys(metrics).length === 0) {\n        progressBar = _react2.default.createElement('div', { className: 'progress' });\n        detail = _react2.default.createElement(\n          'p',\n          null,\n          'Heap information unavailable.'\n        );\n      } else {\n        progressBar = _react2.default.createElement(\n          _reactBootstrap.ProgressBar,\n          null,\n          _react2.default.createElement(_reactBootstrap.ProgressBar, { className: 'used-memory', now: metrics.usedPercentage }),\n          _react2.default.createElement(_reactBootstrap.ProgressBar, { className: 'committed-memory', now: metrics.committedPercentage - metrics.usedPercentage })\n        );\n\n        detail = _react2.default.createElement(\n          'p',\n          null,\n          'The JVM is using',\n          ' ',\n          _react2.default.createElement('span', { className: 'blob used-memory' }),\n          _react2.default.createElement(\n            'strong',\n            null,\n            ' ',\n            _NumberUtils2.default.formatBytes(metrics.usedMemory)\n          ),\n          ' ',\n          'of',\n          ' ',\n          _react2.default.createElement('span', { className: 'blob committed-memory' }),\n          _react2.default.createElement(\n            'strong',\n            null,\n            ' ',\n            _NumberUtils2.default.formatBytes(metrics.committedMemory)\n          ),\n          ' ',\n          'heap space and will not attempt to use more than',\n          ' ',\n          _react2.default.createElement('span', { className: 'blob max-memory', style: { border: '1px solid #ccc' } }),\n          _react2.default.createElement(\n            'strong',\n            null,\n            ' ',\n            _NumberUtils2.default.formatBytes(metrics.maxMemory)\n          )\n        );\n      }\n    } else {\n      progressBar = _react2.default.createElement(_reactBootstrap.ProgressBar, null);\n      detail = _react2.default.createElement(\n        'p',\n        null,\n        _react2.default.createElement(_common.Spinner, { text: 'Loading heap usage information...' })\n      );\n    }\n\n    return _react2.default.createElement(\n      'div',\n      { className: 'graylog-node-heap', 'data-node-id': this.props.nodeId },\n      progressBar,\n      detail\n    );\n  }\n});\n\nexports.default = JvmHeapUsage;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1034:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _numeral = __webpack_require__(118);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _common = __webpack_require__(46);\n\nvar _MetricsExtractor = __webpack_require__(928);\n\nvar _MetricsExtractor2 = _interopRequireDefault(_MetricsExtractor);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _ActionsProvider = __webpack_require__(8);\n\nvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MetricsStore = _StoreProvider2.default.getStore('Metrics');\n\nvar MetricsActions = _ActionsProvider2.default.getActions('Metrics');\n\n// TODO this is a copy of GlobalTroughput, it just renders differently and only targets a single node.\nvar NodeThroughput = _react2.default.createClass({\n  displayName: 'NodeThroughput',\n\n  propTypes: {\n    nodeId: _propTypes2.default.string.isRequired,\n    longFormat: _propTypes2.default.bool\n  },\n  mixins: [_reflux2.default.connect(MetricsStore)],\n  getDefaultProps: function getDefaultProps() {\n    return {\n      longFormat: false\n    };\n  },\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    this.metricNames = {\n      totalIn: 'org.graylog2.throughput.input.1-sec-rate',\n      totalOut: 'org.graylog2.throughput.output.1-sec-rate'\n    };\n\n    Object.keys(this.metricNames).forEach(function (metricShortName) {\n      return MetricsActions.add(_this.props.nodeId, _this.metricNames[metricShortName]);\n    });\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    var _this2 = this;\n\n    Object.keys(this.metricNames).forEach(function (metricShortName) {\n      return MetricsActions.remove(_this2.props.nodeId, _this2.metricNames[metricShortName]);\n    });\n  },\n  _isLoading: function _isLoading() {\n    return !this.state.metrics;\n  },\n  _formatThroughput: function _formatThroughput(metrics) {\n    if (this.props.longFormat) {\n      return _react2.default.createElement(\n        'span',\n        null,\n        'Processing ',\n        _react2.default.createElement(\n          'strong',\n          null,\n          (0, _numeral2.default)(metrics.totalIn).format('0,0')\n        ),\n        ' incoming and ',\n        _react2.default.createElement(\n          'strong',\n          null,\n          (0, _numeral2.default)(metrics.totalOut).format('0,0')\n        ),\n        ' outgoing msg/s.'\n      );\n    }\n    return _react2.default.createElement(\n      'span',\n      null,\n      'In ',\n      (0, _numeral2.default)(metrics.totalIn).format('0,0'),\n      ' / Out ',\n      (0, _numeral2.default)(metrics.totalOut).format('0,0'),\n      ' msg/s.'\n    );\n  },\n  render: function render() {\n    if (this._isLoading()) {\n      return _react2.default.createElement(_common.Spinner, { text: 'Loading throughput...' });\n    }\n\n    var nodeId = this.props.nodeId;\n    var nodeMetrics = this.state.metrics[nodeId];\n    var metrics = _MetricsExtractor2.default.getValuesForNode(nodeMetrics, this.metricNames);\n\n    if (Object.keys(metrics).length === 0) {\n      return _react2.default.createElement(\n        'span',\n        null,\n        'Unable to load throughput.'\n      );\n    }\n\n    return this._formatThroughput(metrics);\n  }\n});\n\nexports.default = NodeThroughput;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1146:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _NodesList = __webpack_require__(1147);\n\nObject.defineProperty(exports, 'NodesList', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_NodesList).default;\n  }\n});\n\nvar _NodeMaintenanceDropdown = __webpack_require__(1152);\n\nObject.defineProperty(exports, 'NodeMaintenanceDropdown', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_NodeMaintenanceDropdown).default;\n  }\n});\n\nvar _NodeOverview = __webpack_require__(1153);\n\nObject.defineProperty(exports, 'NodeOverview', {\n  enumerable: true,\n  get: function get() {\n    return _interopRequireDefault(_NodeOverview).default;\n  }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ }),\n\n/***/ 1147:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _NodeListItem = __webpack_require__(1148);\n\nvar _NodeListItem2 = _interopRequireDefault(_NodeListItem);\n\nvar _common = __webpack_require__(46);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NodesStore = _StoreProvider2.default.getStore('Nodes');\nvar ClusterOverviewStore = _StoreProvider2.default.getStore('ClusterOverview');\n\nvar NodesList = _react2.default.createClass({\n  displayName: 'NodesList',\n\n  propTypes: {\n    permissions: _propTypes2.default.array.isRequired\n  },\n  mixins: [_reflux2.default.connect(NodesStore), _reflux2.default.connect(ClusterOverviewStore)],\n  _isLoading: function _isLoading() {\n    return !(this.state.nodes && this.state.clusterOverview);\n  },\n  _formatNodes: function _formatNodes(nodes, clusterOverview) {\n    var nodeIDs = Object.keys(nodes);\n\n    return nodeIDs.map(function (nodeID) {\n      return _react2.default.createElement(_NodeListItem2.default, { key: nodeID, node: nodes[nodeID], systemOverview: clusterOverview[nodeID] });\n    });\n  },\n  render: function render() {\n    if (this._isLoading()) {\n      return _react2.default.createElement(_common.Spinner, null);\n    }\n\n    var nodesNo = Object.keys(this.state.nodes).length;\n\n    return _react2.default.createElement(\n      _reactBootstrap.Row,\n      { className: 'content' },\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 12 },\n        _react2.default.createElement(\n          'h2',\n          null,\n          'There ',\n          _react2.default.createElement(_common.Pluralize, { value: nodesNo, singular: 'is', plural: 'are' }),\n          ' ',\n          nodesNo,\n          ' active ',\n          _react2.default.createElement(_common.Pluralize, { value: nodesNo, singular: 'node', plural: 'nodes' })\n        ),\n        _react2.default.createElement(_common.EntityList, { bsNoItemsStyle: 'info', noItemsText: 'There are no active nodes.',\n          items: this._formatNodes(this.state.nodes, this.state.clusterOverview) })\n      )\n    );\n  }\n});\n\nexports.default = NodesList;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1148:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(46);\n\nvar _NodesActions = __webpack_require__(1149);\n\nvar _NodesActions2 = _interopRequireDefault(_NodesActions);\n\nvar _SystemOverviewSummary = __webpack_require__(1150);\n\nvar _SystemOverviewSummary2 = _interopRequireDefault(_SystemOverviewSummary);\n\nvar _JvmHeapUsage = __webpack_require__(1033);\n\nvar _JvmHeapUsage2 = _interopRequireDefault(_JvmHeapUsage);\n\nvar _JournalState = __webpack_require__(1151);\n\nvar _JournalState2 = _interopRequireDefault(_JournalState);\n\nvar _NodeThroughput = __webpack_require__(1034);\n\nvar _NodeThroughput2 = _interopRequireDefault(_NodeThroughput);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NodeListItem = _react2.default.createClass({\n  displayName: 'NodeListItem',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired,\n    systemOverview: _propTypes2.default.object\n  },\n  render: function render() {\n    var node = this.props.node;\n    var title = _react2.default.createElement(_common.LinkToNode, { nodeId: node.node_id });\n\n    if (!this.props.systemOverview) {\n      return _react2.default.createElement(_common.EntityListItem, { key: 'entry-list-' + node.node_id,\n        title: title,\n        description: 'System information is currently unavailable.' });\n    }\n\n    var nodeThroughput = _react2.default.createElement(_NodeThroughput2.default, { nodeId: node.node_id });\n    var journalState = _react2.default.createElement(_JournalState2.default, { nodeId: node.node_id });\n    var actions = _react2.default.createElement(_NodesActions2.default, { node: node, systemOverview: this.props.systemOverview });\n\n    var additionalContent = _react2.default.createElement(\n      'div',\n      null,\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 3 },\n        _react2.default.createElement(_SystemOverviewSummary2.default, { information: this.props.systemOverview })\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 9 },\n        _react2.default.createElement(_JvmHeapUsage2.default, { nodeId: this.props.node.node_id })\n      )\n    );\n\n    return _react2.default.createElement(_common.EntityListItem, { key: 'entry-list-' + node.node_id,\n      title: title,\n      titleSuffix: nodeThroughput,\n      description: journalState,\n      actions: actions,\n      contentRow: additionalContent });\n  }\n});\n\nexports.default = NodeListItem;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1149:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouterBootstrap = __webpack_require__(915);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _urijs = __webpack_require__(88);\n\nvar _urijs2 = _interopRequireDefault(_urijs);\n\nvar _common = __webpack_require__(46);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _Routes = __webpack_require__(76);\n\nvar _Routes2 = _interopRequireDefault(_Routes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SystemProcessingStore = _StoreProvider2.default.getStore('SystemProcessing');\nvar SystemLoadBalancerStore = _StoreProvider2.default.getStore('SystemLoadBalancer');\nvar SystemShutdownStore = _StoreProvider2.default.getStore('SystemShutdown');\n\nvar NodesActions = _react2.default.createClass({\n  displayName: 'NodesActions',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired,\n    systemOverview: _propTypes2.default.object.isRequired\n  },\n  _toggleMessageProcessing: function _toggleMessageProcessing() {\n    if (confirm('You are about to ' + (this.props.systemOverview.is_processing ? 'pause' : 'resume') + ' message processing in this node. Are you sure?')) {\n      if (this.props.systemOverview.is_processing) {\n        SystemProcessingStore.pause(this.props.node.node_id);\n      } else {\n        SystemProcessingStore.resume(this.props.node.node_id);\n      }\n    }\n  },\n  _changeLBStatus: function _changeLBStatus(status) {\n    var _this = this;\n\n    return function () {\n      if (confirm('You are about to change the load balancer status for this node to ' + status + '. Are you sure?')) {\n        SystemLoadBalancerStore.override(_this.props.node.node_id, status);\n      }\n    };\n  },\n  _shutdown: function _shutdown() {\n    if (prompt('Do you really want to shutdown this node? Confirm by typing \"SHUTDOWN\".') === 'SHUTDOWN') {\n      SystemShutdownStore.shutdown(this.props.node.node_id);\n    }\n  },\n  render: function render() {\n    var apiBrowserURI = new _urijs2.default(this.props.node.transport_address + '/api-browser').normalizePathname().toString();\n    return _react2.default.createElement(\n      'div',\n      { className: 'item-actions' },\n      _react2.default.createElement(\n        _reactRouterBootstrap.LinkContainer,\n        { to: _Routes2.default.SYSTEM.NODES.SHOW(this.props.node.node_id) },\n        _react2.default.createElement(\n          _reactBootstrap.Button,\n          { bsStyle: 'info' },\n          'Details'\n        )\n      ),\n      _react2.default.createElement(\n        _reactRouterBootstrap.LinkContainer,\n        { to: _Routes2.default.SYSTEM.METRICS(this.props.node.node_id) },\n        _react2.default.createElement(\n          _reactBootstrap.Button,\n          { bsStyle: 'info' },\n          'Metrics'\n        )\n      ),\n      _react2.default.createElement(\n        _common.ExternalLinkButton,\n        { bsStyle: 'info', href: apiBrowserURI },\n        'API browser'\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.DropdownButton,\n        { title: 'More actions', id: 'more-actions-dropdown-' + this.props.node.node_id, pullRight: true },\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'processing:changestate' },\n          _react2.default.createElement(\n            _reactBootstrap.MenuItem,\n            { onSelect: this._toggleMessageProcessing },\n            this.props.systemOverview.is_processing ? 'Pause' : 'Resume',\n            ' message processing'\n          )\n        ),\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'lbstatus:change' },\n          _react2.default.createElement(\n            'li',\n            { className: 'dropdown-submenu left-submenu' },\n            _react2.default.createElement(\n              'a',\n              { href: '#' },\n              'Override LB status'\n            ),\n            _react2.default.createElement(\n              'ul',\n              { className: 'dropdown-menu' },\n              _react2.default.createElement(\n                _reactBootstrap.MenuItem,\n                { onSelect: this._changeLBStatus('ALIVE') },\n                'ALIVE'\n              ),\n              _react2.default.createElement(\n                _reactBootstrap.MenuItem,\n                { onSelect: this._changeLBStatus('DEAD') },\n                'DEAD'\n              )\n            )\n          )\n        ),\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'node:shutdown' },\n          _react2.default.createElement(\n            _reactBootstrap.MenuItem,\n            { onSelect: this._shutdown },\n            'Graceful shutdown'\n          )\n        ),\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: ['processing:changestate', 'lbstatus:change', 'node:shutdown'], anyPermissions: true },\n          _react2.default.createElement(\n            _common.IfPermitted,\n            { permissions: ['inputs:read', 'threads:dump'], anyPermissions: true },\n            _react2.default.createElement(_reactBootstrap.MenuItem, { divider: true })\n          )\n        ),\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'inputs:read' },\n          _react2.default.createElement(\n            _reactRouterBootstrap.LinkContainer,\n            { to: _Routes2.default.node_inputs(this.props.node.node_id) },\n            _react2.default.createElement(\n              _reactBootstrap.MenuItem,\n              null,\n              'Local message inputs'\n            )\n          )\n        ),\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'threads:dump' },\n          _react2.default.createElement(\n            _reactRouterBootstrap.LinkContainer,\n            { to: _Routes2.default.SYSTEM.THREADDUMP(this.props.node.node_id) },\n            _react2.default.createElement(\n              _reactBootstrap.MenuItem,\n              null,\n              'Get thread dump'\n            )\n          )\n        )\n      )\n    );\n  }\n});\n\nexports.default = NodesActions;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1150:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _StringUtils = __webpack_require__(87);\n\nvar _StringUtils2 = _interopRequireDefault(_StringUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SystemOverviewSummary = _react2.default.createClass({\n  displayName: 'SystemOverviewSummary',\n\n  propTypes: {\n    information: _propTypes2.default.object.isRequired\n  },\n  render: function render() {\n    var lbStatus = this.props.information.lb_status.toUpperCase();\n    return _react2.default.createElement(\n      'dl',\n      { className: 'graylog-node-state' },\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Current lifecycle state:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        _StringUtils2.default.capitalizeFirstLetter(this.props.information.lifecycle)\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Message processing:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        this.props.information.is_processing ? 'Enabled' : 'Disabled'\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Load balancer indication:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        { className: lbStatus === 'DEAD' ? 'text-danger' : '' },\n        lbStatus\n      )\n    );\n  }\n});\n\nexports.default = SystemOverviewSummary;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1151:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _numeral = __webpack_require__(118);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _common = __webpack_require__(46);\n\nvar _MetricsExtractor = __webpack_require__(928);\n\nvar _MetricsExtractor2 = _interopRequireDefault(_MetricsExtractor);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _ActionsProvider = __webpack_require__(8);\n\nvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MetricsStore = _StoreProvider2.default.getStore('Metrics');\n\nvar MetricsActions = _ActionsProvider2.default.getActions('Metrics');\n\nvar JournalState = _react2.default.createClass({\n  displayName: 'JournalState',\n\n  propTypes: {\n    nodeId: _propTypes2.default.string.isRequired\n  },\n  mixins: [_reflux2.default.connect(MetricsStore)],\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    this.metricNames = {\n      append: 'org.graylog2.journal.append.1-sec-rate',\n      read: 'org.graylog2.journal.read.1-sec-rate',\n      segments: 'org.graylog2.journal.segments',\n      entriesUncommitted: 'org.graylog2.journal.entries-uncommitted'\n    };\n    Object.keys(this.metricNames).forEach(function (metricShortName) {\n      return MetricsActions.add(_this.props.nodeId, _this.metricNames[metricShortName]);\n    });\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    var _this2 = this;\n\n    Object.keys(this.metricNames).forEach(function (metricShortName) {\n      return MetricsActions.remove(_this2.props.nodeId, _this2.metricNames[metricShortName]);\n    });\n  },\n  _isLoading: function _isLoading() {\n    return !this.state.metrics;\n  },\n  render: function render() {\n    if (this._isLoading()) {\n      return _react2.default.createElement(_common.Spinner, { text: 'Loading journal metrics...' });\n    }\n\n    var nodeId = this.props.nodeId;\n    var nodeMetrics = this.state.metrics[nodeId];\n    var metrics = _MetricsExtractor2.default.getValuesForNode(nodeMetrics, this.metricNames);\n\n    if (Object.keys(metrics).length === 0) {\n      return _react2.default.createElement(\n        'span',\n        null,\n        'Journal metrics unavailable.'\n      );\n    }\n\n    return _react2.default.createElement(\n      'span',\n      null,\n      'The journal contains ',\n      _react2.default.createElement(\n        'strong',\n        null,\n        (0, _numeral2.default)(metrics.entriesUncommitted).format('0,0'),\n        ' unprocessed messages'\n      ),\n      ' in ',\n      metrics.segments,\n      ' ',\n      _react2.default.createElement(_common.Pluralize, { value: metrics.segments, singular: 'segment', plural: 'segments' }),\n      '.',\n      ' ',\n      _react2.default.createElement(\n        'strong',\n        null,\n        (0, _numeral2.default)(metrics.append).format('0,0'),\n        ' messages'\n      ),\n      ' appended, ',\n      _react2.default.createElement(\n        'strong',\n        null,\n        (0, _numeral2.default)(metrics.read).format('0,0'),\n        ' messages'\n      ),\n      ' read in the last second.'\n    );\n  }\n});\n\nexports.default = JournalState;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1152:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouterBootstrap = __webpack_require__(915);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _urijs = __webpack_require__(88);\n\nvar _urijs2 = _interopRequireDefault(_urijs);\n\nvar _common = __webpack_require__(46);\n\nvar _Routes = __webpack_require__(76);\n\nvar _Routes2 = _interopRequireDefault(_Routes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NodeMaintenanceDropdown = _react2.default.createClass({\n  displayName: 'NodeMaintenanceDropdown',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired\n  },\n  render: function render() {\n    var apiBrowserURI = new _urijs2.default(this.props.node.transport_address + '/api-browser').normalizePathname().toString();\n    return _react2.default.createElement(\n      _reactBootstrap.ButtonGroup,\n      null,\n      _react2.default.createElement(\n        _reactBootstrap.DropdownButton,\n        { bsStyle: 'info', bsSize: 'lg', title: 'Actions', id: 'node-maintenance-actions', pullRight: true },\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'threads:dump' },\n          _react2.default.createElement(\n            _reactRouterBootstrap.LinkContainer,\n            { to: _Routes2.default.SYSTEM.THREADDUMP(this.props.node.node_id) },\n            _react2.default.createElement(\n              _reactBootstrap.MenuItem,\n              null,\n              'Get thread dump'\n            )\n          )\n        ),\n        _react2.default.createElement(\n          _reactRouterBootstrap.LinkContainer,\n          { to: _Routes2.default.SYSTEM.METRICS(this.props.node.node_id) },\n          _react2.default.createElement(\n            _reactBootstrap.MenuItem,\n            null,\n            'Metrics'\n          )\n        ),\n        _react2.default.createElement(\n          _common.IfPermitted,\n          { permissions: 'loggers:read' },\n          _react2.default.createElement(\n            _reactRouterBootstrap.LinkContainer,\n            { to: _Routes2.default.SYSTEM.LOGGING },\n            _react2.default.createElement(\n              _reactBootstrap.MenuItem,\n              null,\n              'Configure internal logging'\n            )\n          )\n        ),\n        _react2.default.createElement(\n          _reactBootstrap.MenuItem,\n          { href: apiBrowserURI, target: '_blank' },\n          _react2.default.createElement(\n            _common.ExternalLink,\n            null,\n            'API Browser'\n          )\n        )\n      )\n    );\n  }\n});\n\nexports.default = NodeMaintenanceDropdown;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1153:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouterBootstrap = __webpack_require__(915);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _BufferUsage = __webpack_require__(1154);\n\nvar _BufferUsage2 = _interopRequireDefault(_BufferUsage);\n\nvar _SystemOverviewDetails = __webpack_require__(1155);\n\nvar _SystemOverviewDetails2 = _interopRequireDefault(_SystemOverviewDetails);\n\nvar _JvmHeapUsage = __webpack_require__(1033);\n\nvar _JvmHeapUsage2 = _interopRequireDefault(_JvmHeapUsage);\n\nvar _JournalDetails = __webpack_require__(1156);\n\nvar _JournalDetails2 = _interopRequireDefault(_JournalDetails);\n\nvar _SystemInformation = __webpack_require__(1157);\n\nvar _SystemInformation2 = _interopRequireDefault(_SystemInformation);\n\nvar _RestApiOverview = __webpack_require__(1158);\n\nvar _RestApiOverview2 = _interopRequireDefault(_RestApiOverview);\n\nvar _PluginsDataTable = __webpack_require__(1159);\n\nvar _PluginsDataTable2 = _interopRequireDefault(_PluginsDataTable);\n\nvar _InputTypesDataTable = __webpack_require__(1160);\n\nvar _InputTypesDataTable2 = _interopRequireDefault(_InputTypesDataTable);\n\nvar _Routes = __webpack_require__(76);\n\nvar _Routes2 = _interopRequireDefault(_Routes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NodeOverview = _react2.default.createClass({\n  displayName: 'NodeOverview',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired,\n    systemOverview: _propTypes2.default.object.isRequired,\n    jvmInformation: _propTypes2.default.object,\n    plugins: _propTypes2.default.array,\n    inputDescriptions: _propTypes2.default.object,\n    inputStates: _propTypes2.default.array\n  },\n  render: function render() {\n    var node = this.props.node;\n    var systemOverview = this.props.systemOverview;\n\n    var pluginCount = void 0;\n    if (this.props.plugins) {\n      pluginCount = this.props.plugins.length + ' plugins installed';\n    }\n\n    var inputCount = void 0;\n    if (this.props.inputStates) {\n      var runningInputs = this.props.inputStates.filter(function (inputState) {\n        return inputState.state.toUpperCase() === 'RUNNING';\n      });\n      inputCount = runningInputs.length + ' inputs running on this node';\n    }\n\n    return _react2.default.createElement(\n      'div',\n      null,\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2.default.createElement(_SystemOverviewDetails2.default, { node: node, information: systemOverview })\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2.default.createElement(\n            'h2',\n            { style: { marginBottom: 5 } },\n            'Memory/Heap usage'\n          ),\n          _react2.default.createElement(_JvmHeapUsage2.default, { nodeId: node.node_id })\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2.default.createElement(\n            'h2',\n            null,\n            'Buffers'\n          ),\n          _react2.default.createElement(\n            'p',\n            { className: 'description' },\n            'Buffers are built to cache small amounts of messages for a very short time (usually milliseconds) on their way through the different processors.'\n          ),\n          _react2.default.createElement(\n            _reactBootstrap.Row,\n            null,\n            _react2.default.createElement(\n              _reactBootstrap.Col,\n              { md: 4 },\n              _react2.default.createElement(_BufferUsage2.default, { nodeId: node.node_id, title: 'Input buffer', bufferType: 'input' })\n            ),\n            _react2.default.createElement(\n              _reactBootstrap.Col,\n              { md: 4 },\n              _react2.default.createElement(_BufferUsage2.default, { nodeId: node.node_id, title: 'Process buffer', bufferType: 'process' })\n            ),\n            _react2.default.createElement(\n              _reactBootstrap.Col,\n              { md: 4 },\n              _react2.default.createElement(_BufferUsage2.default, { nodeId: node.node_id, title: 'Output buffer', bufferType: 'output' })\n            )\n          )\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2.default.createElement(\n            'h2',\n            null,\n            'Disk Journal'\n          ),\n          _react2.default.createElement(\n            'p',\n            { className: 'description' },\n            'Incoming messages are written to the disk journal to ensure they are kept safe in case of a server failure. The journal also helps keeping Graylog working if any of the outputs is too slow to keep up with the message rate or whenever there is a peak in incoming messages. It makes sure that Graylog does not buffer all of those messages in main memory and avoids overly long garbage collection pauses that way.'\n          ),\n          _react2.default.createElement(_JournalDetails2.default, { nodeId: node.node_id })\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 6 },\n          _react2.default.createElement(\n            'h2',\n            null,\n            'System'\n          ),\n          _react2.default.createElement(_SystemInformation2.default, { node: node, systemInformation: systemOverview, jvmInformation: this.props.jvmInformation })\n        ),\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 6 },\n          _react2.default.createElement(\n            'h2',\n            null,\n            'REST API'\n          ),\n          _react2.default.createElement(_RestApiOverview2.default, { node: node })\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2.default.createElement(\n            'h2',\n            null,\n            'Installed plugins ',\n            _react2.default.createElement(\n              'small',\n              null,\n              pluginCount\n            )\n          ),\n          _react2.default.createElement(_PluginsDataTable2.default, { plugins: this.props.plugins })\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Row,\n        { className: 'content' },\n        _react2.default.createElement(\n          _reactBootstrap.Col,\n          { md: 12 },\n          _react2.default.createElement(\n            'span',\n            { className: 'pull-right' },\n            _react2.default.createElement(\n              _reactRouterBootstrap.LinkContainer,\n              { to: _Routes2.default.node_inputs(node.node_id) },\n              _react2.default.createElement(\n                _reactBootstrap.Button,\n                { bsStyle: 'success', bsSize: 'small' },\n                'Manage inputs'\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'h2',\n            { style: { marginBottom: 15 } },\n            'Available input types ',\n            _react2.default.createElement(\n              'small',\n              null,\n              inputCount\n            )\n          ),\n          _react2.default.createElement(_InputTypesDataTable2.default, { inputDescriptions: this.props.inputDescriptions })\n        )\n      )\n    );\n  }\n});\n\nexports.default = NodeOverview;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1154:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _numeral = __webpack_require__(118);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _reactRouterBootstrap = __webpack_require__(915);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _ActionsProvider = __webpack_require__(8);\n\nvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\nvar _Routes = __webpack_require__(76);\n\nvar _Routes2 = _interopRequireDefault(_Routes);\n\nvar _NumberUtils = __webpack_require__(120);\n\nvar _NumberUtils2 = _interopRequireDefault(_NumberUtils);\n\nvar _common = __webpack_require__(46);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MetricsStore = _StoreProvider2.default.getStore('Metrics');\n\nvar MetricsActions = _ActionsProvider2.default.getActions('Metrics');\n\nvar BufferUsage = _react2.default.createClass({\n  displayName: 'BufferUsage',\n\n  propTypes: {\n    bufferType: _propTypes2.default.string.isRequired,\n    nodeId: _propTypes2.default.string.isRequired,\n    title: _propTypes2.default.node.isRequired\n  },\n  mixins: [_reflux2.default.connect(MetricsStore)],\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    var prefix = this._metricPrefix();\n    var metricNames = [prefix + '.usage', prefix + '.size'];\n    metricNames.forEach(function (metricName) {\n      return MetricsActions.add(_this.props.nodeId, metricName);\n    });\n  },\n  _metricPrefix: function _metricPrefix() {\n    return 'org.graylog2.buffers.' + this.props.bufferType;\n  },\n  _metricFilter: function _metricFilter() {\n    return 'org\\\\.graylog2\\\\.buffers\\\\.' + this.props.bufferType + '\\\\.|' + this.props.bufferType + 'buffer';\n  },\n  render: function render() {\n    if (!this.state.metrics) {\n      return _react2.default.createElement(_common.Spinner, null);\n    }\n    var nodeId = this.props.nodeId;\n    var prefix = this._metricPrefix();\n    var usageMetric = this.state.metrics[nodeId][prefix + '.usage'];\n    var usage = usageMetric ? usageMetric.metric.value : NaN;\n    var sizeMetric = this.state.metrics[nodeId][prefix + '.size'];\n    var size = sizeMetric ? sizeMetric.metric.value : NaN;\n    var usagePercentage = !isNaN(usage) && !isNaN(size) ? usage / size : 0;\n    var percentLabel = _NumberUtils2.default.formatPercentage(usagePercentage);\n\n    return _react2.default.createElement(\n      'div',\n      null,\n      _react2.default.createElement(\n        _reactRouterBootstrap.LinkContainer,\n        { to: _Routes2.default.filtered_metrics(nodeId, this._metricFilter()) },\n        _react2.default.createElement(\n          _reactBootstrap.Button,\n          { bsSize: 'xsmall', className: 'pull-right' },\n          'Metrics'\n        )\n      ),\n      _react2.default.createElement(\n        'h3',\n        null,\n        this.props.title\n      ),\n      _react2.default.createElement(\n        'div',\n        { className: 'node-buffer-usage' },\n        _react2.default.createElement(_reactBootstrap.ProgressBar, { now: usagePercentage * 100,\n          bsStyle: 'warning',\n          label: percentLabel })\n      ),\n      _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement(\n          'strong',\n          null,\n          usage,\n          ' messages'\n        ),\n        ' in ',\n        this.props.title.toLowerCase(),\n        ', ',\n        percentLabel,\n        ' utilized.'\n      )\n    );\n  }\n});\n\nexports.default = BufferUsage;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1155:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(46);\n\nvar _support = __webpack_require__(926);\n\nvar _NodeThroughput = __webpack_require__(1034);\n\nvar _NodeThroughput2 = _interopRequireDefault(_NodeThroughput);\n\nvar _DocsHelper = __webpack_require__(918);\n\nvar _DocsHelper2 = _interopRequireDefault(_DocsHelper);\n\nvar _StringUtils = __webpack_require__(87);\n\nvar _StringUtils2 = _interopRequireDefault(_StringUtils);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SystemProcessingStore = _StoreProvider2.default.getStore('SystemProcessing');\n\nvar SystemOverviewDetails = _react2.default.createClass({\n  displayName: 'SystemOverviewDetails',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired,\n    information: _propTypes2.default.object.isRequired\n  },\n  _toggleMessageProcessing: function _toggleMessageProcessing() {\n    if (confirm('You are about to ' + (this.props.information.is_processing ? 'pause' : 'resume') + ' message processing in this node. Are you sure?')) {\n      if (this.props.information.is_processing) {\n        SystemProcessingStore.pause(this.props.node.node_id);\n      } else {\n        SystemProcessingStore.resume(this.props.node.node_id);\n      }\n    }\n  },\n  render: function render() {\n    var information = this.props.information;\n    var lbStatus = information.lb_status.toUpperCase();\n    var processingStatus = void 0;\n\n    if (information.is_processing) {\n      processingStatus = _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('i', { className: 'fa fa-info-circle' }),\n        '\\xA0 ',\n        _react2.default.createElement(_NodeThroughput2.default, { nodeId: this.props.node.node_id, longFormat: true })\n      );\n    } else {\n      processingStatus = _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('i', { className: 'fa fa-exclamation-triangle' }),\n        '\\xA0 Node is ',\n        _react2.default.createElement(\n          'strong',\n          null,\n          'not'\n        ),\n        ' processing messages'\n      );\n    }\n\n    return _react2.default.createElement(\n      _reactBootstrap.Row,\n      null,\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 4 },\n        _react2.default.createElement(\n          _reactBootstrap.Alert,\n          { bsStyle: 'info' },\n          _react2.default.createElement(\n            'span',\n            { className: 'pull-right' },\n            ' ',\n            _react2.default.createElement(_support.DocumentationLink, { page: _DocsHelper2.default.PAGES.LOAD_BALANCERS, text: 'What does this mean?' })\n          ),\n          _react2.default.createElement('i', { className: 'fa fa-exchange' }),\n          '\\xA0 Lifecycle state: ',\n          _react2.default.createElement(\n            'strong',\n            null,\n            _StringUtils2.default.capitalizeFirstLetter(this.props.information.lifecycle)\n          )\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 4 },\n        _react2.default.createElement(\n          _reactBootstrap.Alert,\n          { bsStyle: lbStatus === 'ALIVE' ? 'success' : 'danger' },\n          _react2.default.createElement(\n            'span',\n            { className: 'pull-right' },\n            ' ',\n            _react2.default.createElement(_support.DocumentationLink, { page: _DocsHelper2.default.PAGES.LOAD_BALANCERS, text: 'What does this mean?' })\n          ),\n          _react2.default.createElement('i', { className: 'fa fa-heart' }),\n          '\\xA0 Marked as ',\n          _react2.default.createElement(\n            'strong',\n            null,\n            lbStatus\n          ),\n          ' for load balancers'\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 4 },\n        _react2.default.createElement(\n          _reactBootstrap.Alert,\n          { bsStyle: information.is_processing ? 'success' : 'danger' },\n          _react2.default.createElement(\n            _common.IfPermitted,\n            { permissions: 'processing:changestate' },\n            _react2.default.createElement(\n              'span',\n              { className: 'pull-right' },\n              _react2.default.createElement(\n                _reactBootstrap.Button,\n                { onClick: this._toggleMessageProcessing, bsSize: 'xsmall', bsStyle: information.is_processing ? 'danger' : 'success' },\n                information.is_processing ? 'Pause' : 'Resume',\n                ' processing'\n              )\n            )\n          ),\n          processingStatus\n        )\n      )\n    );\n  }\n});\n\nexports.default = SystemOverviewDetails;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1156:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _reactRouterBootstrap = __webpack_require__(915);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _numeral = __webpack_require__(118);\n\nvar _numeral2 = _interopRequireDefault(_numeral);\n\nvar _moment = __webpack_require__(35);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(270);\n\nvar _MetricsExtractor = __webpack_require__(928);\n\nvar _MetricsExtractor2 = _interopRequireDefault(_MetricsExtractor);\n\nvar _ActionsProvider = __webpack_require__(8);\n\nvar _ActionsProvider2 = _interopRequireDefault(_ActionsProvider);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _common = __webpack_require__(46);\n\nvar _NumberUtils = __webpack_require__(120);\n\nvar _NumberUtils2 = _interopRequireDefault(_NumberUtils);\n\nvar _Routes = __webpack_require__(76);\n\nvar _Routes2 = _interopRequireDefault(_Routes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MetricsActions = _ActionsProvider2.default.getActions('Metrics');\n\nvar MetricsStore = _StoreProvider2.default.getStore('Metrics');\nvar JournalStore = _StoreProvider2.default.getStore('Journal');\n\nvar JournalDetails = _react2.default.createClass({\n  displayName: 'JournalDetails',\n\n  propTypes: {\n    nodeId: _propTypes2.default.string.isRequired\n  },\n  mixins: [_reflux2.default.connect(MetricsStore)],\n\n  getInitialState: function getInitialState() {\n    return {\n      journalInformation: undefined\n    };\n  },\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    JournalStore.get(this.props.nodeId).then(function (journalInformation) {\n      _this.setState({ journalInformation: journalInformation }, _this._listenToMetrics);\n    });\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    var _this2 = this;\n\n    if (this.metricNames) {\n      Object.keys(this.metricNames).forEach(function (metricShortName) {\n        return MetricsActions.remove(_this2.props.nodeId, _this2.metricNames[metricShortName]);\n      });\n    }\n  },\n  _listenToMetrics: function _listenToMetrics() {\n    var _this3 = this;\n\n    // only listen for updates if the journal is actually turned on\n    if (this.state.journalInformation.enabled) {\n      this.metricNames = {\n        append: 'org.graylog2.journal.append.1-sec-rate',\n        read: 'org.graylog2.journal.read.1-sec-rate',\n        segments: 'org.graylog2.journal.segments',\n        entriesUncommitted: 'org.graylog2.journal.entries-uncommitted',\n        utilizationRatio: 'org.graylog2.journal.utilization-ratio',\n        oldestSegment: 'org.graylog2.journal.oldest-segment'\n      };\n      Object.keys(this.metricNames).forEach(function (metricShortName) {\n        return MetricsActions.add(_this3.props.nodeId, _this3.metricNames[metricShortName]);\n      });\n    }\n  },\n  _isLoading: function _isLoading() {\n    return !(this.state.metrics && this.state.journalInformation);\n  },\n  render: function render() {\n    if (this._isLoading()) {\n      return _react2.default.createElement(_common.Spinner, { text: 'Loading journal metrics...' });\n    }\n\n    var nodeId = this.props.nodeId;\n    var nodeMetrics = this.state.metrics[nodeId];\n    var journalInformation = this.state.journalInformation;\n\n    if (!journalInformation.enabled) {\n      return _react2.default.createElement(\n        _reactBootstrap.Alert,\n        { bsStyle: 'warning' },\n        _react2.default.createElement('i', { className: 'fa fa-exclamation-triangle' }),\n        '\\xA0 The disk journal is disabled on this node.'\n      );\n    }\n\n    var metrics = this.metricNames ? _MetricsExtractor2.default.getValuesForNode(nodeMetrics, this.metricNames) : {};\n\n    if (Object.keys(metrics).length === 0) {\n      return _react2.default.createElement(\n        _reactBootstrap.Alert,\n        { bsStyle: 'warning' },\n        _react2.default.createElement('i', { className: 'fa fa-exclamation-triangle' }),\n        '\\xA0 Journal metrics unavailable.'\n      );\n    }\n\n    var oldestSegment = (0, _moment2.default)(metrics.oldestSegment);\n    var overcommittedWarning = void 0;\n    if (metrics.utilizationRatio >= 1) {\n      overcommittedWarning = _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement(\n          'strong',\n          null,\n          'Warning!'\n        ),\n        ' The journal utilization is exceeding the maximum size defined.',\n        ' ',\n        _react2.default.createElement(\n          _reactRouterBootstrap.LinkContainer,\n          { to: _Routes2.default.SYSTEM.OVERVIEW },\n          _react2.default.createElement(\n            'a',\n            null,\n            'Click here'\n          )\n        ),\n        ' for more information.',\n        _react2.default.createElement('br', null)\n      );\n    }\n\n    return _react2.default.createElement(\n      _reactBootstrap.Row,\n      { className: 'row-sm' },\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 6 },\n        _react2.default.createElement(\n          'h3',\n          null,\n          'Configuration'\n        ),\n        _react2.default.createElement(\n          'dl',\n          { className: 'system-journal' },\n          _react2.default.createElement(\n            'dt',\n            null,\n            'Path:'\n          ),\n          _react2.default.createElement(\n            'dd',\n            null,\n            journalInformation.journal_config.directory\n          ),\n          _react2.default.createElement(\n            'dt',\n            null,\n            'Earliest entry:'\n          ),\n          _react2.default.createElement(\n            'dd',\n            null,\n            _react2.default.createElement(_common.Timestamp, { dateTime: oldestSegment, relative: true })\n          ),\n          _react2.default.createElement(\n            'dt',\n            null,\n            'Maximum size:'\n          ),\n          _react2.default.createElement(\n            'dd',\n            null,\n            _NumberUtils2.default.formatBytes(journalInformation.journal_config.max_size)\n          ),\n          _react2.default.createElement(\n            'dt',\n            null,\n            'Maximum age:'\n          ),\n          _react2.default.createElement(\n            'dd',\n            null,\n            _moment2.default.duration(journalInformation.journal_config.max_age).format('d [days] h [hours] m [minutes]')\n          ),\n          _react2.default.createElement(\n            'dt',\n            null,\n            'Flush policy:'\n          ),\n          _react2.default.createElement(\n            'dd',\n            null,\n            'Every ',\n            (0, _numeral2.default)(journalInformation.journal_config.flush_interval).format('0,0'),\n            ' messages',\n            ' ',\n            'or ',\n            _moment2.default.duration(journalInformation.journal_config.flush_age).format('h [hours] m [minutes] s [seconds]')\n          )\n        )\n      ),\n      _react2.default.createElement(\n        _reactBootstrap.Col,\n        { md: 6, className: 'journal-details-usage' },\n        _react2.default.createElement(\n          'h3',\n          null,\n          'Utilization'\n        ),\n        _react2.default.createElement(_reactBootstrap.ProgressBar, { now: metrics.utilizationRatio * 100,\n          label: _NumberUtils2.default.formatPercentage(metrics.utilizationRatio) }),\n        overcommittedWarning,\n        _react2.default.createElement(\n          'strong',\n          null,\n          (0, _numeral2.default)(metrics.entriesUncommitted).format('0,0'),\n          ' unprocessed messages'\n        ),\n        ' ',\n        'are currently in the journal, in ',\n        metrics.segments,\n        ' segments.',\n        _react2.default.createElement('br', null),\n        _react2.default.createElement(\n          'strong',\n          null,\n          (0, _numeral2.default)(metrics.append).format('0,0'),\n          ' messages'\n        ),\n        ' ',\n        'have been appended in the last second,',\n        ' ',\n        _react2.default.createElement(\n          'strong',\n          null,\n          (0, _numeral2.default)(metrics.read).format('0,0'),\n          ' messages'\n        ),\n        ' have been read in the last second.'\n      )\n    );\n  }\n});\n\nexports.default = JournalDetails;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1157:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _moment = __webpack_require__(35);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _common = __webpack_require__(46);\n\nvar _DateTime = __webpack_require__(50);\n\nvar _DateTime2 = _interopRequireDefault(_DateTime);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SystemInformation = _react2.default.createClass({\n  displayName: 'SystemInformation',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired,\n    systemInformation: _propTypes2.default.object.isRequired,\n    jvmInformation: _propTypes2.default.object\n  },\n  getInitialState: function getInitialState() {\n    return { time: (0, _moment2.default)() };\n  },\n  componentDidMount: function componentDidMount() {\n    var _this = this;\n\n    this.interval = setInterval(function () {\n      return _this.setState(_this.getInitialState());\n    }, 1000);\n  },\n  componentWillUnmount: function componentWillUnmount() {\n    clearTimeout(this.interval);\n  },\n  render: function render() {\n    var systemInformation = this.props.systemInformation;\n    var jvmInformation = void 0;\n    if (this.props.jvmInformation) {\n      jvmInformation = _react2.default.createElement(\n        'span',\n        null,\n        'PID ',\n        this.props.jvmInformation.pid,\n        ', ',\n        this.props.jvmInformation.info\n      );\n    } else {\n      jvmInformation = _react2.default.createElement(\n        'span',\n        null,\n        'JMV information for this node is unavailable.'\n      );\n    }\n\n    return _react2.default.createElement(\n      'dl',\n      { className: 'system-system' },\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Hostname:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        systemInformation.hostname\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Node ID:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        this.props.node.node_id\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Version:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        systemInformation.version,\n        ', codename ',\n        _react2.default.createElement(\n          'em',\n          null,\n          systemInformation.codename\n        )\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'JVM:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        jvmInformation\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Time:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        _react2.default.createElement(_common.Timestamp, { dateTime: this.state.time, format: _DateTime2.default.Formats.DATETIME_TZ, tz: systemInformation.timezone })\n      )\n    );\n  }\n});\n\nexports.default = SystemInformation;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1158:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _common = __webpack_require__(46);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RestApiOverview = _react2.default.createClass({\n  displayName: 'RestApiOverview',\n\n  propTypes: {\n    node: _propTypes2.default.object.isRequired\n  },\n  render: function render() {\n    return _react2.default.createElement(\n      'dl',\n      { className: 'system-rest' },\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Transport address:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        this.props.node.transport_address\n      ),\n      _react2.default.createElement(\n        'dt',\n        null,\n        'Last seen:'\n      ),\n      _react2.default.createElement(\n        'dd',\n        null,\n        _react2.default.createElement(_common.Timestamp, { dateTime: this.props.node.last_seen, relative: true })\n      )\n    );\n  }\n});\n\nexports.default = RestApiOverview;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1159:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(46);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PluginsDataTable = _react2.default.createClass({\n  displayName: 'PluginsDataTable',\n\n  propTypes: {\n    plugins: _propTypes2.default.array\n  },\n  _headerCellFormatter: function _headerCellFormatter(header) {\n    return _react2.default.createElement(\n      'th',\n      null,\n      header\n    );\n  },\n  _pluginInfoFormatter: function _pluginInfoFormatter(plugin) {\n    return _react2.default.createElement(\n      'tr',\n      { key: plugin.name },\n      _react2.default.createElement(\n        'td',\n        { className: 'limited' },\n        plugin.name\n      ),\n      _react2.default.createElement(\n        'td',\n        { className: 'limited' },\n        plugin.version\n      ),\n      _react2.default.createElement(\n        'td',\n        { className: 'limited' },\n        plugin.author\n      ),\n      _react2.default.createElement(\n        'td',\n        { className: 'limited', style: { width: '50%' } },\n        plugin.description,\n        '\\xA0\\xA0',\n        _react2.default.createElement(\n          _common.ExternalLink,\n          { href: plugin.url, style: { marginLeft: 10 } },\n          'Website'\n        )\n      )\n    );\n  },\n  render: function render() {\n    if (!this.props.plugins) {\n      return _react2.default.createElement(_common.Spinner, { text: 'Loading plugins on this node...' });\n    }\n\n    if (this.props.plugins.length === 0) {\n      return _react2.default.createElement(\n        _reactBootstrap.Alert,\n        { bsStyle: 'info' },\n        _react2.default.createElement('i', { className: 'fa fa-info-circle' }),\n        '\\xA0 This node has not any installed plugins.'\n      );\n    }\n\n    var headers = ['Name', 'Version', 'Author', 'Description'];\n\n    return _react2.default.createElement(_common.DataTable, { id: 'plugin-list',\n      rowClassName: 'row-sm',\n      className: 'table-hover table-condensed table-striped',\n      headers: headers,\n      headerCellFormatter: this._headerCellFormatter,\n      sortByKey: 'name',\n      rows: this.props.plugins,\n      dataRowFormatter: this._pluginInfoFormatter,\n      filterLabel: 'Filter',\n      filterKeys: [] });\n  }\n});\n\nexports.default = PluginsDataTable;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1160:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBootstrap = __webpack_require__(16);\n\nvar _common = __webpack_require__(46);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar InputTypesDataTable = _react2.default.createClass({\n  displayName: 'InputTypesDataTable',\n\n  propTypes: {\n    inputDescriptions: _propTypes2.default.object\n  },\n  _headerCellFormatter: function _headerCellFormatter(header) {\n    return _react2.default.createElement(\n      'th',\n      null,\n      header\n    );\n  },\n  _inputTypeFormatter: function _inputTypeFormatter(inputType) {\n    return _react2.default.createElement(\n      'tr',\n      { key: inputType.type },\n      _react2.default.createElement(\n        'td',\n        { className: 'limited' },\n        inputType.name\n      ),\n      _react2.default.createElement(\n        'td',\n        { className: 'limited' },\n        inputType.type\n      ),\n      _react2.default.createElement(\n        'td',\n        { className: 'limited', style: { width: 150 } },\n        inputType.link_to_docs && _react2.default.createElement(\n          _common.ExternalLink,\n          { href: inputType.link_to_docs },\n          'Documentation'\n        )\n      )\n    );\n  },\n  render: function render() {\n    var _this = this;\n\n    if (!this.props.inputDescriptions) {\n      return _react2.default.createElement(_common.Spinner, { text: 'Loading input types...' });\n    }\n\n    if (Object.keys(this.props.inputDescriptions).length === 0) {\n      return _react2.default.createElement(\n        _reactBootstrap.Alert,\n        { bsStyle: 'warning' },\n        _react2.default.createElement('i', { className: 'fa fa-exclamation-triangle' }),\n        '\\xA0 Input types are unavailable.'\n      );\n    }\n\n    var headers = ['Name', 'Type', 'Documentation'];\n\n    var rows = Object.keys(this.props.inputDescriptions).map(function (key) {\n      return _this.props.inputDescriptions[key];\n    });\n\n    return _react2.default.createElement(_common.DataTable, { id: 'input-types-list',\n      rowClassName: 'row-sm',\n      className: 'table-hover table-condensed table-striped',\n      headers: headers,\n      headerCellFormatter: this._headerCellFormatter,\n      sortByKey: 'name',\n      rows: rows,\n      dataRowFormatter: this._inputTypeFormatter,\n      filterLabel: 'Filter',\n      filterKeys: [] });\n  }\n});\n\nexports.default = InputTypesDataTable;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 1468:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _propTypes = __webpack_require__(5);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(2);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reflux = __webpack_require__(1);\n\nvar _reflux2 = _interopRequireDefault(_reflux);\n\nvar _StoreProvider = __webpack_require__(23);\n\nvar _StoreProvider2 = _interopRequireDefault(_StoreProvider);\n\nvar _nodes = __webpack_require__(1146);\n\nvar _common = __webpack_require__(46);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NodesStore = _StoreProvider2.default.getStore('Nodes');\nvar ClusterOverviewStore = _StoreProvider2.default.getStore('ClusterOverview');\nvar PluginsStore = _StoreProvider2.default.getStore('Plugins');\nvar InputStatesStore = _StoreProvider2.default.getStore('InputStates');\nvar InputTypesStore = _StoreProvider2.default.getStore('InputTypes');\n\nfunction nodeFilter(state) {\n  return state.nodes ? state.nodes[this.props.params.nodeId] : state.nodes;\n}\n\nfunction clusterOverviewFilter(state) {\n  return state.clusterOverview ? state.clusterOverview[this.props.params.nodeId] : undefined;\n}\n\nvar ShowNodePage = _react2.default.createClass({\n  displayName: 'ShowNodePage',\n\n  propTypes: {\n    params: _propTypes2.default.object.isRequired\n  },\n  mixins: [_reflux2.default.connectFilter(NodesStore, 'node', nodeFilter), _reflux2.default.connectFilter(ClusterOverviewStore, 'systemOverview', clusterOverviewFilter), _reflux2.default.connect(InputTypesStore)],\n  getInitialState: function getInitialState() {\n    return {\n      jvmInformation: undefined,\n      plugins: undefined\n    };\n  },\n  componentWillMount: function componentWillMount() {\n    var _this = this;\n\n    Promise.all([ClusterOverviewStore.jvm(this.props.params.nodeId).then(function (jvmInformation) {\n      return _this.setState({ jvmInformation: jvmInformation });\n    }), PluginsStore.list(this.props.params.nodeId).then(function (plugins) {\n      return _this.setState({ plugins: plugins });\n    }), InputStatesStore.list().then(function (inputStates) {\n      // We only want the input states for the current node\n      var inputIds = Object.keys(inputStates);\n      var filteredInputStates = [];\n      inputIds.forEach(function (inputId) {\n        var inputObject = inputStates[inputId][_this.props.params.nodeId];\n        if (inputObject) {\n          filteredInputStates.push(inputObject);\n        }\n      });\n\n      _this.setState({ inputStates: filteredInputStates });\n    })]).then(function () {}, function (errors) {\n      return _this.setState({ errors: errors });\n    });\n  },\n  _isLoading: function _isLoading() {\n    return !(this.state.node && this.state.systemOverview);\n  },\n  render: function render() {\n    if (this.state.errors) {\n      return _react2.default.createElement(_common.PageErrorOverview, { errors: [this.state.errors] });\n    }\n    if (this._isLoading()) {\n      return _react2.default.createElement(_common.Spinner, null);\n    }\n    var node = this.state.node;\n    var title = _react2.default.createElement(\n      'span',\n      null,\n      'Node ',\n      node.short_node_id,\n      ' / ',\n      node.hostname\n    );\n\n    return _react2.default.createElement(\n      _common.DocumentTitle,\n      { title: 'Node ' + node.short_node_id + ' / ' + node.hostname },\n      _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          _common.PageHeader,\n          { title: title },\n          _react2.default.createElement(\n            'span',\n            null,\n            'This page shows details of a Graylog server node that is active and reachable in your cluster.'\n          ),\n          _react2.default.createElement(\n            'span',\n            null,\n            node.is_master ? _react2.default.createElement(\n              'span',\n              null,\n              'This is the master node.'\n            ) : _react2.default.createElement(\n              'span',\n              null,\n              'This is ',\n              _react2.default.createElement(\n                'em',\n                null,\n                'not'\n              ),\n              ' the master node.'\n            )\n          ),\n          _react2.default.createElement(\n            'span',\n            null,\n            _react2.default.createElement(_nodes.NodeMaintenanceDropdown, { node: node })\n          )\n        ),\n        _react2.default.createElement(_nodes.NodeOverview, { node: node, systemOverview: this.state.systemOverview,\n          jvmInformation: this.state.jvmInformation, plugins: this.state.plugins,\n          inputStates: this.state.inputStates, inputDescriptions: this.state.inputDescriptions })\n      )\n    );\n  }\n});\n\nexports.default = ShowNodePage;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 928:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar MetricsExtractor = {\n  /*\n   * Returns an object containing a short name and the metric value for it.\n   * Short names are the keys of the metricNames object, which should look like:\n   * { shortName: \"metricFullName\" }\n   */\n  getValuesForNode: function getValuesForNode(nodeMetrics, metricNames) {\n    if (nodeMetrics === null || nodeMetrics === undefined || Object.keys(nodeMetrics).length === 0) {\n      return {};\n    }\n\n    var metrics = {};\n    Object.keys(metricNames).forEach(function (metricShortName) {\n      var metricFullName = metricNames[metricShortName];\n      var metricObject = nodeMetrics[metricFullName];\n      if (metricObject) {\n        if (metricObject.type === 'gauge') {\n          metrics[metricShortName] = metricObject.metric.value;\n        } else if (metricObject.type === 'counter') {\n          metrics[metricShortName] = metricObject.metric.count;\n        } else if (metricObject.type === 'meter') {\n          metrics[metricShortName] = metricObject.metric.rate.total;\n        } else if (metricObject.type === 'timer') {\n          metrics[metricShortName] = metricObject.metric.rate.total;\n        } else {\n          metrics[metricShortName] = null;\n        }\n      }\n    });\n\n    return metrics;\n  }\n};\n\nexports.default = MetricsExtractor;\nmodule.exports = exports['default'];\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// 18.a060f9176ccc026762a6.js","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { Spinner } from 'components/common';\n\nimport NumberUtils from 'util/NumberUtils';\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst MetricsStore = StoreProvider.getStore('Metrics');\n\nimport ActionsProvider from 'injection/ActionsProvider';\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\nconst JvmHeapUsage = React.createClass({\n  propTypes: {\n    nodeId: PropTypes.string.isRequired,\n  },\n  mixins: [Reflux.connect(MetricsStore)],\n  componentWillMount() {\n    this.metricNames = {\n      usedMemory: 'jvm.memory.heap.used',\n      committedMemory: 'jvm.memory.heap.committed',\n      maxMemory: 'jvm.memory.heap.max',\n    };\n\n    Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.add(this.props.nodeId, this.metricNames[metricShortName]));\n  },\n  componentWillUnmount() {\n    Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.remove(this.props.nodeId, this.metricNames[metricShortName]));\n  },\n  _extractMetricValues() {\n    const nodeId = this.props.nodeId;\n    const nodeMetrics = this.state.metrics[nodeId];\n    const metrics = MetricsExtractor.getValuesForNode(nodeMetrics, this.metricNames);\n\n    metrics.usedPercentage = metrics.maxMemory === 0 ? 0 : (metrics.usedMemory / metrics.maxMemory) * 100;\n    metrics.committedPercentage = metrics.maxMemory === 0 ? 0 : (metrics.committedMemory / metrics.maxMemory) * 100;\n\n    return metrics;\n  },\n  render() {\n    let progressBar;\n    let detail;\n\n    if (this.state.metrics) {\n      const metrics = this._extractMetricValues();\n\n      if (Object.keys(metrics).length === 0) {\n        progressBar = 
;\n detail =

Heap information unavailable.

;\n } else {\n progressBar = (\n \n \n \n \n );\n\n detail = (\n

\n The JVM is using{' '}\n \n {NumberUtils.formatBytes(metrics.usedMemory)}\n {' '}of{' '}\n \n {NumberUtils.formatBytes(metrics.committedMemory)}\n {' '}heap space and will not attempt to use more than{' '}\n \n {NumberUtils.formatBytes(metrics.maxMemory)}\n

\n );\n }\n } else {\n progressBar = ;\n detail =

;\n }\n\n return (\n
\n {progressBar}\n\n {detail}\n
\n );\n },\n});\n\nexport default JvmHeapUsage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/JvmHeapUsage.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\n\nimport { Spinner } from 'components/common';\n\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst MetricsStore = StoreProvider.getStore('Metrics');\n\nimport ActionsProvider from 'injection/ActionsProvider';\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\n// TODO this is a copy of GlobalTroughput, it just renders differently and only targets a single node.\nconst NodeThroughput = React.createClass({\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n longFormat: PropTypes.bool,\n },\n mixins: [Reflux.connect(MetricsStore)],\n getDefaultProps() {\n return {\n longFormat: false,\n };\n },\n componentWillMount() {\n this.metricNames = {\n totalIn: 'org.graylog2.throughput.input.1-sec-rate',\n totalOut: 'org.graylog2.throughput.output.1-sec-rate',\n };\n\n Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.add(this.props.nodeId, this.metricNames[metricShortName]));\n },\n componentWillUnmount() {\n Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.remove(this.props.nodeId, this.metricNames[metricShortName]));\n },\n _isLoading() {\n return !this.state.metrics;\n },\n _formatThroughput(metrics) {\n if (this.props.longFormat) {\n return (\n \n Processing {numeral(metrics.totalIn).format('0,0')} incoming and \n {numeral(metrics.totalOut).format('0,0')} outgoing msg/s.\n \n );\n }\n return (\n \n In {numeral(metrics.totalIn).format('0,0')} / Out {numeral(metrics.totalOut).format('0,0')} msg/s.\n \n );\n },\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const nodeId = this.props.nodeId;\n const nodeMetrics = this.state.metrics[nodeId];\n const metrics = MetricsExtractor.getValuesForNode(nodeMetrics, this.metricNames);\n\n if (Object.keys(metrics).length === 0) {\n return (Unable to load throughput.);\n }\n\n return this._formatThroughput(metrics);\n },\n});\n\nexport default NodeThroughput;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/throughput/NodeThroughput.jsx","export { default as NodesList } from './NodesList';\nexport { default as NodeMaintenanceDropdown } from './NodeMaintenanceDropdown';\nexport { default as NodeOverview } from './NodeOverview';\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/index.js","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport { Row, Col } from 'react-bootstrap';\n\nimport NodeListItem from './NodeListItem';\nimport { Spinner, EntityList, Pluralize } from 'components/common';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst NodesStore = StoreProvider.getStore('Nodes');\nconst ClusterOverviewStore = StoreProvider.getStore('ClusterOverview');\n\nconst NodesList = React.createClass({\n propTypes: {\n permissions: PropTypes.array.isRequired,\n },\n mixins: [Reflux.connect(NodesStore), Reflux.connect(ClusterOverviewStore)],\n _isLoading() {\n return !(this.state.nodes && this.state.clusterOverview);\n },\n _formatNodes(nodes, clusterOverview) {\n const nodeIDs = Object.keys(nodes);\n\n return nodeIDs.map((nodeID) => {\n return ;\n });\n },\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const nodesNo = Object.keys(this.state.nodes).length;\n\n return (\n \n \n

\n There {nodesNo} active \n

\n \n \n
\n );\n },\n});\n\nexport default NodesList;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/NodesList.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Col } from 'react-bootstrap';\n\nimport { EntityListItem, LinkToNode } from 'components/common';\nimport NodesActions from './NodesActions';\nimport SystemOverviewSummary from './SystemOverviewSummary';\nimport JvmHeapUsage from './JvmHeapUsage';\nimport JournalState from './JournalState';\nimport NodeThroughput from 'components/throughput/NodeThroughput';\n\nconst NodeListItem = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n systemOverview: PropTypes.object,\n },\n render() {\n const node = this.props.node;\n const title = ;\n\n if (!this.props.systemOverview) {\n return (\n \n );\n }\n\n const nodeThroughput = ;\n const journalState = ;\n const actions = ;\n\n const additionalContent = (\n
\n \n \n \n \n \n \n
\n );\n\n return (\n \n );\n },\n});\n\nexport default NodeListItem;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/NodeListItem.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { Button, DropdownButton, MenuItem } from 'react-bootstrap';\nimport URI from 'urijs';\n\nimport { ExternalLinkButton, IfPermitted } from 'components/common';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst SystemProcessingStore = StoreProvider.getStore('SystemProcessing');\nconst SystemLoadBalancerStore = StoreProvider.getStore('SystemLoadBalancer');\nconst SystemShutdownStore = StoreProvider.getStore('SystemShutdown');\n\nimport Routes from 'routing/Routes';\n\nconst NodesActions = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n systemOverview: PropTypes.object.isRequired,\n },\n _toggleMessageProcessing() {\n if (confirm(`You are about to ${this.props.systemOverview.is_processing ? 'pause' : 'resume'} message processing in this node. Are you sure?`)) {\n if (this.props.systemOverview.is_processing) {\n SystemProcessingStore.pause(this.props.node.node_id);\n } else {\n SystemProcessingStore.resume(this.props.node.node_id);\n }\n }\n },\n _changeLBStatus(status) {\n return () => {\n if (confirm(`You are about to change the load balancer status for this node to ${status}. Are you sure?`)) {\n SystemLoadBalancerStore.override(this.props.node.node_id, status);\n }\n };\n },\n _shutdown() {\n if (prompt('Do you really want to shutdown this node? Confirm by typing \"SHUTDOWN\".') === 'SHUTDOWN') {\n SystemShutdownStore.shutdown(this.props.node.node_id);\n }\n },\n render() {\n const apiBrowserURI = new URI(`${this.props.node.transport_address}/api-browser`).normalizePathname().toString();\n return (\n
\n \n \n \n\n \n \n \n\n \n API browser\n \n\n \n \n \n {this.props.systemOverview.is_processing ? 'Pause' : 'Resume'} message processing\n \n \n\n \n
  • \n Override LB status\n
      \n ALIVE\n DEAD\n
    \n
  • \n
    \n\n \n Graceful shutdown\n \n\n \n \n \n \n \n\n \n \n Local message inputs\n \n \n \n \n Get thread dump\n \n \n
    \n
    \n );\n },\n});\n\nexport default NodesActions;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/NodesActions.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport StringUtils from 'util/StringUtils';\n\nconst SystemOverviewSummary = React.createClass({\n propTypes: {\n information: PropTypes.object.isRequired,\n },\n render() {\n const lbStatus = this.props.information.lb_status.toUpperCase();\n return (\n
    \n
    Current lifecycle state:
    \n
    {StringUtils.capitalizeFirstLetter(this.props.information.lifecycle)}
    \n
    Message processing:
    \n
    {this.props.information.is_processing ? 'Enabled' : 'Disabled'}
    \n
    Load balancer indication:
    \n
    {lbStatus}
    \n
    \n );\n },\n});\n\nexport default SystemOverviewSummary;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/SystemOverviewSummary.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\n\nimport { Pluralize, Spinner } from 'components/common';\n\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst MetricsStore = StoreProvider.getStore('Metrics');\n\nimport ActionsProvider from 'injection/ActionsProvider';\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\nconst JournalState = React.createClass({\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n },\n mixins: [Reflux.connect(MetricsStore)],\n componentWillMount() {\n this.metricNames = {\n append: 'org.graylog2.journal.append.1-sec-rate',\n read: 'org.graylog2.journal.read.1-sec-rate',\n segments: 'org.graylog2.journal.segments',\n entriesUncommitted: 'org.graylog2.journal.entries-uncommitted',\n };\n Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.add(this.props.nodeId, this.metricNames[metricShortName]));\n },\n componentWillUnmount() {\n Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.remove(this.props.nodeId, this.metricNames[metricShortName]));\n },\n _isLoading() {\n return !this.state.metrics;\n },\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const nodeId = this.props.nodeId;\n const nodeMetrics = this.state.metrics[nodeId];\n const metrics = MetricsExtractor.getValuesForNode(nodeMetrics, this.metricNames);\n\n if (Object.keys(metrics).length === 0) {\n return Journal metrics unavailable.;\n }\n\n return (\n \n The journal contains {numeral(metrics.entriesUncommitted).format('0,0')} unprocessed messages in {metrics.segments}\n {' '}.{' '}\n {numeral(metrics.append).format('0,0')} messages appended, \n {numeral(metrics.read).format('0,0')} messages read in the last second.\n \n );\n },\n});\n\nexport default JournalState;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/JournalState.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { ButtonGroup, DropdownButton, MenuItem } from 'react-bootstrap';\nimport URI from 'urijs';\n\nimport { ExternalLink, IfPermitted } from 'components/common';\n\nimport Routes from 'routing/Routes';\n\nconst NodeMaintenanceDropdown = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n },\n render() {\n const apiBrowserURI = new URI(`${this.props.node.transport_address}/api-browser`).normalizePathname().toString();\n return (\n \n \n \n \n Get thread dump\n \n \n\n \n Metrics\n \n\n \n \n Configure internal logging\n \n \n\n \n API Browser\n \n \n \n );\n },\n});\n\nexport default NodeMaintenanceDropdown;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/NodeMaintenanceDropdown.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { Row, Col, Button } from 'react-bootstrap';\n\nimport BufferUsage from './BufferUsage';\nimport SystemOverviewDetails from './SystemOverviewDetails';\nimport JvmHeapUsage from './JvmHeapUsage';\nimport JournalDetails from './JournalDetails';\nimport SystemInformation from './SystemInformation';\nimport RestApiOverview from './RestApiOverview';\nimport PluginsDataTable from './PluginsDataTable';\nimport InputTypesDataTable from './InputTypesDataTable';\n\nimport Routes from 'routing/Routes';\n\nconst NodeOverview = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n systemOverview: PropTypes.object.isRequired,\n jvmInformation: PropTypes.object,\n plugins: PropTypes.array,\n inputDescriptions: PropTypes.object,\n inputStates: PropTypes.array,\n },\n render() {\n const node = this.props.node;\n const systemOverview = this.props.systemOverview;\n\n let pluginCount;\n if (this.props.plugins) {\n pluginCount = `${this.props.plugins.length} plugins installed`;\n }\n\n let inputCount;\n if (this.props.inputStates) {\n const runningInputs = this.props.inputStates.filter(inputState => inputState.state.toUpperCase() === 'RUNNING');\n inputCount = `${runningInputs.length} inputs running on this node`;\n }\n\n return (\n
    \n \n \n \n \n \n\n \n \n

    Memory/Heap usage

    \n \n \n
    \n\n \n \n

    Buffers

    \n

    \n Buffers are built to cache small amounts of messages for a very short time\n (usually milliseconds) on their way through the different processors.\n

    \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n\n \n \n

    Disk Journal

    \n

    \n Incoming messages are written to the disk journal to ensure they are kept safe in case of a server\n failure. The journal also helps keeping Graylog working if any of the outputs is too slow to keep\n up with the message rate or whenever there is a peak in incoming messages. It makes sure that\n Graylog does not buffer all of those messages in main memory and avoids overly long garbage\n collection pauses that way.\n

    \n \n \n
    \n\n \n \n

    System

    \n \n \n \n

    REST API

    \n \n \n
    \n\n \n \n

    Installed plugins {pluginCount}

    \n \n \n
    \n\n \n \n \n \n \n \n \n

    Available input types {inputCount}

    \n \n \n
    \n
    \n );\n },\n});\n\nexport default NodeOverview;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/NodeOverview.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\nimport { Button, ProgressBar } from 'react-bootstrap';\nimport { LinkContainer } from 'react-router-bootstrap';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst MetricsStore = StoreProvider.getStore('Metrics');\n\nimport ActionsProvider from 'injection/ActionsProvider';\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\nimport Routes from 'routing/Routes';\nimport NumberUtils from 'util/NumberUtils';\nimport { Spinner } from 'components/common';\n\nconst BufferUsage = React.createClass({\n propTypes: {\n bufferType: PropTypes.string.isRequired,\n nodeId: PropTypes.string.isRequired,\n title: PropTypes.node.isRequired,\n },\n mixins: [Reflux.connect(MetricsStore)],\n componentWillMount() {\n const prefix = this._metricPrefix();\n const metricNames = [\n `${prefix}.usage`,\n `${prefix}.size`,\n ];\n metricNames.forEach(metricName => MetricsActions.add(this.props.nodeId, metricName));\n },\n _metricPrefix() {\n return `org.graylog2.buffers.${this.props.bufferType}`;\n },\n _metricFilter() {\n return `org\\\\.graylog2\\\\.buffers\\\\.${this.props.bufferType}\\\\.|${this.props.bufferType}buffer`;\n },\n render() {\n if (!this.state.metrics) {\n return ;\n }\n const nodeId = this.props.nodeId;\n const prefix = this._metricPrefix();\n const usageMetric = this.state.metrics[nodeId][`${prefix}.usage`];\n const usage = usageMetric ? usageMetric.metric.value : NaN;\n const sizeMetric = this.state.metrics[nodeId][`${prefix}.size`];\n const size = sizeMetric ? sizeMetric.metric.value : NaN;\n const usagePercentage = (!isNaN(usage) && !isNaN(size) ? usage / size : 0);\n const percentLabel = NumberUtils.formatPercentage(usagePercentage);\n\n return (\n
    \n \n \n \n

    {this.props.title}

    \n
    \n \n
    \n {usage} messages in {this.props.title.toLowerCase()}, {percentLabel} utilized.\n
    );\n },\n});\n\nexport default BufferUsage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/BufferUsage.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Row, Col, Alert, Button } from 'react-bootstrap';\n\nimport { IfPermitted } from 'components/common';\nimport { DocumentationLink } from 'components/support';\nimport NodeThroughput from 'components/throughput/NodeThroughput';\n\nimport DocsHelper from 'util/DocsHelper';\nimport StringUtils from 'util/StringUtils';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst SystemProcessingStore = StoreProvider.getStore('SystemProcessing');\n\nconst SystemOverviewDetails = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n information: PropTypes.object.isRequired,\n },\n _toggleMessageProcessing() {\n if (confirm(`You are about to ${this.props.information.is_processing ? 'pause' : 'resume'} message processing in this node. Are you sure?`)) {\n if (this.props.information.is_processing) {\n SystemProcessingStore.pause(this.props.node.node_id);\n } else {\n SystemProcessingStore.resume(this.props.node.node_id);\n }\n }\n },\n render() {\n const information = this.props.information;\n const lbStatus = information.lb_status.toUpperCase();\n let processingStatus;\n\n if (information.is_processing) {\n processingStatus = (\n \n   \n \n );\n } else {\n processingStatus = (\n \n   Node is not processing messages\n \n );\n }\n\n return (\n \n \n \n \n  \n Lifecycle state: {StringUtils.capitalizeFirstLetter(this.props.information.lifecycle)}\n \n \n \n \n \n  \n Marked as {lbStatus} for load balancers\n \n \n \n \n \n \n \n \n \n {processingStatus}\n \n \n \n );\n },\n});\n\nexport default SystemOverviewDetails;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/SystemOverviewDetails.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\nimport { LinkContainer } from 'react-router-bootstrap';\nimport { ProgressBar, Row, Col, Alert } from 'react-bootstrap';\nimport numeral from 'numeral';\nimport moment from 'moment';\nimport {} from 'moment-duration-format';\n\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\n\nimport ActionsProvider from 'injection/ActionsProvider';\nconst MetricsActions = ActionsProvider.getActions('Metrics');\n\nimport StoreProvider from 'injection/StoreProvider';\nconst MetricsStore = StoreProvider.getStore('Metrics');\nconst JournalStore = StoreProvider.getStore('Journal');\n\nimport { Spinner, Timestamp } from 'components/common';\n\nimport NumberUtils from 'util/NumberUtils';\nimport Routes from 'routing/Routes';\n\nconst JournalDetails = React.createClass({\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n },\n mixins: [Reflux.connect(MetricsStore)],\n\n getInitialState() {\n return {\n journalInformation: undefined,\n };\n },\n\n componentDidMount() {\n JournalStore.get(this.props.nodeId).then((journalInformation) => {\n this.setState({ journalInformation: journalInformation }, this._listenToMetrics);\n });\n },\n\n componentWillUnmount() {\n if (this.metricNames) {\n Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.remove(this.props.nodeId, this.metricNames[metricShortName]));\n }\n },\n\n _listenToMetrics() {\n // only listen for updates if the journal is actually turned on\n if (this.state.journalInformation.enabled) {\n this.metricNames = {\n append: 'org.graylog2.journal.append.1-sec-rate',\n read: 'org.graylog2.journal.read.1-sec-rate',\n segments: 'org.graylog2.journal.segments',\n entriesUncommitted: 'org.graylog2.journal.entries-uncommitted',\n utilizationRatio: 'org.graylog2.journal.utilization-ratio',\n oldestSegment: 'org.graylog2.journal.oldest-segment',\n };\n Object.keys(this.metricNames).forEach(metricShortName => MetricsActions.add(this.props.nodeId, this.metricNames[metricShortName]));\n }\n },\n\n _isLoading() {\n return !(this.state.metrics && this.state.journalInformation);\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const nodeId = this.props.nodeId;\n const nodeMetrics = this.state.metrics[nodeId];\n const journalInformation = this.state.journalInformation;\n\n if (!journalInformation.enabled) {\n return (\n \n   The disk journal is disabled on this node.\n \n );\n }\n\n const metrics = this.metricNames ? MetricsExtractor.getValuesForNode(nodeMetrics, this.metricNames) : {};\n\n if (Object.keys(metrics).length === 0) {\n return (\n \n   Journal metrics unavailable.\n \n );\n }\n\n const oldestSegment = moment(metrics.oldestSegment);\n let overcommittedWarning;\n if (metrics.utilizationRatio >= 1) {\n overcommittedWarning = (\n \n Warning! The journal utilization is exceeding the maximum size defined.\n {' '}Click here for more information.
    \n
    \n );\n }\n\n return (\n \n \n

    Configuration

    \n
    \n
    Path:
    \n
    {journalInformation.journal_config.directory}
    \n
    Earliest entry:
    \n
    \n
    Maximum size:
    \n
    {NumberUtils.formatBytes(journalInformation.journal_config.max_size)}
    \n
    Maximum age:
    \n
    {moment.duration(journalInformation.journal_config.max_age).format('d [days] h [hours] m [minutes]')}
    \n
    Flush policy:
    \n
    \n Every {numeral(journalInformation.journal_config.flush_interval).format('0,0')} messages\n {' '}or {moment.duration(journalInformation.journal_config.flush_age).format('h [hours] m [minutes] s [seconds]')}\n
    \n
    \n \n \n

    Utilization

    \n\n \n\n {overcommittedWarning}\n\n {numeral(metrics.entriesUncommitted).format('0,0')} unprocessed messages\n {' '}are currently in the journal, in {metrics.segments} segments.
    \n {numeral(metrics.append).format('0,0')} messages\n {' '}have been appended in the last second,{' '}\n {numeral(metrics.read).format('0,0')} messages have been read in the last second.\n \n
    \n );\n },\n});\n\nexport default JournalDetails;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/JournalDetails.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport moment from 'moment';\n\nimport { Timestamp } from 'components/common';\n\nimport DateTime from 'logic/datetimes/DateTime';\n\nconst SystemInformation = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n systemInformation: PropTypes.object.isRequired,\n jvmInformation: PropTypes.object,\n },\n getInitialState() {\n return { time: moment() };\n },\n componentDidMount() {\n this.interval = setInterval(() => this.setState(this.getInitialState()), 1000);\n },\n componentWillUnmount() {\n clearTimeout(this.interval);\n },\n render() {\n const systemInformation = this.props.systemInformation;\n let jvmInformation;\n if (this.props.jvmInformation) {\n jvmInformation = PID {this.props.jvmInformation.pid}, {this.props.jvmInformation.info};\n } else {\n jvmInformation = JMV information for this node is unavailable.;\n }\n\n return (\n
    \n
    Hostname:
    \n
    {systemInformation.hostname}
    \n
    Node ID:
    \n
    {this.props.node.node_id}
    \n
    Version:
    \n
    {systemInformation.version}, codename {systemInformation.codename}
    \n
    JVM:
    \n
    {jvmInformation}
    \n
    Time:
    \n
    \n
    \n );\n },\n});\n\nexport default SystemInformation;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/SystemInformation.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Timestamp } from 'components/common';\n\nconst RestApiOverview = React.createClass({\n propTypes: {\n node: PropTypes.object.isRequired,\n },\n render() {\n return (\n
    \n
    Transport address:
    \n
    {this.props.node.transport_address}
    \n
    Last seen:
    \n
    \n
    \n );\n },\n});\n\nexport default RestApiOverview;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/RestApiOverview.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { DataTable, ExternalLink, Spinner } from 'components/common';\n\nconst PluginsDataTable = React.createClass({\n propTypes: {\n plugins: PropTypes.array,\n },\n _headerCellFormatter(header) {\n return {header};\n },\n _pluginInfoFormatter(plugin) {\n return (\n \n {plugin.name}\n {plugin.version}\n {plugin.author}\n \n {plugin.description}\n   \n Website\n \n \n );\n },\n render() {\n if (!this.props.plugins) {\n return ;\n }\n\n if (this.props.plugins.length === 0) {\n return   This node has not any installed plugins.;\n }\n\n const headers = ['Name', 'Version', 'Author', 'Description'];\n\n return (\n \n );\n },\n});\n\nexport default PluginsDataTable;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/PluginsDataTable.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Alert } from 'react-bootstrap';\n\nimport { DataTable, ExternalLink, Spinner } from 'components/common';\n\nconst InputTypesDataTable = React.createClass({\n propTypes: {\n inputDescriptions: PropTypes.object,\n },\n _headerCellFormatter(header) {\n return {header};\n },\n _inputTypeFormatter(inputType) {\n return (\n \n {inputType.name}\n {inputType.type}\n \n {inputType.link_to_docs &&\n Documentation\n }\n \n \n );\n },\n render() {\n if (!this.props.inputDescriptions) {\n return ;\n }\n\n if (Object.keys(this.props.inputDescriptions).length === 0) {\n return (\n \n   Input types are unavailable.\n \n );\n }\n\n const headers = ['Name', 'Type', 'Documentation'];\n\n const rows = Object.keys(this.props.inputDescriptions).map(key => this.props.inputDescriptions[key]);\n\n return (\n \n );\n },\n});\n\nexport default InputTypesDataTable;\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/nodes/InputTypesDataTable.jsx","import PropTypes from 'prop-types';\nimport React from 'react';\nimport Reflux from 'reflux';\n\nimport StoreProvider from 'injection/StoreProvider';\nconst NodesStore = StoreProvider.getStore('Nodes');\nconst ClusterOverviewStore = StoreProvider.getStore('ClusterOverview');\nconst PluginsStore = StoreProvider.getStore('Plugins');\nconst InputStatesStore = StoreProvider.getStore('InputStates');\nconst InputTypesStore = StoreProvider.getStore('InputTypes');\n\nimport { NodeMaintenanceDropdown, NodeOverview } from 'components/nodes';\nimport { DocumentTitle, PageErrorOverview, PageHeader, Spinner } from 'components/common';\n\nfunction nodeFilter(state) {\n return state.nodes ? state.nodes[this.props.params.nodeId] : state.nodes;\n}\n\nfunction clusterOverviewFilter(state) {\n return state.clusterOverview ? state.clusterOverview[this.props.params.nodeId] : undefined;\n}\n\nconst ShowNodePage = React.createClass({\n propTypes: {\n params: PropTypes.object.isRequired,\n },\n mixins: [\n Reflux.connectFilter(NodesStore, 'node', nodeFilter),\n Reflux.connectFilter(ClusterOverviewStore, 'systemOverview', clusterOverviewFilter),\n Reflux.connect(InputTypesStore),\n ],\n getInitialState() {\n return {\n jvmInformation: undefined,\n plugins: undefined,\n };\n },\n componentWillMount() {\n Promise.all([\n ClusterOverviewStore.jvm(this.props.params.nodeId)\n .then(jvmInformation => this.setState({ jvmInformation: jvmInformation })),\n PluginsStore.list(this.props.params.nodeId).then(plugins => this.setState({ plugins: plugins })),\n InputStatesStore.list().then((inputStates) => {\n // We only want the input states for the current node\n const inputIds = Object.keys(inputStates);\n const filteredInputStates = [];\n inputIds.forEach((inputId) => {\n const inputObject = inputStates[inputId][this.props.params.nodeId];\n if (inputObject) {\n filteredInputStates.push(inputObject);\n }\n });\n\n this.setState({ inputStates: filteredInputStates });\n }),\n ]).then(() => {}, errors => this.setState({ errors: errors }));\n },\n _isLoading() {\n return !(this.state.node && this.state.systemOverview);\n },\n render() {\n if (this.state.errors) {\n return ;\n }\n if (this._isLoading()) {\n return ;\n }\n const node = this.state.node;\n const title = Node {node.short_node_id} / {node.hostname};\n\n return (\n \n
    \n \n \n This page shows details of a Graylog server node that is active and reachable in your cluster.\n \n \n {node.is_master ? This is the master node. : This is not the master node.}\n \n \n \n \n
    \n
    \n );\n },\n});\n\nexport default ShowNodePage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/ShowNodePage.jsx","const MetricsExtractor = {\n /*\n * Returns an object containing a short name and the metric value for it.\n * Short names are the keys of the metricNames object, which should look like:\n * { shortName: \"metricFullName\" }\n */\n getValuesForNode(nodeMetrics, metricNames) {\n if (nodeMetrics === null || nodeMetrics === undefined || Object.keys(nodeMetrics).length === 0) {\n return {};\n }\n\n const metrics = {};\n Object.keys(metricNames).forEach((metricShortName) => {\n const metricFullName = metricNames[metricShortName];\n const metricObject = nodeMetrics[metricFullName];\n if (metricObject) {\n if (metricObject.type === 'gauge') {\n metrics[metricShortName] = metricObject.metric.value;\n } else if (metricObject.type === 'counter') {\n metrics[metricShortName] = metricObject.metric.count;\n } else if (metricObject.type === 'meter') {\n metrics[metricShortName] = metricObject.metric.rate.total;\n } else if (metricObject.type === 'timer') {\n metrics[metricShortName] = metricObject.metric.rate.total;\n } else {\n metrics[metricShortName] = null;\n }\n }\n });\n\n return metrics;\n },\n};\n\nexport default MetricsExtractor;\n\n\n\n// WEBPACK FOOTER //\n// ./src/logic/metrics/MetricsExtractor.js"],"sourceRoot":""}