web-interface.assets.1255d548-5967.db64ad8f30f8fbf32c94.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-5967.db64ad8f30f8fbf32c94.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/metrics/CounterRate.jsx","webpack://graylog-web-interface/./src/components/metrics/Metric.tsx","webpack://graylog-web-interface/./src/components/metrics/MetricContainer.tsx","webpack://graylog-web-interface/./src/components/metrics/CounterDetails.tsx","webpack://graylog-web-interface/./src/components/metrics/GaugeDetails.tsx","webpack://graylog-web-interface/./src/components/metrics/HistogramDetails.tsx","webpack://graylog-web-interface/./src/components/metrics/MeterDetails.tsx","webpack://graylog-web-interface/./src/components/metrics/TimerDetails.tsx","webpack://graylog-web-interface/./src/components/metrics/MetricDetails.tsx","webpack://graylog-web-interface/./src/components/metrics/MetricsComponent.tsx","webpack://graylog-web-interface/./src/components/metrics/MetricsList.tsx","webpack://graylog-web-interface/./src/components/metrics/MetricsMapper.jsx","webpack://graylog-web-interface/./src/logic/metrics/MetricsExtractor.ts"],"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 numeral from 'numeral';\n\nimport TimeHelper from 'util/TimeHelper';\n\nclass CounterRate extends React.Component {\n static propTypes = {\n metric: PropTypes.object,\n showTotal: PropTypes.bool,\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n hideOnZero: PropTypes.bool,\n hideOnMissing: PropTypes.bool,\n };\n\n static defaultProps = {\n showTotal: false,\n prefix: null,\n suffix: 'per second',\n hideOnZero: false,\n hideOnMissing: false,\n };\n\n state = {\n prevMetric: null,\n prevTs: null,\n nowTs: TimeHelper.nowInSeconds(),\n };\n\n UNSAFE_componentWillReceiveProps() {\n this.setState({\n prevMetric: this.props.metric,\n prevTs: this.state.nowTs,\n nowTs: TimeHelper.nowInSeconds(),\n });\n }\n\n _checkPrevMetric = () => this.state.prevMetric && this.state.prevMetric.count !== undefined && this.state.prevTs;\n\n _placeholder = () => {\n if (this.props.hideOnZero) {\n return null;\n }\n\n return ({this._prefix()}Calculating...);\n };\n\n _prefix = () => {\n if (this.props.prefix) {\n return `${this.props.prefix} `;\n }\n\n return null;\n };\n\n _suffix = () => {\n if (this.props.suffix) {\n return ` ${this.props.suffix}`;\n }\n\n return null;\n };\n\n render() {\n if (!(this.props.metric && this.props.metric.count !== undefined)) {\n if (this.props.hideOnMissing) {\n return null;\n }\n\n if (!this._checkPrevMetric()) {\n return this._placeholder();\n }\n }\n\n const { count } = this.props.metric;\n\n let rate = null;\n\n if (this._checkPrevMetric()) {\n const rateNum = (count - this.state.prevMetric.count) / (this.state.nowTs - this.state.prevTs);\n\n rate = ({this._prefix()}{numeral(rateNum).format('0,0')}{this._suffix()});\n } else {\n return this._placeholder();\n }\n\n if (this.props.hideOnMissing && !rate) {\n return null;\n }\n\n return (\n \n {rate}\n {this.props.showTotal && ({numeral(count).format('0')} total)}\n \n );\n }\n}\n\nexport default CounterRate;\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, { useCallback, useState } from 'react';\n\nimport { MetricDetails } from 'components/metrics';\nimport { Icon } from 'components/common';\nimport type { Metric as MetricType } from 'stores/metrics/MetricsStore';\n\nconst iconMapping = {\n timer: 'clock',\n histogram: 'signal',\n meter: 'play-circle',\n gauge: 'tachometer-alt',\n counter: 'circle',\n unknown: 'question-circle',\n};\n\nconst _formatIcon = (type: string) => iconMapping[type] ?? iconMapping.unknown;\n\nconst _formatName = (metricName: string, namespace: string) => {\n const split = metricName.split(namespace);\n const unqualifiedMetricName = split.slice(1).join(namespace);\n\n return (\n \n {namespace}\n {unqualifiedMetricName}\n \n );\n};\n\ntype Props = {\n metric: MetricType,\n namespace: string,\n nodeId: string,\n}\n\nconst Metric = ({ metric, namespace, nodeId }: Props) => {\n const [expanded, setExpanded] = useState(false);\n const _showDetails = useCallback((e) => {\n e.preventDefault();\n setExpanded((_expanded) => !_expanded);\n }, []);\n\n const details = expanded ? : null;\n\n return (\n \n \n {' '}\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n {_formatName(metric.full_name, namespace)}\n \n {details}\n \n );\n};\n\nMetric.propTypes = {\n metric: PropTypes.object.isRequired,\n namespace: PropTypes.string.isRequired,\n nodeId: PropTypes.string.isRequired,\n};\n\nexport default Metric;\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';\n\nimport TimeHelper from 'util/TimeHelper';\nimport connect from 'stores/connect';\nimport MetricsExtractor from 'logic/metrics/MetricsExtractor';\nimport type { ClusterMetric } from 'stores/metrics/MetricsStore';\nimport type { Store } from 'stores/StoreTypes';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\ntype Props = {\n metrics: ClusterMetric,\n metricsUpdatedAt: number,\n name: string,\n zeroOnMissing: boolean,\n children: React.ReactElement[] | React.ReactElement,\n};\n\nclass MetricContainer extends React.Component {\n static propTypes = {\n metricsUpdatedAt: PropTypes.number,\n name: PropTypes.string.isRequired,\n zeroOnMissing: PropTypes.bool,\n };\n\n static defaultProps = {\n metricsUpdatedAt: TimeHelper.nowInSeconds(),\n zeroOnMissing: true,\n };\n\n componentDidMount() {\n const { name } = this.props;\n\n MetricsActions.addGlobal(name);\n }\n\n shouldComponentUpdate(nextProps) {\n // Do not render this component and it's children when no metric data has changed.\n // This component and the CounterRate component expect to be rendered every second or less often. When using\n // these components on a page that triggers a re-render more often - e.g. by having another setInterval - the\n // calculation in CounterRate will break.\n const { metricsUpdatedAt } = this.props;\n\n if (metricsUpdatedAt !== null && nextProps.metricsUpdatedAt) {\n return nextProps.metricsUpdatedAt > metricsUpdatedAt;\n }\n\n return true;\n }\n\n componentWillUnmount() {\n const { name } = this.props;\n\n MetricsActions.removeGlobal(name);\n }\n\n render() {\n const { children, metrics, name: fullName, zeroOnMissing } = this.props;\n\n if (!metrics) {\n return (Loading...);\n }\n\n let throughput = Object.keys(metrics)\n .map((nodeId) => MetricsExtractor.getValuesForNode(metrics[nodeId], { throughput: fullName }))\n .reduce((accumulator: { throughput?: number }, currentMetric: { throughput: number | undefined | null }): { throughput?: number } => ({ throughput: (accumulator.throughput || 0) + (currentMetric.throughput || 0) }), {});\n\n if (zeroOnMissing && (!throughput || !throughput.throughput)) {\n throughput = { throughput: 0 };\n }\n\n return (\n \n {\n React.Children.map(children, (child) => React.cloneElement(child, { metric: { full_name: fullName, count: throughput.throughput } }))\n }\n \n );\n }\n}\n\ntype MetricsStoreState = {\n metrics: ClusterMetric,\n metricsUpdatedAt: number,\n};\n\nexport default connect(MetricContainer,\n { metricsStore: MetricsStore as Store },\n ({ metricsStore, ...otherProps }) => ({\n ...otherProps,\n metrics: metricsStore.metrics,\n metricsUpdatedAt: metricsStore.metricsUpdatedAt,\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';\nimport numeral from 'numeral';\n\nimport type { CounterMetric } from 'stores/metrics/MetricsStore';\n\ntype Props = {\n metric: CounterMetric,\n}\nconst CounterDetails = ({ metric: { metric } }: Props) => (\n \n - Value:
\n - {numeral(metric.count).format('0,0')}
\n
\n);\n\nCounterDetails.propTypes = {\n metric: PropTypes.object.isRequired,\n};\n\nexport default CounterDetails;\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 numeral from 'numeral';\n\nimport type { GaugeMetric } from 'stores/metrics/MetricsStore';\n\ntype Props = {\n metric: GaugeMetric,\n}\nconst GaugeDetails = ({ metric: { metric: gauge } }: Props) => (\n \n - Value:
\n - {numeral(gauge.value).format('0,0')}
\n
\n);\n\nGaugeDetails.propTypes = {\n metric: PropTypes.object.isRequired,\n};\n\nexport default GaugeDetails;\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 numeral from 'numeral';\n\nimport type { HistogramMetric } from 'stores/metrics/MetricsStore';\n\ntype Props = {\n metric: HistogramMetric,\n};\nconst HistogramDetails = ({ metric: { metric: histogram } }: Props) => (\n \n - 95th percentile:
\n - {numeral(histogram.time['95th_percentile']).format('0,0.[00]')}
\n - 98th percentile:
\n - {numeral(histogram.time['98th_percentile']).format('0,0.[00]')}
\n - 99th percentile:
\n - {numeral(histogram.time['99th_percentile']).format('0,0.[00]')}
\n - Standard deviation:
\n - {numeral(histogram.time.std_dev).format('0,0.[00]')}
\n - Mean:
\n - {numeral(histogram.time.mean).format('0,0.[00]')}
\n - Minimum:
\n - {numeral(histogram.time.min).format('0,0.[00]')}
\n - Maximum:
\n - {numeral(histogram.time.max).format('0,0.[00]')}
\n - Count:
\n - {numeral(histogram.count).format('0,0')}
\n
\n);\n\nHistogramDetails.propTypes = {\n metric: PropTypes.object.isRequired,\n};\n\nexport default HistogramDetails;\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 numeral from 'numeral';\n\nimport type { MeterMetric } from 'stores/metrics/MetricsStore';\n\ntype Props = {\n metric: MeterMetric,\n}\nconst MeterDetails = ({ metric: { metric: meter } }: Props) => (\n \n - Total:
\n - {numeral(meter.rate.total).format('0,0')} events
\n - Mean:
\n - {numeral(meter.rate.mean).format('0,0.[00]')} {meter.rate_unit}
\n - 1 minute avg:
\n - {numeral(meter.rate.one_minute).format('0,0.[00]')} {meter.rate_unit}
\n - 5 minute avg:
\n - {numeral(meter.rate.five_minute).format('0,0.[00]')} {meter.rate_unit}
\n - 15 minute avg:
\n - {numeral(meter.rate.fifteen_minute).format('0,0.[00]')} {meter.rate_unit}
\n
\n);\n\nMeterDetails.propTypes = {\n metric: PropTypes.object.isRequired,\n};\n\nexport default MeterDetails;\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 numeral from 'numeral';\n\nimport type { TimerMetric } from 'stores/metrics/MetricsStore';\n\ntype Props = {\n metric: TimerMetric,\n}\nconst TimerDetails = ({ metric: { metric: { time: timing } } }: Props) => (\n \n - 95th percentile:
\n - {numeral(timing['95th_percentile']).format('0,0.[00]')}μs
\n\n - 98th percentile:
\n - {numeral(timing['98th_percentile']).format('0,0.[00]')}μs
\n\n - 99th percentile:
\n - {numeral(timing['99th_percentile']).format('0,0.[00]')}μs
\n\n - Standard deviation:
\n - {numeral(timing.std_dev).format('0,0.[00]')}μs
\n\n - Mean:
\n - {numeral(timing.mean).format('0,0.[00]')}μs
\n\n - Minimum:
\n - {numeral(timing.min).format('0,0.[00]')}μs
\n\n - Maximum:
\n - {numeral(timing.max).format('0,0.[00]')}μs
\n
\n);\n\nTimerDetails.propTypes = {\n metric: PropTypes.object.isRequired,\n};\n\nexport default TimerDetails;\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 * as React from 'react';\nimport { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport capitalize from 'lodash/capitalize';\nimport styled from 'styled-components';\n\nimport CounterDetails from 'components/metrics/CounterDetails';\nimport GaugeDetails from 'components/metrics/GaugeDetails';\nimport HistogramDetails from 'components/metrics/HistogramDetails';\nimport MeterDetails from 'components/metrics/MeterDetails';\nimport TimerDetails from 'components/metrics/TimerDetails';\nimport { useStore } from 'stores/connect';\nimport type { Metric } from 'stores/metrics/MetricsStore';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst DetailsForType = ({ metric }: { metric: Metric }) => {\n switch (metric.type) {\n case 'counter':\n return ;\n case 'gauge':\n return ;\n case 'histogram':\n return ;\n case 'meter':\n return ;\n case 'timer':\n return ;\n default:\n return Invalid metric type: {metric};\n }\n};\n\nconst StyledMetricDetail = styled.div`\n dl {\n > dt {\n float: left;\n }\n\n &.metric-timer > dd {\n margin-left: 145px;\n }\n\n &.metric-meter > dd {\n margin-left: 115px;\n }\n\n &.metric-gauge > dd {\n margin-left: 90px;\n }\n\n &.metric-counter > dd {\n margin-left: 90px;\n }\n\n &.metric-histogram > dd {\n margin-left: 145px;\n }\n }\n`;\n\ntype Props = {\n metric: Metric,\n nodeId: string,\n}\n\nconst MetricDetails = ({ nodeId, metric, metric: { full_name: metricName } }: Props) => {\n const metrics = useStore(MetricsStore, (metricsStoreState) => metricsStoreState.metrics);\n\n useEffect(() => {\n MetricsActions.add(nodeId, metricName);\n\n return () => { MetricsActions.remove(nodeId, metricName); };\n }, [metricName, nodeId]);\n\n const currentMetric = metrics?.[nodeId]?.[metricName] ?? metric;\n const type = capitalize(currentMetric.type);\n\n return (\n \n {type}
\n \n \n \n \n );\n};\n\nMetricDetails.propTypes = {\n metric: PropTypes.object.isRequired,\n nodeId: PropTypes.string.isRequired,\n};\n\nexport default MetricDetails;\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 { Alert, Col, Row } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport { MetricsList } from 'components/metrics';\nimport SearchForm from 'components/common/SearchForm';\nimport type { Metric } from 'stores/metrics/MetricsStore';\n\nconst StyledWarningDiv = styled.div(({ theme }) => `\n height: 20px;\n margin-bottom: 5px;\n color: ${theme.colors.variant.dark.danger};\n`);\n\ntype Props = {\n names: Array,\n namespace: string,\n nodeId: string,\n filter?: string,\n error?: {\n responseMessage: string,\n status: number,\n }\n};\n\nconst safelyFilterNames = (filter: string, names: Array) => {\n try {\n const filterRegex = new RegExp(filter, 'i');\n\n return names.filter((metric) => String(metric.full_name).match(filterRegex));\n } catch (e) {\n return [];\n }\n};\n\ntype State = {\n filter: string,\n}\n\nconst MetricsListContainer = styled.div`\n padding-top: 10px;\n width: 100%;\n`;\n\nclass MetricsComponent extends React.Component {\n static propTypes = {\n names: PropTypes.arrayOf(PropTypes.object),\n namespace: PropTypes.string.isRequired,\n nodeId: PropTypes.string.isRequired,\n filter: PropTypes.string,\n error: PropTypes.shape({\n responseMessage: PropTypes.string,\n status: PropTypes.number,\n }),\n };\n\n static defaultProps = {\n names: undefined,\n filter: '',\n error: undefined,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = { filter: props.filter };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: Props) {\n if (nextProps.filter !== this.props.filter) {\n this.setState({ filter: nextProps.filter });\n }\n }\n\n onFilterChange = (nextFilter: string) => {\n this.setState({ filter: nextFilter });\n };\n\n render() {\n const { filter } = this.state;\n const { names, error } = this.props;\n\n if (!names) {\n return (\n \n \n \n {error ? (\n \n Could not fetch metrics from node: server returned {error.responseMessage || ''}{' '}\n with a {error.status} status code.\n \n ) : (\n There was a problem fetching node metrics.\n )}\n {' '}Graylog will keep trying to get them in the background.\n \n \n
\n );\n }\n\n const filteredNames = safelyFilterNames(filter, names);\n\n return (\n \n \n \n {error && (\n <>\n \n Could not fetch metrics from node: server returned {error.responseMessage || ''}{' '}\n with a {error.status} status code. Displaying last metrics available.\n >\n )}\n \n \n \n \n \n \n \n
\n );\n }\n}\n\nexport default MetricsComponent;\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, { css } from 'styled-components';\n\nimport { Metric } from 'components/metrics';\nimport type { Metric as MetricType } from 'stores/metrics/MetricsStore';\n\nconst MetricListWrap = styled.ul(({ theme }) => css`\n padding: 0;\n\n li {\n margin-bottom: 5px;\n\n .prefix {\n color: ${theme.colors.gray[70]};\n }\n\n .name {\n font-size: ${theme.fonts.size.body};\n font-family: ${theme.fonts.family.monospace};\n word-break: break-all;\n\n .open:hover {\n text-decoration: none;\n }\n }\n\n .metric {\n margin-left: 10px;\n padding: 10px;\n\n h3 {\n margin-bottom: 5px;\n }\n }\n }\n\n dl {\n margin-top: 0;\n margin-bottom: 0;\n }\n`);\n\nexport type MetricInfo = {\n type: string,\n full_name: string,\n}\ntype Props = {\n namespace: string,\n nodeId: string,\n names: Array,\n}\n\nclass MetricsList extends React.Component {\n static propTypes = {\n names: PropTypes.arrayOf(PropTypes.object).isRequired,\n namespace: PropTypes.string.isRequired,\n nodeId: PropTypes.string.isRequired,\n };\n\n _formatMetric = (metric: MetricType) => {\n const { namespace, nodeId } = this.props;\n\n return (\n \n \n \n );\n };\n\n render() {\n const { names } = this.props;\n const metrics = names\n .sort((m1, m2) => m1.full_name.localeCompare(m2.full_name))\n .map((metric) => this._formatMetric(metric));\n\n return (\n \n {metrics.length > 0 ? metrics : No metrics match the given filter. Please ensure you use a valid regular expression }\n \n );\n }\n}\n\nexport default MetricsList;\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 { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst MetricsMapper = createReactClass({\n displayName: 'MetricsMapper',\n\n propTypes: {\n map: PropTypes.object.isRequired,\n computeValue: PropTypes.func.isRequired,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n getDefaultProps() {\n return {\n };\n },\n\n getInitialState() {\n return {};\n },\n\n UNSAFE_componentWillMount() {\n Object.keys(this.props.map).forEach((name) => MetricsActions.addGlobal(this.props.map[name]));\n },\n\n shouldComponentUpdate(_, nextState) {\n // Only re-render this component if the metric data has changed\n if (this.state.metricsUpdatedAt && nextState.metricsUpdatedAt) {\n return nextState.metricsUpdatedAt > this.state.metricsUpdatedAt;\n }\n\n return true;\n },\n\n componentWillUnmount() {\n Object.keys(this.props.map).forEach((name) => MetricsActions.removeGlobal(this.props.map[name]));\n },\n\n render() {\n if (!this.state.metrics) {\n return null;\n }\n\n const metricsMap = {};\n\n Object.keys(this.state.metrics).forEach((nodeId) => {\n Object.keys(this.props.map).forEach((key) => {\n const metricName = this.props.map[key];\n\n if (this.state.metrics[nodeId][metricName]) {\n // Only create the node entry if we actually have data\n if (!metricsMap[nodeId]) {\n metricsMap[nodeId] = {};\n }\n\n metricsMap[nodeId][key] = this.state.metrics[nodeId][metricName];\n }\n });\n });\n\n const value = this.props.computeValue(metricsMap);\n\n return (\n \n {value}\n \n );\n },\n});\n\nexport default MetricsMapper;\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"],"names":["CounterRate","TimeHelper","count","rate","rateNum","iconMapping","_formatIcon","type","_formatName","metricName","namespace","unqualifiedMetricName","Metric","metric","nodeId","expanded","setExpanded","_showDetails","e","_expanded","details","MetricContainer","name","nextProps","metricsUpdatedAt","children","metrics","fullName","zeroOnMissing","throughput","MetricsExtractor","accumulator","currentMetric","child","connect","MetricsStore","metricsStore","otherProps","CounterDetails","GaugeDetails","gauge","HistogramDetails","histogram","MeterDetails","meter","TimerDetails","timing","DetailsForType","StyledMetricDetail","MetricDetails","metricsStoreState","StyledWarningDiv","theme","safelyFilterNames","filter","names","filterRegex","MetricsListContainer","MetricsComponent","props","nextFilter","error","filteredNames","SearchForm","MetricListWrap","MetricsList","m1","m2","_","nextState","metricsMap","key","value","nodeMetrics","metricNames","metricShortName","metricFullName","metricObject"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy