{"version":3,"file":"alertmanagerPlugin.d13ca72afb3f996bb284.js","mappings":"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","sources":["webpack://grafana/./public/app/plugins/datasource/alertmanager/ConfigEditor.tsx","webpack://grafana/./public/app/plugins/datasource/alertmanager/DataSource.ts","webpack://grafana/./public/app/plugins/datasource/alertmanager/module.ts"],"sourcesContent":["import { produce } from 'immer';\nimport React from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { SIGV4ConnectionConfig } from '@grafana/aws-sdk';\nimport { DataSourcePluginOptionsEditorProps, SelectableValue } from '@grafana/data';\nimport { DataSourceHttpSettings, InlineField, InlineFormLabel, InlineSwitch, Select, Text } from '@grafana/ui';\nimport { config } from 'app/core/config';\n\nimport { AlertManagerDataSourceJsonData, AlertManagerImplementation } from './types';\n\nexport type Props = DataSourcePluginOptionsEditorProps;\n\nconst IMPL_OPTIONS: Array> = [\n {\n value: AlertManagerImplementation.mimir,\n label: 'Mimir',\n description: `https://grafana.com/oss/mimir/. An open source, horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus.`,\n },\n {\n value: AlertManagerImplementation.cortex,\n label: 'Cortex',\n description: `https://cortexmetrics.io/`,\n },\n {\n value: AlertManagerImplementation.prometheus,\n label: 'Prometheus',\n description:\n 'https://prometheus.io/. Does not support editing configuration via API, so contact points and notification policies are read-only.',\n },\n];\n\nexport const ConfigEditor = (props: Props) => {\n const { options, onOptionsChange } = props;\n\n return (\n <>\n

Alertmanager

\n
\n
\n
\n Implementation\n \n onOptionsChange({\n ...options,\n jsonData: {\n ...options.jsonData,\n implementation: value.value,\n },\n })\n }\n />\n
\n
\n
\n \n {\n onOptionsChange(\n produce(options, (draft) => {\n draft.jsonData.handleGrafanaManagedAlerts = e.currentTarget.checked;\n })\n );\n }}\n />\n \n
\n {options.jsonData.handleGrafanaManagedAlerts && (\n \n Make sure to enable the alert forwarding on the admin page.\n \n )}\n
\n }\n secureSocksDSProxyEnabled={false} // the proxy is not implemented to work with the alertmanager\n />\n \n );\n};\n","import { lastValueFrom, Observable, of } from 'rxjs';\n\nimport { DataQuery, DataQueryResponse, DataSourceApi, DataSourceInstanceSettings } from '@grafana/data';\nimport { BackendSrvRequest, getBackendSrv, isFetchError } from '@grafana/runtime';\n\nimport { discoverAlertmanagerFeaturesByUrl } from '../../../features/alerting/unified/api/buildInfo';\nimport { messageFromError } from '../../../features/alerting/unified/utils/redux';\nimport { AlertmanagerApiFeatures } from '../../../types/unified-alerting-dto';\n\nimport { AlertManagerDataSourceJsonData, AlertManagerImplementation } from './types';\n\nexport type AlertManagerQuery = {\n query: string;\n} & DataQuery;\n\nexport class AlertManagerDatasource extends DataSourceApi {\n constructor(public instanceSettings: DataSourceInstanceSettings) {\n super(instanceSettings);\n }\n\n // `query()` has to be implemented but we actually don't use it, just need this\n // data source to proxy requests.\n // @ts-ignore\n query(): Observable {\n return of({\n data: [],\n });\n }\n\n _request(url: string) {\n const options: BackendSrvRequest = {\n headers: {},\n method: 'GET',\n url: this.instanceSettings.url + url,\n };\n\n if (this.instanceSettings.basicAuth || this.instanceSettings.withCredentials) {\n this.instanceSettings.withCredentials = true;\n }\n\n if (this.instanceSettings.basicAuth) {\n options.headers!.Authorization = this.instanceSettings.basicAuth;\n }\n\n return lastValueFrom(getBackendSrv().fetch(options));\n }\n\n async testDatasource() {\n let alertmanagerResponse;\n const amUrl = this.instanceSettings.url;\n\n const amFeatures: AlertmanagerApiFeatures = amUrl\n ? await discoverAlertmanagerFeaturesByUrl(amUrl)\n : { lazyConfigInit: false };\n\n if (this.instanceSettings.jsonData.implementation === AlertManagerImplementation.prometheus) {\n try {\n alertmanagerResponse = await this._request('/alertmanager/api/v2/status');\n if (alertmanagerResponse && alertmanagerResponse?.status === 200) {\n return {\n status: 'error',\n message:\n 'It looks like you have chosen Prometheus implementation, but detected a Mimir or Cortex endpoint. Please update implementation selection and try again.',\n };\n }\n } catch (e) {}\n try {\n alertmanagerResponse = await this._request('/api/v2/status');\n } catch (e) {}\n } else {\n try {\n alertmanagerResponse = await this._request('/api/v2/status');\n if (alertmanagerResponse && alertmanagerResponse?.status === 200) {\n return {\n status: 'error',\n message:\n 'It looks like you have chosen a Mimir or Cortex implementation, but detected a Prometheus endpoint. Please update implementation selection and try again.',\n };\n }\n } catch (e) {}\n try {\n alertmanagerResponse = await this._request('/alertmanager/api/v2/status');\n } catch (e) {\n if (\n isFetchError(e) &&\n amFeatures.lazyConfigInit &&\n messageFromError(e)?.includes('the Alertmanager is not configured')\n ) {\n return {\n status: 'success',\n message: 'Health check passed.',\n details: { message: 'Mimir Alertmanager without the fallback configuration has been discovered.' },\n };\n }\n }\n }\n\n return alertmanagerResponse?.status === 200\n ? {\n status: 'success',\n message: 'Health check passed.',\n }\n : {\n status: 'error',\n message: 'Health check failed.',\n };\n }\n}\n","import { DataSourcePlugin } from '@grafana/data';\n\nimport { ConfigEditor } from './ConfigEditor';\nimport { AlertManagerDatasource } from './DataSource';\n\n// This is not actually a data source but since 7.1,\n// it is required to specify query types. Which we don't have.\n// @ts-ignore\nexport const plugin = new DataSourcePlugin(AlertManagerDatasource).setConfigEditor(ConfigEditor);\n"],"names":["IMPL_OPTIONS","ConfigEditor","props","options","onOptionsChange","Select","value","InlineField","e","draft","Text","DataSourceHttpSettings","config","AlertManagerDatasource","instanceSettings","of","url","lastValueFrom","alertmanagerResponse","amUrl","amFeatures"],"sourceRoot":""}