web-interface.assets.1255d548-7691.29f9482a4a76cf88fd19.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-7691.29f9482a4a76cf88fd19.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/throughput/NodeThroughput.jsx","webpack://graylog-web-interface/./src/components/nodes/NodesActions.jsx","webpack://graylog-web-interface/./src/components/nodes/SystemOverviewSummary.jsx","webpack://graylog-web-interface/./src/components/nodes/JvmHeapUsage.jsx","webpack://graylog-web-interface/./src/components/nodes/JournalState.jsx","webpack://graylog-web-interface/./src/components/nodes/NodeListItem.jsx","webpack://graylog-web-interface/./src/components/nodes/NodesList.jsx","webpack://graylog-web-interface/./src/components/nodes/NodeMaintenanceDropdown.jsx","webpack://graylog-web-interface/./src/components/nodes/BufferUsage.tsx","webpack://graylog-web-interface/./src/components/nodes/SystemOverviewDetails.jsx","webpack://graylog-web-interface/./src/stores/journal/JournalStore.js","webpack://graylog-web-interface/./src/components/nodes/JournalDetails.jsx","webpack://graylog-web-interface/./src/components/nodes/SystemInformation.jsx","webpack://graylog-web-interface/./src/components/nodes/RestApiOverview.jsx","webpack://graylog-web-interface/./src/components/nodes/PluginsDataTable.jsx","webpack://graylog-web-interface/./src/components/nodes/InputTypesDataTable.jsx","webpack://graylog-web-interface/./src/components/nodes/NodeOverview.jsx","webpack://graylog-web-interface/./src/logic/metrics/MetricsExtractor.ts","webpack://graylog-web-interface/./src/stores/cluster/ClusterOverviewStore.js","webpack://graylog-web-interface/./src/stores/load-balancer/SystemLoadBalancerStore.js","webpack://graylog-web-interface/./src/stores/system-processing/SystemProcessingStore.js"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\n\nimport { Spinner } from 'components/common';\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\n// TODO this is a copy of GlobalTroughput, it just renders differently and only targets a single node.\nconst NodeThroughput = createReactClass({\n displayName: 'NodeThroughput',\n\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n longFormat: PropTypes.bool,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n getDefaultProps() {\n return {\n longFormat: false,\n };\n },\n\n UNSAFE_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\n componentWillUnmount() {\n Object.keys(this.metricNames).forEach((metricShortName) => MetricsActions.remove(this.props.nodeId, this.metricNames[metricShortName]));\n },\n\n _isLoading() {\n return !this.state.metrics;\n },\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')}\n outgoing msg/s.\n \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\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { nodeId } = this.props;\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport URI from 'urijs';\n\nimport ButtonToolbar from 'components/bootstrap/ButtonToolbar';\nimport { LinkContainer } from 'components/common/router';\nimport { DropdownSubmenu, ExternalLinkButton, IfPermitted } from 'components/common';\nimport { Button, DropdownButton, MenuItem } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\nimport { SystemLoadBalancerStore } from 'stores/load-balancer/SystemLoadBalancerStore';\nimport { SystemProcessingStore } from 'stores/system-processing/SystemProcessingStore';\n\nclass NodesActions extends React.Component {\n static propTypes = {\n node: PropTypes.object.isRequired,\n systemOverview: PropTypes.object.isRequired,\n };\n\n _toggleMessageProcessing = () => {\n const { systemOverview, node } = this.props;\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`You are about to ${systemOverview.is_processing ? 'pause' : 'resume'} message processing in this node. Are you sure?`)) {\n if (systemOverview.is_processing) {\n SystemProcessingStore.pause(node.node_id);\n } else {\n SystemProcessingStore.resume(node.node_id);\n }\n }\n };\n\n _changeLBStatus = (status) => () => {\n // eslint-disable-next-line no-alert\n if (window.confirm(`You are about to change the load balancer status for this node to ${status}. Are you sure?`)) {\n const { node } = this.props;\n SystemLoadBalancerStore.override(node.node_id, status);\n }\n };\n\n render() {\n const { systemOverview, node } = this.props;\n const apiBrowserURI = new URI(`${node.transport_address}/api-browser/`).normalizePathname().toString();\n\n return (\n \n \n \n \n\n \n \n \n\n \n API browser\n \n\n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nexport default NodesActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport StringUtils from 'util/StringUtils';\n\nconst NodeState = styled.dl`\n margin-top: 0;\n margin-bottom: 0;\n\n dt {\n float: left;\n }\n\n dd {\n margin-left: 180px;\n }\n`;\n\nexport const SystemOverviewSummary = ({ information }) => {\n const lbStatus = information.lb_status.toUpperCase();\n\n return (\n \n Current lifecycle state: \n {StringUtils.capitalizeFirstLetter(information.lifecycle)} \n Message processing: \n {information.is_processing ? 'Enabled' : 'Disabled'} \n Load balancer indication: \n {lbStatus} \n \n );\n};\n\nSystemOverviewSummary.propTypes = {\n information: PropTypes.object.isRequired,\n};\n\nexport default SystemOverviewSummary;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport styled, { css } from 'styled-components';\n\nimport ProgressBar from 'components/common/ProgressBar';\nimport { Spinner } from 'components/common';\nimport NumberUtils from 'util/NumberUtils';\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst NodeHeap = styled.div`\n margin-top: 10px;\n\n p {\n margin-bottom: 0;\n }\n`;\n\nconst Blob = styled.span(({ theme }) => css`\n display: inline-block;\n width: 9px;\n height: 9px;\n margin-left: 2px;\n border: 1px solid;\n\n &.used-memory {\n background-color: ${theme.colors.variant.primary};\n border-color: ${theme.colors.variant.dark.primary};\n }\n\n &.committed-memory {\n background-color: ${theme.colors.variant.warning};\n border-color: ${theme.colors.variant.dark.warning};\n }\n\n &.max-memory {\n background-color: ${theme.colors.global.background};\n border-color: ${theme.colors.gray[80]};\n }\n`);\n\nconst StyledProgressBar = styled(ProgressBar)`\n height: 25px;\n margin-bottom: 5px;\n`;\n\nconst JvmHeapUsage = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n displayName: 'JvmHeapUsage',\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n UNSAFE_componentWillMount() {\n const { nodeId } = this.props;\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((metricShortName) => MetricsActions.add(nodeId, this.metricNames[metricShortName]));\n },\n\n componentWillUnmount() {\n const { nodeId } = this.props;\n\n Object.keys(this.metricNames).forEach((metricShortName) => MetricsActions.remove(nodeId, this.metricNames[metricShortName]));\n },\n\n _extractMetricValues() {\n const { nodeId } = this.props;\n const { metrics } = this.state;\n\n if (metrics && metrics[nodeId]) {\n const extractedMetric = MetricsExtractor.getValuesForNode(metrics[nodeId], this.metricNames);\n const { maxMemory, usedMemory, committedMemory } = extractedMetric;\n\n if (maxMemory) {\n extractedMetric.usedPercentage = maxMemory === 0 ? 0 : Math.ceil((usedMemory / maxMemory) * 100);\n extractedMetric.committedPercentage = maxMemory === 0 ? 0 : Math.ceil((committedMemory / maxMemory) * 100);\n\n return extractedMetric;\n }\n\n return {\n usedPercentage: 0,\n committedPercentage: 0,\n };\n }\n\n return {};\n },\n\n render() {\n const { nodeId } = this.props;\n const extractedMetrics = this._extractMetricValues();\n const { usedPercentage, committedPercentage, usedMemory, committedMemory, maxMemory } = extractedMetrics;\n let progressBarConfig = [{ value: 0 }];\n let detail =
;\n\n if (usedPercentage || committedPercentage) {\n if (Object.keys(extractedMetrics).length === 0) {\n detail = Heap information unavailable.
;\n } else {\n progressBarConfig = [\n { value: usedPercentage, bsStyle: 'primary' },\n { value: committedPercentage - usedPercentage, bsStyle: 'warning' },\n ];\n\n detail = (\n \n The JVM is using{' '}\n \n {NumberUtils.formatBytes(usedMemory)}\n {' '}of{' '}\n \n {NumberUtils.formatBytes(committedMemory)}\n {' '}heap space and will not attempt to use more than{' '}\n \n {NumberUtils.formatBytes(maxMemory)}\n
\n );\n }\n }\n\n return (\n \n \n\n {detail}\n \n );\n },\n});\n\nexport default JvmHeapUsage;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\n\nimport { Pluralize, Spinner } from 'components/common';\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst JournalState = createReactClass({\n displayName: 'JournalState',\n\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n UNSAFE_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\n Object.keys(this.metricNames).forEach((metricShortName) => MetricsActions.add(this.props.nodeId, this.metricNames[metricShortName]));\n },\n\n componentWillUnmount() {\n Object.keys(this.metricNames).forEach((metricShortName) => MetricsActions.remove(this.props.nodeId, this.metricNames[metricShortName]));\n },\n\n _isLoading() {\n return !this.state.metrics;\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { nodeId } = this.props;\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\n read in the last second.\n \n );\n },\n});\n\nexport default JournalState;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Col } from 'components/bootstrap';\nimport { EntityListItem, LinkToNode } from 'components/common';\nimport NodeThroughput from 'components/throughput/NodeThroughput';\n\nimport NodesActions from './NodesActions';\nimport SystemOverviewSummary from './SystemOverviewSummary';\nimport JvmHeapUsage from './JvmHeapUsage';\nimport JournalState from './JournalState';\n\nclass NodeListItem extends React.Component {\n static propTypes = {\n node: PropTypes.object.isRequired,\n systemOverview: PropTypes.object,\n };\n\n render() {\n const { node } = this.props;\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Row, Col } from 'components/bootstrap';\nimport { Spinner, EntityList, Pluralize } from 'components/common';\nimport { ClusterOverviewStore } from 'stores/cluster/ClusterOverviewStore';\n\nimport NodeListItem from './NodeListItem';\n\nconst NodesList = createReactClass({\n displayName: 'NodesList',\n\n propTypes: {\n permissions: PropTypes.array.isRequired,\n nodes: PropTypes.object,\n },\n\n mixins: [Reflux.connect(ClusterOverviewStore)],\n\n _isLoading() {\n const { nodes } = this.props;\n const { clusterOverview } = this.state;\n\n return !(nodes && clusterOverview);\n },\n\n _formatNodes(nodes, clusterOverview) {\n const nodeIDs = Object.keys(nodes);\n\n return nodeIDs.map((nodeID) => );\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const nodesNo = Object.keys(this.props.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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport URI from 'urijs';\n\nimport { LinkContainer } from 'components/common/router';\nimport { ButtonGroup, DropdownButton, MenuItem } from 'components/bootstrap';\nimport { ExternalLink, IfPermitted } from 'components/common';\nimport Routes from 'routing/Routes';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\n\nclass NodeMaintenanceDropdown extends React.Component {\n static propTypes = {\n node: PropTypes.object.isRequired,\n };\n\n render() {\n const { node } = this.props;\n const apiBrowserURI = new URI(`${node.transport_address}/api-browser/`).normalizePathname().toString();\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n );\n }\n}\n\nexport default NodeMaintenanceDropdown;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Routes from 'routing/Routes';\nimport NumberUtils from 'util/NumberUtils';\nimport { useStore } from 'stores/connect';\nimport type { GaugeMetric } from 'stores/metrics/MetricsStore';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nimport { Button } from '../bootstrap';\nimport { ProgressBar, Spinner } from '../common';\nimport { LinkContainer } from '../common/router';\n\nconst NodeBufferUsage = styled.div(({ theme }) => css`\n margin-top: ${theme.spacings.sm};\n margin-bottom: ${theme.spacings.xs};\n`);\n\nconst StyledProgressBar = styled(ProgressBar)(({ theme }) => css`\n margin-bottom: ${theme.spacings.xs};\n`);\n\nconst _metricPrefix = (bufferType) => `org.graylog2.buffers.${bufferType}`;\n\nconst _metricFilter = (bufferType) => `org\\\\.graylog2\\\\.buffers\\\\.${bufferType}\\\\.|${bufferType}buffer`;\n\ntype Props = {\n nodeId: string,\n bufferType: string,\n title: string,\n};\n\nconst BufferUsage = ({ nodeId, bufferType, title }: Props) => {\n useEffect(() => {\n const prefix = _metricPrefix(bufferType);\n const metricNames = [\n `${prefix}.usage`,\n `${prefix}.size`,\n ];\n\n metricNames.forEach((metricName) => MetricsActions.add(nodeId, metricName));\n\n return () => metricNames.forEach((metricName) => MetricsActions.remove(nodeId, metricName));\n }, [nodeId, bufferType]);\n\n const { metrics } = useStore(MetricsStore);\n\n // metrics for this node could be undefined\n if (!metrics?.[nodeId]) {\n return ;\n }\n\n const prefix = _metricPrefix(bufferType);\n\n const usageMetric = metrics[nodeId][`${prefix}.usage`] as GaugeMetric;\n const usage = usageMetric ? usageMetric.metric.value : NaN;\n const sizeMetric = metrics[nodeId][`${prefix}.size`] as GaugeMetric;\n const size = sizeMetric ? sizeMetric.metric.value : NaN;\n // eslint-disable-next-line no-restricted-globals\n const usagePercentage = ((!isNaN(usage) && !isNaN(size)) ? usage / size : 0);\n const percentLabel = NumberUtils.formatPercentage(usagePercentage);\n\n return (\n \n \n \n \n {title}
\n \n \n \n {usage} messages in {title.toLowerCase()}, {percentLabel} utilized.\n \n );\n};\n\nBufferUsage.propTypes = {\n bufferType: PropTypes.string.isRequired,\n nodeId: PropTypes.string.isRequired,\n title: PropTypes.node.isRequired,\n};\n\nexport default BufferUsage;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Row, Col, Alert, Button } from 'components/bootstrap';\nimport { IfPermitted, Icon } from 'components/common';\nimport { DocumentationLink } from 'components/support';\nimport NodeThroughput from 'components/throughput/NodeThroughput';\nimport DocsHelper from 'util/DocsHelper';\nimport StringUtils from 'util/StringUtils';\nimport { SystemProcessingStore } from 'stores/system-processing/SystemProcessingStore';\n\nclass SystemOverviewDetails extends React.Component {\n static propTypes = {\n node: PropTypes.object.isRequired,\n information: PropTypes.object.isRequired,\n };\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\n render() {\n const { information } = this.props;\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 Lifecycle state: {StringUtils.capitalizeFirstLetter(this.props.information.lifecycle)}\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const JournalStore = singletonStore(\n 'core.Journal',\n () => Reflux.createStore({\n sourceUrl: (nodeId) => `/cluster/${nodeId}/journal`,\n\n get(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(this.sourceUrl(nodeId)));\n\n promise.catch((error) => {\n UserNotification.error(`Getting journal information on node ${nodeId} failed: ${error}`, 'Could not get journal information');\n });\n\n return promise;\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\nimport moment from 'moment';\nimport 'moment-duration-format';\nimport styled from 'styled-components';\n\nimport { Link } from 'components/common/router';\nimport { Row, Col, Alert } from 'components/bootstrap';\nimport { Spinner, RelativeTime } from 'components/common';\nimport ProgressBar, { Bar } from 'components/common/ProgressBar';\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\nimport NumberUtils from 'util/NumberUtils';\nimport Routes from 'routing/Routes';\nimport { JournalStore } from 'stores/journal/JournalStore';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst JournalUsageProgressBar = styled(ProgressBar)`\n margin-bottom: 5px;\n margin-top: 10px;\n\n ${Bar} {\n min-width: 3em;\n }\n`;\n\nconst JournalDetails = createReactClass({\n displayName: 'JournalDetails',\n\n propTypes: {\n nodeId: PropTypes.string.isRequired,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n getInitialState() {\n return {\n journalInformation: undefined,\n };\n },\n\n componentDidMount() {\n const { nodeId } = this.props;\n\n JournalStore.get(nodeId).then((journalInformation) => {\n this.setState({ journalInformation: journalInformation }, this._listenToMetrics);\n });\n },\n\n componentWillUnmount() {\n const { nodeId } = this.props;\n\n if (this.metricNames) {\n Object.keys(this.metricNames).forEach((metricShortName) => MetricsActions.remove(nodeId, this.metricNames[metricShortName]));\n }\n },\n\n _listenToMetrics() {\n const { nodeId } = this.props;\n const { journalInformation } = this.state;\n\n // only listen for updates if the journal is actually turned on\n if (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\n Object.keys(this.metricNames).forEach((metricShortName) => MetricsActions.add(nodeId, this.metricNames[metricShortName]));\n }\n },\n\n _isLoading() {\n const { journalInformation, metrics } = this.state;\n\n return !(metrics && journalInformation);\n },\n\n render() {\n if (this._isLoading()) {\n return ;\n }\n\n const { nodeId } = this.props;\n const { metrics: metricsState } = this.state;\n const nodeMetrics = metricsState[nodeId];\n const { journalInformation } = this.state;\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\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport moment from 'moment';\nimport styled from 'styled-components';\n\nimport { Timestamp } from 'components/common';\n\nconst _getInitialState = () => ({ time: moment() });\n\nconst StyledDl = styled.dl`\n margin-top: 5px;\n margin-bottom: 0;\n\n dt {\n float: left;\n }\n\n dd {\n margin-left: 95px;\n }\n`;\n\nclass SystemInformation extends React.Component {\n static propTypes = {\n node: PropTypes.object.isRequired,\n systemInformation: PropTypes.object.isRequired,\n jvmInformation: PropTypes.object,\n };\n\n static defaultProps = {\n jvmInformation: undefined,\n };\n\n constructor(props) {\n super(props);\n this.state = _getInitialState();\n }\n\n componentDidMount() {\n this.interval = setInterval(() => this.setState(_getInitialState()), 1000);\n }\n\n componentWillUnmount() {\n clearTimeout(this.interval);\n }\n\n render() {\n const { systemInformation: { hostname, version, codename, timezone }, jvmInformation, node } = this.props;\n const { time } = this.state;\n let jvmInformationText;\n\n if (jvmInformation) {\n jvmInformationText = PID {jvmInformation.pid}, {jvmInformation.info};\n } else {\n jvmInformationText = JMV information for this node is unavailable.;\n }\n\n return (\n \n Hostname: \n {hostname} \n Node ID: \n {node.node_id} \n Version: \n {version}, codename {codename} \n JVM: \n {jvmInformationText} \n Time: \n \n \n );\n }\n}\n\nexport default SystemInformation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\n\nimport RelativeTime from 'components/common/RelativeTime';\n\nconst StyledDl = styled.dl`\n margin-top: 5px;\n margin-bottom: 0;\n\n dt {\n float: left;\n }\n\n dd {\n margin-left: 150px;\n }\n`;\n\nconst RestApiOverview = ({ node }) => {\n const { transport_address, last_seen } = node;\n\n return (\n \n Transport address: \n {transport_address} \n Last seen: \n \n \n );\n};\n\nRestApiOverview.propTypes = {\n node: PropTypes.object.isRequired,\n};\n\nexport default RestApiOverview;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { DataTable, ExternalLink, Spinner } from 'components/common';\nimport { Alert } from 'components/bootstrap';\n\nclass PluginsDataTable extends React.Component {\n static propTypes = {\n plugins: PropTypes.array,\n };\n\n _headerCellFormatter = (header) => {header} ;\n\n _pluginInfoFormatter = (plugin) => (\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Alert } from 'components/bootstrap';\nimport { DataTable, ExternalLink, Spinner } from 'components/common';\n\nclass InputTypesDataTable extends React.Component {\n static propTypes = {\n inputDescriptions: PropTypes.object,\n };\n\n _headerCellFormatter = (header) => {header} ;\n\n _inputTypeFormatter = (inputType) => (\n \n {inputType.name} \n {inputType.type} \n \n {inputType.link_to_docs\n && Documentation }\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Row, Col, Button } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\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\nclass NodeOverview extends React.Component {\n static 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\n render() {\n const { node } = this.props;\n const { systemOverview } = this.props;\n\n let pluginCount;\n\n if (this.props.plugins) {\n pluginCount = `${this.props.plugins.length} plugins installed`;\n }\n\n let inputCount;\n\n if (this.props.inputStates) {\n const runningInputs = this.props.inputStates.filter((inputState) => inputState.state.toUpperCase() === 'RUNNING');\n\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 \n \n Available input types {inputCount}
\n \n \n
\n \n );\n }\n}\n\nexport default NodeOverview;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type { NodeMetric } from 'stores/metrics/MetricsStore';\n\nconst 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: NodeMetric, metricNames: { [key: string]: string }): { [key: string]: number | undefined | null } {\n if (nodeMetrics === null || nodeMetrics === undefined || Object.keys(nodeMetrics).length === 0) {\n return {};\n }\n\n const metrics = {};\n\n Object.keys(metricNames).forEach((metricShortName) => {\n const metricFullName = metricNames[metricShortName];\n const metricObject = nodeMetrics[metricFullName];\n\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 * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch, { fetchPeriodically, fetchStreamingPlainText } from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\nimport { NodesStore } from 'stores/nodes/NodesStore';\nimport { SystemLoadBalancerStore } from 'stores/load-balancer/SystemLoadBalancerStore';\nimport { SystemProcessingStore } from 'stores/system-processing/SystemProcessingStore';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const ClusterOverviewStore = singletonStore(\n 'core.ClusterOverview',\n () => Reflux.createStore({\n sourceUrl: '/cluster',\n clusterOverview: undefined,\n\n init() {\n this.cluster();\n this.listenTo(SystemProcessingStore, this.cluster);\n this.listenTo(SystemLoadBalancerStore, this.cluster);\n this.listenTo(NodesStore, this.cluster);\n },\n\n getInitialState() {\n return { clusterOverview: this.clusterOverview };\n },\n\n cluster() {\n const promise = fetchPeriodically('GET', URLUtils.qualifyUrl(this.sourceUrl));\n\n promise.then(\n (response) => {\n this.clusterOverview = response;\n this.trigger({ clusterOverview: this.clusterOverview });\n },\n (error) => UserNotification.error(`Getting cluster overview failed: ${error}`, 'Could not get cluster overview'),\n );\n\n return promise;\n },\n\n threadDump(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/threaddump`))\n .then(\n (response) => response.threaddump,\n (error) => UserNotification.error(`Getting thread dump for node '${nodeId}' failed: ${error}`, 'Could not get thread dump'),\n );\n\n return promise;\n },\n\n processbufferDump(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/processbufferdump`))\n .then(\n (response) => response.processbuffer_dump,\n (error) => UserNotification.error(`Getting process buffer dump for node '${nodeId}' failed: ${error}`, 'Could not get process buffer dump'),\n );\n\n return promise;\n },\n\n systemLogs(nodeId, limit) {\n const promise = fetchStreamingPlainText('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/system/loggers/messages/recent/${nodeId}?limit=${limit}`))\n .then(\n (response) => response,\n (error) => UserNotification.error(`Getting system log messages for node '${nodeId}' failed: ${error}`, 'Could not get system log messages'),\n );\n\n return promise;\n },\n\n jvm(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${nodeId}/jvm`));\n\n promise.catch((error) => UserNotification.error(`Getting JVM information for node '${nodeId}' failed: ${error}`, 'Could not get JVM information'));\n\n return promise;\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const SystemLoadBalancerStore = singletonStore(\n 'core.SystemLoadBalancer',\n () => Reflux.createStore({\n sourceUrl: (nodeId) => `/cluster/${nodeId}/lbstatus`,\n\n override(nodeId, status) {\n return fetch('PUT', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/override/${status}`))\n .then(\n () => {\n this.trigger({});\n UserNotification.success(`Load balancer status successfully changed do '${status}' in node '${nodeId}'`);\n },\n (error) => {\n UserNotification.error(`Changing load balancer status in '${nodeId}' failed: ${error}`,\n `Could not change load balancer status to '${status}' in node '${nodeId}'`);\n },\n );\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nimport { singletonStore } from '../../logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const SystemProcessingStore = singletonStore(\n 'core.SystemProcessing',\n () => Reflux.createStore({\n sourceUrl: (nodeId) => `/cluster/${nodeId}/processing`,\n\n pause(nodeId) {\n return fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/pause`))\n .then(\n () => {\n this.trigger({});\n UserNotification.success(`Message processing paused successfully in '${nodeId}'`);\n },\n (error) => {\n UserNotification.error(`Pausing message processing in '${nodeId}' failed: ${error}`,\n `Could not pause message processing in node '${nodeId}'`);\n },\n );\n },\n\n resume(nodeId) {\n return fetch('POST', URLUtils.qualifyUrl(`${this.sourceUrl(nodeId)}/resume`))\n .then(\n () => {\n this.trigger({});\n UserNotification.success(`Message processing resumed successfully in '${nodeId}'`);\n },\n (error) => {\n UserNotification.error(`Resuming message processing in '${nodeId}' failed: ${error}`,\n `Could not resume message processing in node '${nodeId}'`);\n },\n );\n },\n }),\n);\n"],"names":["MetricsStore","metricShortName","metrics","nodeId","nodeMetrics","MetricsExtractor","NodesActions","systemOverview","node","SystemProcessingStore","status","SystemLoadBalancerStore","apiBrowserURI","ButtonToolbar","Routes","HideOnCloud","NodeState","SystemOverviewSummary","information","lbStatus","StringUtils","NodeHeap","Blob","theme","StyledProgressBar","ProgressBar","extractedMetric","maxMemory","usedMemory","committedMemory","extractedMetrics","usedPercentage","committedPercentage","progressBarConfig","detail","NumberUtils","NodeListItem","title","nodeThroughput","journalState","actions","additionalContent","ClusterOverviewStore","nodes","clusterOverview","nodeID","nodesNo","NodeMaintenanceDropdown","NodeBufferUsage","_metricPrefix","bufferType","_metricFilter","BufferUsage","prefix","metricNames","metricName","usageMetric","usage","sizeMetric","size","usagePercentage","percentLabel","SystemOverviewDetails","processingStatus","DocsHelper","JournalStore","singleton","promise","URLUtils","error","UserNotification","JournalUsageProgressBar","journalInformation","metricsState","oldestSegment","overcommittedWarning","_getInitialState","StyledDl","SystemInformation","props","hostname","version","codename","timezone","jvmInformation","time","jvmInformationText","RestApiOverview","transport_address","last_seen","RelativeTime","PluginsDataTable","header","plugin","headers","InputTypesDataTable","inputType","rows","key","NodeOverview","pluginCount","inputCount","inputState","metricFullName","metricObject","response","limit"],"sourceRoot":""}