web-interface.assets.1255d548-795.d36fe8f7feac90546ff7.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-795.d36fe8f7feac90546ff7.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/common/withPaginationQueryParameter.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerFailuresComponent.jsx","webpack://graylog-web-interface/./src/components/indexers/IndexerClusterHealthError.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerClusterHealth.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerClusterHealthSummary.tsx","webpack://graylog-web-interface/./src/components/indexers/IndexerFailure.jsx","webpack://graylog-web-interface/./src/components/indexers/IndexerFailuresList.jsx","webpack://graylog-web-interface/./src/pages/IndexerFailuresPage.jsx","webpack://graylog-web-interface/./src/stores/indexers/IndexerFailuresStore.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 * as React from 'react';\n\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\n\nexport type PaginationQueryParameterObject = {\n pageSizes?: number[];\n};\n\nconst withPaginationQueryParameter = >>(Component: C, obj?: PaginationQueryParameterObject) => function WrappedComponent(props: any) {\n const result = usePaginationQueryParameter(obj?.pageSizes);\n\n return ;\n};\n\nexport default withPaginationQueryParameter;\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 React from 'react';\nimport numeral from 'numeral';\nimport moment from 'moment';\nimport styled from 'styled-components';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Alert, Col, Row, Button } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport DocsHelper from 'util/DocsHelper';\nimport Routes from 'routing/Routes';\nimport { DocumentationLink } from 'components/support';\nimport { IndexerFailuresStore } from 'stores/indexers/IndexerFailuresStore';\n\nconst Header = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst formatTextForFailureCount = (count) => {\n if (count === 0) {\n return 'No failed indexing attempts in the last 24 hours.';\n }\n\n return There were {numeral(count).format('0,0')} failed indexing attempts in the last 24 hours.;\n};\n\nclass IndexerFailuresComponent extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n componentDidMount() {\n const since = moment().subtract(24, 'hours');\n\n IndexerFailuresStore.count(since).then((response) => {\n this.setState({ total: response.count });\n });\n }\n\n _formatFailuresSummary = () => (\n \n {formatTextForFailureCount(this.state.total)}\n\n \n \n \n \n );\n\n render() {\n let content;\n\n if (this.state.total === undefined) {\n content = ;\n } else {\n content = this._formatFailuresSummary();\n }\n\n return (\n \n \n \n Indexer failures
\n \n \n \n Every message that was not successfully indexed will be logged as an indexer failure.\n
\n {content}\n \n
\n );\n }\n}\n\nexport default IndexerFailuresComponent;\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 React from 'react';\nimport styled from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\nimport type FetchError from 'logic/errors/FetchError';\n\nconst ESClusterError = styled(Alert)`\n margin-top: 10px;\n margin-bottom: 5px;\n`;\n\nconst IndexerClusterHealthError = ({ error }: { error: FetchError }) => (\n \n Could not retrieve Elasticsearch cluster health. Fetching Elasticsearch cluster health failed: {error.message}\n \n);\n\nexport default IndexerClusterHealthError;\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 React from 'react';\nimport { useQueries } from '@tanstack/react-query';\nimport styled from 'styled-components';\n\nimport { isPermitted } from 'util/PermissionsMixin';\nimport { Spinner } from 'components/common';\nimport { Row, Col } from 'components/bootstrap';\nimport { DocumentationLink } from 'components/support';\nimport DocsHelper from 'util/DocsHelper';\nimport { IndexerClusterHealthSummary } from 'components/indexers';\nimport type FetchError from 'logic/errors/FetchError';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport * as URLUtils from 'util/URLUtils';\nimport useCurrentUser from 'hooks/useCurrentUser';\n\nimport IndexerClusterHealthError from './IndexerClusterHealthError';\n\nconst Header = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nconst GET_INDEXER_CLUSTER_HEALTH = 'indexerCluster.health';\nconst GET_INDEXER_CLUSTER_NAME = 'indexerCluster.name';\n\nconst getIndexerClusterHealth = () => {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.health().url);\n\n return fetchPeriodically('GET', url);\n};\n\nconst getIndexerClusterName = () => {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerClusterApiController.name().url);\n\n return fetchPeriodically('GET', url);\n};\n\nconst useLoadHealthAndName = (enabled: boolean) => {\n const options = { refetchInterval: 5000, retry: 0, enabled };\n const [\n { data: healthData, isFetching: healthIsFetching, error: healthError, isSuccess: healthIsSuccess, isRefetching: healthIsRefetching },\n { data: nameData, isFetching: nameIsFetching, error: nameError, isSuccess: nameIsSuccess, isRefetching: nameIsRefetching },\n ] = useQueries({\n queries: [\n { queryKey: [GET_INDEXER_CLUSTER_HEALTH], queryFn: getIndexerClusterHealth, ...options },\n { queryKey: [GET_INDEXER_CLUSTER_NAME], queryFn: getIndexerClusterName, ...options },\n ],\n });\n\n return ({\n health: healthData,\n name: nameData,\n error: (healthError || nameError) as FetchError,\n loading: (healthIsFetching || nameIsFetching) && !healthIsRefetching && !nameIsRefetching,\n isSuccess: healthIsSuccess && nameIsSuccess,\n });\n};\n\ntype Props = {\n minimal?: boolean,\n};\n\nconst IndexerClusterHealth = ({ minimal }: Props) => {\n const currentUser = useCurrentUser();\n const userHasRequiredPermissions = isPermitted(currentUser.permissions, 'indexercluster:read');\n const { health, name, loading, error, isSuccess } = useLoadHealthAndName(userHasRequiredPermissions);\n\n if (!userHasRequiredPermissions) {\n return null;\n }\n\n return (\n \n \n {!minimal && (\n \n Elasticsearch cluster
\n \n \n )}\n\n {isSuccess && }\n {loading &&
}\n {error && }\n \n
\n );\n};\n\nIndexerClusterHealth.defaultProps = {\n minimal: false,\n};\n\nexport default IndexerClusterHealth;\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, { useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport { Alert } from 'components/bootstrap';\nimport { DocumentationLink } from 'components/support';\nimport DocsHelper from 'util/DocsHelper';\n\nconst ESClusterStatus = styled(Alert)`\n margin-top: 10px;\n margin-bottom: 5px;\n`;\n\nconst IndexerClusterHealthSummary = ({ health, name }: {\n health: {\n status: string,\n shards: {\n active: string,\n initializing: string,\n relocating: string,\n unassigned: string\n }\n },\n name?: {\n name: string\n }\n}) => {\n const formattedHealthStatus = health.status.toLowerCase();\n\n const alertClassForHealth = () => {\n switch (formattedHealthStatus) {\n case 'green': return 'success';\n case 'yellow': return 'warning';\n case 'red': return 'danger';\n default: return 'success';\n }\n };\n\n const formattedTextForHealth = useMemo(() => {\n const text = `Elasticsearch cluster ${name?.name || ''} is ${formattedHealthStatus}.`;\n\n switch (formattedHealthStatus) {\n case 'green': return text;\n case 'yellow':\n case 'red': return {text};\n default: return text;\n }\n }, [formattedHealthStatus, name]);\n\n return (\n \n {formattedTextForHealth}{' '}\n Shards:{' '}\n {health.shards.active} active,{' '}\n {health.shards.initializing} initializing,{' '}\n {health.shards.relocating} relocating,{' '}\n {health.shards.unassigned} unassigned,{' '}\n \n \n );\n};\n\nIndexerClusterHealthSummary.defaultProps = {\n name: undefined,\n};\n\nIndexerClusterHealthSummary.propTypes = {\n health: PropTypes.object.isRequired,\n name: PropTypes.object,\n};\n\nexport default IndexerClusterHealthSummary;\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 RelativeTime from 'components/common/RelativeTime';\n\nclass IndexerFailure extends React.Component {\n static propTypes = {\n failure: PropTypes.object.isRequired,\n };\n\n render() {\n const { failure } = this.props;\n\n return (\n \n \n {failure.index} \n {failure.letter_id} \n {failure.message} \n \n );\n }\n}\n\nexport default IndexerFailure;\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, Table } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport { IndexerFailure } from 'components/indexers';\n\nclass IndexerFailuresList extends React.Component {\n static propTypes = {\n failures: PropTypes.arrayOf(PropTypes.object).isRequired,\n };\n\n render() {\n if (this.props.failures.length === 0) {\n return (\n Hurray! There are not any indexer failures. \n );\n }\n\n return (\n \n \n \n \n Timestamp \n Index \n Letter ID \n Error message \n \n \n \n {this.props.failures.map((failure) => )}\n \n
\n \n );\n }\n}\n\nexport default IndexerFailuresList;\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 React from 'react';\nimport PropTypes from 'prop-types';\nimport numeral from 'numeral';\nimport moment from 'moment';\n\nimport { Col, Row } from 'components/bootstrap';\nimport DocsHelper from 'util/DocsHelper';\nimport { DocumentTitle, Spinner, PageHeader, PaginatedList } from 'components/common';\nimport { IndexerFailuresList } from 'components/indexers';\nimport withPaginationQueryParameter from 'components/common/withPaginationQueryParameter';\nimport { IndexerFailuresStore } from 'stores/indexers/IndexerFailuresStore';\n\nclass IndexerFailuresPage extends React.Component {\n static propTypes = {\n paginationQueryParameter: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n componentDidMount() {\n IndexerFailuresStore.count(moment().subtract(10, 'years')).then((response) => {\n this.setState({ total: response.count });\n });\n\n this.loadData();\n }\n\n loadData = (page = this.props.paginationQueryParameter.page, size = this.props.paginationQueryParameter.pageSize) => {\n IndexerFailuresStore.list(size, (page - 1) * size).then((response) => {\n this.setState({ failures: response.failures });\n });\n };\n\n _onChangePaginatedList = (page, size) => {\n this.loadData(page, size);\n };\n\n render() {\n if (this.state.total === undefined || !this.state.failures) {\n return ;\n }\n\n return (\n \n \n \n \n This is a list of message index attempts that failed. A failure means that a message you sent to Graylog was{' '}\n properly processed but writing it to the Elasticsearch cluster failed. Note that the list is capped to a size{' '}\n of 50 MB so it will contain a lot of failure logs but not necessarily all that ever occurred.\n
\n Collection containing a total of {numeral(this.state.total).format('0,0')} indexer failures.\n \n \n \n \n \n \n \n \n
\n \n \n );\n }\n}\n\nexport default withPaginationQueryParameter(IndexerFailuresPage);\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';\nimport moment from 'moment';\n\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const IndexerFailuresStore = singletonStore(\n 'core.IndexerFailures',\n () => Reflux.createStore({\n listenables: [],\n\n list(limit, offset) {\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.list(limit, offset).url);\n\n return fetch('GET', url);\n },\n\n count(since) {\n const momentSince = since.format ? since : moment(since);\n const isoSince = momentSince.format('YYYY-MM-DDTHH:mm:ss.SSS');\n const url = URLUtils.qualifyUrl(ApiRoutes.IndexerFailuresApiController.count(isoSince).url);\n\n return fetch('GET', url);\n },\n }),\n);\n"],"names":["Component","obj","props","result","Header","formatTextForFailureCount","count","IndexerFailuresComponent","since","response","content","ESClusterError","error","GET_INDEXER_CLUSTER_HEALTH","GET_INDEXER_CLUSTER_NAME","getIndexerClusterHealth","url","URLUtils","ApiRoutes","getIndexerClusterName","useLoadHealthAndName","enabled","options","healthData","healthIsFetching","healthError","healthIsSuccess","healthIsRefetching","nameData","nameIsFetching","nameError","nameIsSuccess","nameIsRefetching","IndexerClusterHealth","minimal","currentUser","useCurrentUser","userHasRequiredPermissions","health","name","loading","isSuccess","DocsHelper","ESClusterStatus","IndexerClusterHealthSummary","formattedHealthStatus","alertClassForHealth","formattedTextForHealth","text","IndexerFailure","failure","RelativeTime","IndexerFailuresList","IndexerFailuresPage","page","size","IndexerFailuresStore","limit","offset","isoSince"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy