{"version":3,"file":"AlertingHome.0d6be993ef4a3df37345.js","mappings":"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","sources":["webpack://grafana/./public/app/features/alerting/unified/home/GettingStarted.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/SectionFooter.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/DataSourcesInfo.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/SectionSubheader.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/RatingModal.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/Active.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/AlertsByStateScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/EvalSuccessVsFailuresScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/InstanceStatusScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/MissedIterationsScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/MostFiredInstancesTable.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/Paused.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/RulesByEvaluation.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/RulesByEvaluationPercentage.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/alertmanager/AlertsByState.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/grafana/alertmanager/SilencesByStateScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/AlertsByState.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/InvalidConfig.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/Notifications.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/Silences.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationIntervalRatioScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationDurationScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupEvaluationsScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/perGroup/RuleGroupIntervalScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/perGroup/RulesPerGroupScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/EvalSuccessVsFailuresScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/Firing.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/InstancesByState.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/InstancesPercentageByState.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/MissedIterationsScene.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/MostFiredRules.tsx","webpack://grafana/./public/app/features/alerting/unified/insights/mimir/rules/Pending.tsx","webpack://grafana/./public/app/features/alerting/unified/home/Insights.tsx","webpack://grafana/./public/app/features/alerting/unified/home/Home.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport React from 'react';\nimport SVG from 'react-inlinesvg';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { EmbeddedScene, SceneFlexLayout, SceneFlexItem, SceneReactObject } from '@grafana/scenes';\nimport { Icon, useStyles2, useTheme2, Stack } from '@grafana/ui';\n\nexport const getOverviewScene = () => {\n return new EmbeddedScene({\n body: new SceneFlexLayout({\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n component: GettingStarted,\n }),\n }),\n ],\n }),\n });\n};\n\nexport default function GettingStarted({ showWelcomeHeader }: { showWelcomeHeader?: boolean }) {\n const theme = useTheme2();\n const styles = useStyles2(getWelcomePageStyles);\n\n return (\n
\n {showWelcomeHeader && }\n \n
\n

How it works

\n
    \n
  • \n Grafana alerting periodically queries data sources and evaluates the condition defined in the alert rule\n
  • \n
  • If the condition is breached, an alert instance fires
  • \n
  • Firing instances are routed to notification policies based on matching labels
  • \n
  • Notifications are sent out to the contact points specified in the notification policy
  • \n
\n
\n \n
\n \n

Get started

\n \n
    \n
  • \n Create an alert rule by adding queries and expressions from multiple data sources.\n
  • \n
  • \n Add labels to your alert rules to connect them to notification policies\n
  • \n
  • \n Configure contact points to define where to send your notifications to.\n
  • \n
  • \n Configure notification policies to route your alert instances to contact points.\n
  • \n
\n
\n \n
\n
\n
\n \n \n \n
\n );\n}\n\nconst getWelcomePageStyles = (theme: GrafanaTheme2) => ({\n grid: css`\n display: grid;\n grid-template-rows: min-content auto auto;\n grid-template-columns: 1fr 1fr 1fr 1fr 1fr;\n gap: ${theme.spacing(2)};\n width: 100%;\n `,\n ctaContainer: css`\n grid-column: 1 / span 5;\n `,\n flowBlock: css`\n grid-column: 1 / span 5;\n\n display: flex;\n flex-wrap: wrap;\n gap: ${theme.spacing(1)};\n\n & > div {\n flex: 2;\n min-width: 350px;\n }\n & > svg {\n flex: 3;\n min-width: 500px;\n }\n `,\n videoBlock: css`\n grid-column: 3 / span 3;\n\n // Video required\n position: relative;\n padding: 56.25% 0 0 0; /* 16:9 */\n\n iframe {\n position: absolute;\n top: ${theme.spacing(2)};\n left: ${theme.spacing(2)};\n width: calc(100% - ${theme.spacing(4)});\n height: calc(100% - ${theme.spacing(4)});\n border: none;\n }\n `,\n gettingStartedBlock: css`\n grid-column: 1 / span 2;\n justify-content: space-between;\n `,\n list: css`\n margin: ${theme.spacing(0, 2)};\n & > li {\n margin-bottom: ${theme.spacing(1)};\n }\n `,\n});\n\nexport function WelcomeHeader({ className }: { className?: string }) {\n const styles = useStyles2(getWelcomeHeaderStyles);\n\n return (\n
\n
Learn about problems in your systems moments after they occur
\n\n \n \n
\n \n
\n \n \n
\n );\n}\n\nconst getWelcomeHeaderStyles = (theme: GrafanaTheme2) => ({\n welcomeHeaderWrapper: css({\n color: theme.colors.text.primary,\n }),\n subtitle: css({\n color: theme.colors.text.secondary,\n paddingBottom: theme.spacing(2),\n }),\n ctaContainer: css`\n padding: ${theme.spacing(4, 2)};\n display: flex;\n gap: ${theme.spacing(4)};\n justify-content: space-between;\n flex-wrap: wrap;\n\n ${theme.breakpoints.down('lg')} {\n flex-direction: column;\n }\n `,\n\n separator: css`\n width: 1px;\n background-color: ${theme.colors.border.medium};\n\n ${theme.breakpoints.down('lg')} {\n display: none;\n }\n `,\n});\n\ninterface WelcomeCTABoxProps {\n title: string;\n description: string;\n href: string;\n hrefText: string;\n}\n\nfunction WelcomeCTABox({ title, description, href, hrefText }: WelcomeCTABoxProps) {\n const styles = useStyles2(getWelcomeCTAButtonStyles);\n\n return (\n
\n

{title}

\n
{description}
\n \n
\n );\n}\n\nconst getWelcomeCTAButtonStyles = (theme: GrafanaTheme2) => ({\n container: css`\n flex: 1;\n min-width: 240px;\n display: grid;\n gap: ${theme.spacing(1)};\n grid-template-columns: min-content 1fr 1fr 1fr;\n grid-template-rows: min-content auto min-content;\n `,\n\n title: css`\n margin-bottom: 0;\n grid-column: 2 / span 3;\n grid-row: 1;\n `,\n\n desc: css`\n grid-column: 2 / span 3;\n grid-row: 2;\n `,\n\n actionRow: css`\n grid-column: 2 / span 3;\n grid-row: 3;\n max-width: 240px;\n `,\n\n link: css`\n color: ${theme.colors.text.link};\n `,\n});\n\nfunction ContentBox({ children, className }: React.PropsWithChildren<{ className?: string }>) {\n const styles = useStyles2(getContentBoxStyles);\n\n return
{children}
;\n}\n\nconst getContentBoxStyles = (theme: GrafanaTheme2) => ({\n box: css`\n padding: ${theme.spacing(2)};\n background-color: ${theme.colors.background.secondary};\n border-radius: ${theme.shape.radius.default};\n `,\n});\n\nfunction ArrowLink({ href, title }: { href: string; title: string }) {\n const styles = useStyles2(getArrowLinkStyles);\n\n return (\n \n {title} \n \n );\n}\n\nconst getArrowLinkStyles = (theme: GrafanaTheme2) => ({\n link: css`\n display: block;\n color: ${theme.colors.text.link};\n `,\n});\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data/src/themes';\nimport { useStyles2 } from '@grafana/ui';\n\nexport function SectionFooter({ children }: React.PropsWithChildren<{}>) {\n const styles = useStyles2(getStyles);\n\n return
{children &&
{children}
}
;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n sectionFooter: css({\n marginBottom: theme.spacing(2),\n }),\n});\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data/src/themes';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { DataSourceInformation } from '../home/Insights';\n\nexport function DataSourcesInfo({ datasources }: { datasources: DataSourceInformation[] }) {\n const styles = useStyles2(getStyles);\n\n const displayDs = datasources.map((ds) => (\n
\n {ds.settings?.meta.info.logos.small && (\n {ds.settings?.name\n )}\n {ds.settings?.name || ds.uid}\n
\n ));\n\n return
{displayDs}
;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n dsImage: css({\n label: 'ds-image',\n width: '16px',\n marginRight: '3px',\n }),\n dsContainer: css({\n display: 'flex',\n flexDirection: 'row',\n fontSize: theme.typography.bodySmall.fontSize,\n gap: '10px',\n marginBottom: '10px',\n justifyContent: 'flex-end',\n }),\n});\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data/src/themes';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { DataSourceInformation } from '../home/Insights';\n\nimport { DataSourcesInfo } from './DataSourcesInfo';\n\nexport function SectionSubheader({\n children,\n datasources,\n}: React.PropsWithChildren<{ datasources?: DataSourceInformation[] }>) {\n const styles = useStyles2(getStyles);\n\n return (\n
\n {children}\n {datasources && }\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n container: css({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n }),\n});\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data/src/themes';\nimport { Button, Dropdown, Icon, IconButton, Menu, Modal, useStyles2 } from '@grafana/ui';\n\nimport { trackInsightsFeedback } from '../Analytics';\n\nexport function InsightsRatingModal({ panel }: { panel: string }) {\n const styles = useStyles2(getStyles);\n\n const [showModal, setShowModal] = useState(false);\n\n const onDismiss = () => {\n setShowModal(false);\n };\n\n const onButtonClick = (useful: boolean) => {\n trackInsightsFeedback({ useful, panel: panel });\n onDismiss();\n };\n\n const modal = (\n \n
\n

Help us improve this page by telling us whether this panel is useful to you!

\n
\n \n \n
\n
\n \n );\n\n const menu = (\n \n setShowModal(true)} />\n \n );\n\n return (\n
\n \n \n \n {modal}\n
\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n buttonsContainer: css({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'stretch',\n gap: '25px',\n }),\n buttonContainer: css({\n height: '150px',\n width: '150px',\n cursor: 'pointer',\n justifyContent: 'center',\n }),\n button: css({\n display: 'flex',\n flexDirection: 'column',\n }),\n container: css({\n maxWidth: '370px',\n }),\n menu: css({\n height: '25px',\n margin: '0',\n }),\n thumbsdown: css({\n transform: 'scale(-1, -1);',\n }),\n});\n","import React from 'react';\n\nimport { ThresholdsMode } from '@grafana/data';\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getActiveGrafanaAlertsScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules{state=\"active\", id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules{state=\"active\"})`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n instant: true,\n expr,\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The number of currently active alert rules')\n .setData(query)\n .setThresholds({\n mode: ThresholdsMode.Absolute,\n steps: [\n {\n color: 'green',\n value: 0,\n },\n {\n color: 'green',\n value: 80,\n },\n ],\n })\n .setNoValue('0')\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneDataTransformer, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getGrafanaInstancesByStateScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by(state) (grafanacloud_grafana_instance_alerting_alerts{id=\"${INSTANCE_ID}\"})`\n : 'sum by (state) (grafanacloud_grafana_instance_alerting_alerts)';\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n const transformation = new SceneDataTransformer({\n $data: query,\n transformations: [\n {\n id: 'renameByRegex',\n options: {\n regex: 'alerting',\n renamePattern: 'firing',\n },\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n height: '400px',\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('A breakdown of all of your alert rule instances based on state')\n .setData(transformation)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) =>\n b\n .matchFieldsWithName('firing')\n .overrideColor(overrideToFixedColor('firing'))\n .matchFieldsWithName('normal')\n .overrideColor(overrideToFixedColor('normal'))\n .matchFieldsWithName('pending')\n .overrideColor(overrideToFixedColor('pending'))\n .matchFieldsWithName('error')\n .overrideColor(overrideToFixedColor('error'))\n .matchFieldsWithName('nodata')\n .overrideColor(overrideToFixedColor('nodata'))\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getGrafanaEvalSuccessVsFailuresScene(datasource: DataSourceRef, panelTitle: string) {\n const exprA = INSTANCE_ID\n ? `sum(grafanacloud_grafana_instance_alerting_rule_evaluations_total:rate5m{id=\"${INSTANCE_ID}\"}) - sum(grafanacloud_grafana_instance_alerting_rule_evaluation_failures_total:rate5m{id=\"${INSTANCE_ID}\"})`\n : `sum(grafanacloud_grafana_instance_alerting_rule_evaluations_total:rate5m) - sum(grafanacloud_grafana_instance_alerting_rule_evaluation_failures_total:rate5m)`;\n\n const exprB = INSTANCE_ID\n ? `sum(grafanacloud_grafana_instance_alerting_rule_evaluation_failures_total:rate5m{id=\"${INSTANCE_ID}\"})`\n : `sum(grafanacloud_grafana_instance_alerting_rule_evaluation_failures_total:rate5m)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n exprA,\n range: true,\n legendFormat: 'success',\n },\n {\n refId: 'B',\n exprB,\n range: true,\n legendFormat: 'failed',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of successful and failed alert rule evaluations')\n .setData(query)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOverrides((b) =>\n b\n .matchFieldsWithName('success')\n .overrideColor(overrideToFixedColor('success'))\n .matchFieldsWithName('failed')\n .overrideColor(overrideToFixedColor('failed'))\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\nexport function getInstanceStatByStatusScene(\n datasource: DataSourceRef,\n panelTitle: string,\n panelDescription: string,\n status: 'alerting' | 'pending' | 'nodata' | 'normal' | 'error'\n) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_alerts{state=\"${status}\", id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_alerts{state=\"${status}\"})`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n instant: true,\n expr,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n height: '100%',\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription(panelDescription)\n .setData(query)\n .setOverrides((b) => b.matchFieldsWithName(status).overrideColor(overrideToFixedColor(status)))\n .setNoValue('0')\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\nimport { Observable, map } from 'rxjs';\n\nimport { DataFrame } from '@grafana/data';\nimport {\n CustomTransformOperator,\n PanelBuilders,\n SceneDataTransformer,\n SceneFlexItem,\n SceneQueryRunner,\n} from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getGrafanaMissedIterationsScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = `sum by(rule_group) (grafanacloud_instance_rule_group_iterations_missed_total:rate5m{id=\"${INSTANCE_ID}\"})`;\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{rule_group}}',\n },\n ],\n });\n\n const legendTransformation: CustomTransformOperator = () => (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data.map((frame: DataFrame) => {\n return {\n ...frame,\n fields: frame.fields.map((field) => {\n const displayNameFromDs = field.config.displayNameFromDS || '';\n const matches = displayNameFromDs.match(/\\/rules\\/\\d+\\/(\\w+);(\\w+)/);\n\n if (matches) {\n field.config.displayName = `Folder: ${matches[1]} - Group: ${matches[2]}`;\n }\n\n return field;\n }),\n };\n });\n })\n );\n };\n\n const transformation = new SceneDataTransformer({\n $data: query,\n transformations: [legendTransformation],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of missed iterations per evaluation group')\n .setData(transformation)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setHeaderActions()\n .build(),\n });\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\nimport { Observable, map } from 'rxjs';\n\nimport { DataFrame, Field, GrafanaTheme2 } from '@grafana/data';\nimport {\n CustomTransformOperator,\n PanelBuilders,\n SceneDataTransformer,\n SceneFlexItem,\n SceneQueryRunner,\n} from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { Link, useStyles2 } from '@grafana/ui';\n\nimport { PANEL_STYLES } from '../../home/Insights';\nimport { createUrl } from '../../utils/url';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getMostFiredInstancesScene(datasource: DataSourceRef, panelTitle: string) {\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr: 'topk(10, sum by(labels_alertname, ruleUID) (count_over_time({from=\"state-history\"} | json | current = `Alerting` [1w])))',\n instant: true,\n },\n ],\n });\n\n const createRuleLink = (field: Field, frame: DataFrame) => {\n return {\n ...field,\n values: field.values.map((value, index) => {\n const ruleUIDs = frame.fields.find((field) => field.name === 'ruleUID');\n const ruleUID = ruleUIDs?.values[index];\n return ;\n }),\n };\n };\n\n const ruleLinkTransformation: CustomTransformOperator = () => (source: Observable) => {\n return source.pipe(\n map((data: DataFrame[]) => {\n return data.map((frame: DataFrame) => {\n return {\n ...frame,\n fields: frame.fields.map((field) => {\n //Transforming the column `labels_alertname` to show a link to the rule view page next to the alert name\n if (field.name === 'labels_alertname') {\n return createRuleLink(field, frame);\n }\n return field;\n }),\n };\n });\n })\n );\n };\n\n const transformation = new SceneDataTransformer({\n $data: query,\n transformations: [\n ruleLinkTransformation,\n {\n id: 'sortBy',\n options: {\n fields: {},\n sort: [\n {\n field: 'Value #A',\n desc: true,\n },\n ],\n },\n },\n {\n id: 'organize',\n options: {\n excludeByName: {\n Time: true,\n ruleUID: true,\n },\n indexByName: {\n labels_alertname: 0,\n 'Value #A': 1,\n },\n renameByName: {\n labels_alertname: 'Alert rule name',\n 'Value #A': 'Number of fires',\n },\n },\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.table()\n .setTitle(panelTitle)\n .setDescription('The alert rule instances that have fired the most')\n .setData(transformation)\n .setNoValue('No new alerts fired last week')\n .setHeaderActions()\n .build(),\n });\n}\n\nexport function RuleLink({ value, ruleUID }: { value: string; ruleUID: string }) {\n const getStyles = (theme: GrafanaTheme2) => ({\n link: css({\n '& > a': {\n color: theme.colors.text.link,\n },\n }),\n });\n\n const styles = useStyles2(getStyles);\n\n return (\n
\n \n {value}\n \n
\n );\n}\n","import React from 'react';\n\nimport { ThresholdsMode } from '@grafana/data';\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getPausedGrafanaAlertsScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules{state=\"paused\", id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules{state=\"paused\"})`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n instant: true,\n expr,\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The number of current paused alert rules')\n .setData(query)\n .setThresholds({\n mode: ThresholdsMode.Absolute,\n steps: [\n {\n color: 'yellow',\n value: 0,\n },\n {\n color: 'red',\n value: 80,\n },\n ],\n })\n .setNoValue('0')\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getGrafanaRulesByEvaluationScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules{id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}} evaluation',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('See how many of your alert rules are paused or active')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) =>\n b.matchFieldsWithName('active evaluation').overrideColor(overrideToFixedColor('active evaluation'))\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getGrafanaRulesByEvaluationPercentageScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules{id=\"${INSTANCE_ID}\"}) / ignoring(state) group_left sum(grafanacloud_grafana_instance_alerting_rule_group_rules{id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_rule_group_rules) / ignoring(state) group_left sum(grafanacloud_grafana_instance_alerting_rule_group_rules)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}} evaluation',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('See what percentage of your alert rules are paused or active')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setCustomFieldConfig('fillOpacity', 45)\n .setUnit('percentunit')\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setMax(1)\n .setOverrides((b) =>\n b.matchFieldsWithName('active evaluation').overrideColor(overrideToFixedColor('active evaluation'))\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getAlertsByStateScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_alertmanager_alerts{id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_alertmanager_alerts)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('A breakdown of all of your firing alert rule instances based on state')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) => b.matchFieldsWithName('active').overrideColor(overrideToFixedColor('active')))\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getGrafanaAlertmanagerSilencesScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_grafana_instance_alerting_silences{id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_grafana_instance_alerting_silences)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of silences by state')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getAlertsByStateScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_instance_alertmanager_alerts{id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_instance_alertmanager_alerts)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('A breakdown of all of your firing alert rule instances based on state')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) => b.matchFieldsWithName('active').overrideColor(overrideToFixedColor('active')))\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { BigValueGraphMode, DataSourceRef } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getInvalidConfigScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (cluster)(grafanacloud_instance_alertmanager_invalid_config{id=\"${INSTANCE_ID}\"})`\n : `sum by (cluster)(grafanacloud_instance_alertmanager_invalid_config)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{cluster}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The current state of your alertmanager configuration')\n .setData(query)\n .setUnit('bool_yes_no')\n .setOption('graphMode', BigValueGraphMode.None)\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getNotificationsScene(datasource: DataSourceRef, panelTitle: string) {\n const exprA = INSTANCE_ID\n ? `sum by(cluster)(grafanacloud_instance_alertmanager_notifications_per_second{id=\"${INSTANCE_ID}\"}) - sum by (cluster)(grafanacloud_instance_alertmanager_notifications_failed_per_second{id=\"${INSTANCE_ID}\"})`\n : `sum by(cluster)(grafanacloud_instance_alertmanager_notifications_per_second) - sum by (cluster)(grafanacloud_instance_alertmanager_notifications_failed_per_second)`;\n\n const exprB = INSTANCE_ID\n ? `sum by(cluster)(grafanacloud_instance_alertmanager_notifications_failed_per_second{id=\"${INSTANCE_ID}\"})`\n : `sum by(cluster)(grafanacloud_instance_alertmanager_notifications_failed_per_second)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n exprA,\n range: true,\n legendFormat: 'success',\n },\n {\n refId: 'B',\n exprB,\n range: true,\n legendFormat: 'failed',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of successful and failed notifications')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) =>\n b\n .matchFieldsWithName('success')\n .overrideColor(overrideToFixedColor('success'))\n .matchFieldsWithName('failed')\n .overrideColor(overrideToFixedColor('failed'))\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../home/Insights';\nimport { InsightsRatingModal } from '../RatingModal';\n\nexport function getSilencesScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum by (state) (grafanacloud_instance_alertmanager_silences{id=\"${INSTANCE_ID}\"})`\n : `sum by (state) (grafanacloud_instance_alertmanager_silences)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of silences by state')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, ThresholdsMode, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getRuleGroupEvaluationDurationIntervalRatioScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `grafanacloud_instance_rule_group_last_duration_seconds{rule_group=\"$rule_group\", id=\"${INSTANCE_ID}\"} / grafanacloud_instance_rule_group_interval_seconds{rule_group=\"$rule_group\", id=\"${INSTANCE_ID}\"}`\n : `grafanacloud_instance_rule_group_last_duration_seconds{rule_group=\"$rule_group\"} / grafanacloud_instance_rule_group_interval_seconds{rule_group=\"$rule_group\"}`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: 'duration / interval',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The percentage of interval time spent evaluating')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOption('legend', { showLegend: false })\n .setUnit('percentunit')\n .setThresholds({\n mode: ThresholdsMode.Percentage,\n steps: [\n {\n color: 'green',\n value: 0,\n },\n {\n color: 'red',\n value: 80,\n },\n {\n color: 'yellow',\n value: 60,\n },\n ],\n })\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getRuleGroupEvaluationDurationScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `grafanacloud_instance_rule_group_last_duration_seconds{rule_group=\"$rule_group\", id=\"${INSTANCE_ID}\"}`\n : `grafanacloud_instance_rule_group_last_duration_seconds{rule_group=\"$rule_group\"}`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: '{{rule_group}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('How long it took to evaluate the rule group')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setUnit('s')\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOption('legend', { showLegend: false })\n .setOverrides((b) =>\n b.matchFieldsByQuery('A').overrideColor({\n mode: 'fixed',\n fixedColor: 'blue',\n })\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getRuleGroupEvaluationsScene(datasource: DataSourceRef, panelTitle: string) {\n const exprA = INSTANCE_ID\n ? `grafanacloud_instance_rule_evaluations_total:rate5m{rule_group=\"$rule_group\", id=\"${INSTANCE_ID}} - grafanacloud_instance_rule_evaluation_failures_total:rate5m{rule_group=~\"$rule_group\", id=\"${INSTANCE_ID}}`\n : `grafanacloud_instance_rule_evaluations_total:rate5m{rule_group=\"$rule_group\"} - grafanacloud_instance_rule_evaluation_failures_total:rate5m{rule_group=~\"$rule_group\"}`;\n\n const exprB = INSTANCE_ID\n ? `grafanacloud_instance_rule_evaluation_failures_total:rate5m{rule_group=~\"$rule_group\", id=\"${INSTANCE_ID}}`\n : `grafanacloud_instance_rule_evaluation_failures_total:rate5m{rule_group=~\"$rule_group\"}`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n exprA,\n range: true,\n legendFormat: 'success',\n },\n {\n refId: 'B',\n exprB,\n range: true,\n legendFormat: 'failed',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of successful and failed evaluations for the rule group')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) =>\n b\n .matchFieldsWithName('success')\n .overrideColor(overrideToFixedColor('success'))\n .matchFieldsWithName('failed')\n .overrideColor(overrideToFixedColor('failed'))\n )\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { BigValueGraphMode, DataSourceRef } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getRuleGroupIntervalScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `grafanacloud_instance_rule_group_interval_seconds{rule_group=\"$rule_group\", id=\"${INSTANCE_ID}\"}`\n : `grafanacloud_instance_rule_group_interval_seconds{rule_group=\"$rule_group\"}`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: 'interval',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The current and historical rule group evaluation interval')\n .setData(query)\n .setUnit('s')\n .setOption('graphMode', BigValueGraphMode.Area)\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { BigValueGraphMode, DataSourceRef } from '@grafana/schema';\n\nimport { INSTANCE_ID, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getRulesPerGroupScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum(grafanacloud_instance_rule_group_rules{rule_group=\"$rule_group\", id=\"${INSTANCE_ID}\"})`\n : `sum(grafanacloud_instance_rule_group_rules{rule_group=\"$rule_group\"})`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: 'number of rules',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The current and historical number of alert rules in the rule group')\n .setData(query)\n .setUnit('none')\n .setOption('graphMode', BigValueGraphMode.Area)\n .setOverrides((b) =>\n b.matchFieldsByQuery('A').overrideColor({\n mode: 'fixed',\n fixedColor: 'blue',\n })\n )\n .setNoValue('0')\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getEvalSuccessVsFailuresScene(datasource: DataSourceRef, panelTitle: string) {\n const exprA = INSTANCE_ID\n ? `sum(grafanacloud_instance_rule_evaluations_total:rate5m{id=\"${INSTANCE_ID}) - sum(grafanacloud_instance_rule_evaluation_failures_total:rate5m{id=\"${INSTANCE_ID})`\n : `sum(grafanacloud_instance_rule_evaluations_total:rate5m) - sum(grafanacloud_instance_rule_evaluation_failures_total:rate5m)`;\n\n const exprB = INSTANCE_ID\n ? `sum(grafanacloud_instance_rule_evaluation_failures_total:rate5m{id=\"${INSTANCE_ID})`\n : `sum(grafanacloud_instance_rule_evaluation_failures_total:rate5m)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n exprA,\n range: true,\n legendFormat: 'success',\n },\n {\n refId: 'B',\n exprB,\n range: true,\n legendFormat: 'failed',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of successful and failed alert rule evaluations')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) => b.matchFieldsWithName('failed').overrideColor(overrideToFixedColor('failed')))\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { ThresholdsMode } from '@grafana/data';\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getFiringCloudAlertsScene(datasource: DataSourceRef, panelTitle: string) {\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n instant: true,\n expr: 'sum by (alertstate) (ALERTS{alertstate=\"firing\"})',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The number of currently firing alert rule instances')\n .setData(query)\n .setThresholds({\n mode: ThresholdsMode.Absolute,\n steps: [\n {\n color: 'red',\n value: 0,\n },\n {\n color: 'red',\n value: 80,\n },\n ],\n })\n .setNoValue('0')\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getInstancesByStateScene(datasource: DataSourceRef, panelTitle: string) {\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr: 'sum by (alertstate) (ALERTS)',\n range: true,\n legendFormat: '{{state}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of firing and pending alert rule instances')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) => b.matchFieldsWithName('firing').overrideColor(overrideToFixedColor('firing')))\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getInstancesPercentageByStateScene(datasource: DataSourceRef, panelTitle: string) {\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr: 'sum by (alertstate) (ALERTS) / ignoring(alertstate) group_left sum(ALERTS)',\n range: true,\n legendFormat: '{{alertstate}}',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('See what percentage of your alert rules are firing versus pending')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setCustomFieldConfig('fillOpacity', 45)\n .setUnit('percentunit')\n .setMax(1)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOverrides((b) => b.matchFieldsWithName('firing').overrideColor(overrideToFixedColor('firing')))\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef, GraphDrawStyle, TooltipDisplayMode } from '@grafana/schema';\n\nimport { INSTANCE_ID, overrideToFixedColor, PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getMissedIterationsScene(datasource: DataSourceRef, panelTitle: string) {\n const expr = INSTANCE_ID\n ? `sum(grafanacloud_instance_rule_group_iterations_missed_total:rate5m{id=\"${INSTANCE_ID}\"})`\n : `sum(grafanacloud_instance_rule_group_iterations_missed_total:rate5m)`;\n\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr,\n range: true,\n legendFormat: 'missed',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.timeseries()\n .setTitle(panelTitle)\n .setDescription('The number of evaluations missed')\n .setData(query)\n .setCustomFieldConfig('drawStyle', GraphDrawStyle.Line)\n .setOption('tooltip', { mode: TooltipDisplayMode.Multi })\n .setOption('legend', { showLegend: false })\n .setOverrides((b) => b.matchFieldsWithName('missed').overrideColor(overrideToFixedColor('missed')))\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { PanelBuilders, SceneDataTransformer, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getMostFiredRulesScene(datasource: DataSourceRef, panelTitle: string) {\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n expr: 'topk(10, sum by(alertname) (ALERTS{alertstate=\"firing\"}))',\n instant: true,\n range: false,\n format: 'table',\n },\n ],\n });\n\n const transformation = new SceneDataTransformer({\n $data: query,\n transformations: [\n {\n id: 'organize',\n options: {\n excludeByName: {\n Time: true,\n },\n indexByName: {},\n renameByName: {\n Value: 'Number of fires',\n alertname: 'Alert Rule Name',\n },\n },\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.table()\n .setTitle(panelTitle)\n .setDescription('The alert rules that have fired the most')\n .setData(transformation)\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { ThresholdsMode } from '@grafana/data';\nimport { PanelBuilders, SceneFlexItem, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\n\nimport { PANEL_STYLES } from '../../../home/Insights';\nimport { InsightsRatingModal } from '../../RatingModal';\n\nexport function getPendingCloudAlertsScene(datasource: DataSourceRef, panelTitle: string) {\n const query = new SceneQueryRunner({\n datasource,\n queries: [\n {\n refId: 'A',\n instant: true,\n expr: 'sum by (alertstate) (ALERTS{alertstate=\"pending\"})',\n },\n ],\n });\n\n return new SceneFlexItem({\n ...PANEL_STYLES,\n body: PanelBuilders.stat()\n .setTitle(panelTitle)\n .setDescription('The number of currently pending alert rule instances')\n .setData(query)\n .setThresholds({\n mode: ThresholdsMode.Absolute,\n steps: [\n {\n color: 'yellow',\n value: 0,\n },\n {\n color: 'red',\n value: 80,\n },\n ],\n })\n .setNoValue('0')\n .setHeaderActions()\n .build(),\n });\n}\n","import React from 'react';\n\nimport { DataSourceInstanceSettings, DataSourceJsonData } from '@grafana/data';\nimport { getDataSourceSrv } from '@grafana/runtime';\nimport {\n EmbeddedScene,\n NestedScene,\n QueryVariable,\n SceneControlsSpacer,\n SceneFlexItem,\n SceneFlexLayout,\n SceneReactObject,\n SceneRefreshPicker,\n SceneTimePicker,\n SceneTimeRange,\n SceneVariableSet,\n VariableValueSelectors,\n} from '@grafana/scenes';\n\nimport { config } from '../../../../core/config';\nimport { SectionFooter } from '../insights/SectionFooter';\nimport { SectionSubheader } from '../insights/SectionSubheader';\nimport { getActiveGrafanaAlertsScene } from '../insights/grafana/Active';\nimport { getGrafanaInstancesByStateScene } from '../insights/grafana/AlertsByStateScene';\nimport { getGrafanaEvalSuccessVsFailuresScene } from '../insights/grafana/EvalSuccessVsFailuresScene';\nimport { getInstanceStatByStatusScene } from '../insights/grafana/InstanceStatusScene';\nimport { getGrafanaMissedIterationsScene } from '../insights/grafana/MissedIterationsScene';\nimport { getMostFiredInstancesScene } from '../insights/grafana/MostFiredInstancesTable';\nimport { getPausedGrafanaAlertsScene } from '../insights/grafana/Paused';\nimport { getGrafanaRulesByEvaluationScene } from '../insights/grafana/RulesByEvaluation';\nimport { getGrafanaRulesByEvaluationPercentageScene } from '../insights/grafana/RulesByEvaluationPercentage';\nimport { getAlertsByStateScene as getGrafanaAlertsByStateScene } from '../insights/grafana/alertmanager/AlertsByState';\nimport { getGrafanaAlertmanagerSilencesScene } from '../insights/grafana/alertmanager/SilencesByStateScene';\nimport { getAlertsByStateScene } from '../insights/mimir/AlertsByState';\nimport { getInvalidConfigScene } from '../insights/mimir/InvalidConfig';\nimport { getNotificationsScene } from '../insights/mimir/Notifications';\nimport { getSilencesScene } from '../insights/mimir/Silences';\nimport { getRuleGroupEvaluationDurationIntervalRatioScene } from '../insights/mimir/perGroup/RuleGroupEvaluationDurationIntervalRatioScene';\nimport { getRuleGroupEvaluationDurationScene } from '../insights/mimir/perGroup/RuleGroupEvaluationDurationScene';\nimport { getRuleGroupEvaluationsScene } from '../insights/mimir/perGroup/RuleGroupEvaluationsScene';\nimport { getRuleGroupIntervalScene } from '../insights/mimir/perGroup/RuleGroupIntervalScene';\nimport { getRulesPerGroupScene } from '../insights/mimir/perGroup/RulesPerGroupScene';\nimport { getEvalSuccessVsFailuresScene } from '../insights/mimir/rules/EvalSuccessVsFailuresScene';\nimport { getFiringCloudAlertsScene } from '../insights/mimir/rules/Firing';\nimport { getInstancesByStateScene } from '../insights/mimir/rules/InstancesByState';\nimport { getInstancesPercentageByStateScene } from '../insights/mimir/rules/InstancesPercentageByState';\nimport { getMissedIterationsScene } from '../insights/mimir/rules/MissedIterationsScene';\nimport { getMostFiredRulesScene } from '../insights/mimir/rules/MostFiredRules';\nimport { getPendingCloudAlertsScene } from '../insights/mimir/rules/Pending';\n\nexport interface DataSourceInformation {\n type: string;\n uid: string;\n settings: DataSourceInstanceSettings | undefined;\n}\nconst ashDs: DataSourceInformation = {\n type: 'loki',\n uid: 'grafanacloud-alert-state-history',\n settings: undefined,\n};\n\nconst cloudUsageDs: DataSourceInformation = {\n type: 'prometheus',\n uid: 'grafanacloud-usage',\n settings: undefined,\n};\n\nconst grafanaCloudPromDs: DataSourceInformation = {\n type: 'prometheus',\n uid: 'grafanacloud-prom',\n settings: undefined,\n};\n\nconst SERIES_COLORS = {\n alerting: 'red',\n firing: 'red',\n active: 'red',\n missed: 'red',\n failed: 'red',\n pending: 'yellow',\n nodata: 'blue',\n 'active evaluation': 'blue',\n normal: 'green',\n success: 'green',\n error: 'orange',\n};\n\nexport function overrideToFixedColor(key: keyof typeof SERIES_COLORS) {\n return {\n mode: 'fixed',\n fixedColor: SERIES_COLORS[key],\n };\n}\n\nexport const PANEL_STYLES = { minHeight: 300 };\n\nconst THIS_WEEK_TIME_RANGE = new SceneTimeRange({ from: 'now-1w', to: 'now' });\n\nconst namespace = config.bootData.settings.namespace;\n\nexport const INSTANCE_ID = namespace.includes('stack-') ? namespace.replace('stack-', '') : undefined;\n\nexport function getInsightsScenes() {\n const dataSourceSrv = getDataSourceSrv();\n\n [ashDs, cloudUsageDs, grafanaCloudPromDs].forEach((ds) => {\n ds.settings = dataSourceSrv.getInstanceSettings(ds.uid);\n });\n\n const categories = [];\n\n const showGrafanaManaged = ashDs.settings && cloudUsageDs.settings;\n const showGrafanaAlertmanager = Boolean(cloudUsageDs.settings);\n const showMimirAlertmanager = Boolean(cloudUsageDs.settings);\n const showMimirManaged = cloudUsageDs.settings && grafanaCloudPromDs.settings;\n const showMimirManagedPerGroup = Boolean(cloudUsageDs.settings);\n\n if (showGrafanaManaged) {\n categories.push(\n new SceneFlexItem({\n ySizing: 'content',\n body: getGrafanaManagedScenes(),\n })\n );\n }\n\n if (showGrafanaAlertmanager) {\n categories.push(\n new SceneFlexItem({\n ySizing: 'content',\n body: getGrafanaAlertmanagerScenes(),\n })\n );\n }\n\n if (showMimirManaged) {\n categories.push(\n new SceneFlexItem({\n ySizing: 'content',\n body: getMimirManagedRulesScenes(),\n })\n );\n }\n\n if (showMimirManagedPerGroup) {\n categories.push(\n new SceneFlexItem({\n ySizing: 'content',\n body: getMimirManagedRulesPerGroupScenes(),\n })\n );\n }\n\n if (showMimirAlertmanager) {\n categories.push(\n new SceneFlexItem({\n ySizing: 'content',\n body: getCloudScenes(),\n })\n );\n }\n\n return new EmbeddedScene({\n $timeRange: THIS_WEEK_TIME_RANGE,\n controls: [\n new SceneReactObject({\n component: SectionSubheader,\n props: { children:
Monitor the status of your system.
},\n }),\n new SceneControlsSpacer(),\n new SceneTimePicker({}),\n new SceneRefreshPicker({}),\n ],\n body: new SceneFlexLayout({\n direction: 'column',\n children: categories,\n }),\n });\n}\n\nfunction getGrafanaManagedScenes() {\n return new NestedScene({\n title: 'Grafana-managed alert rules',\n canCollapse: true,\n isCollapsed: false,\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexLayout({\n children: [\n getMostFiredInstancesScene(ashDs, 'Top 10 firing instances'),\n getActiveGrafanaAlertsScene(cloudUsageDs, 'Active rules'),\n getPausedGrafanaAlertsScene(cloudUsageDs, 'Paused rules'),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getGrafanaInstancesByStateScene(cloudUsageDs, 'Alert instances by state'),\n new SceneFlexLayout({\n height: '400px',\n direction: 'column',\n children: [\n new SceneFlexLayout({\n height: '400px',\n children: [\n getInstanceStatByStatusScene(\n cloudUsageDs,\n 'Firing instances',\n 'The number of currently firing alert rule instances',\n 'alerting'\n ),\n getInstanceStatByStatusScene(\n cloudUsageDs,\n 'Pending instances',\n 'The number of currently pending alert rule instances',\n 'pending'\n ),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getInstanceStatByStatusScene(\n cloudUsageDs,\n 'No data instances',\n 'The current number of alert rule instances in No data state',\n 'nodata'\n ),\n getInstanceStatByStatusScene(\n cloudUsageDs,\n 'Error instances',\n 'The current number of alert rule instances in Error state',\n 'error'\n ),\n ],\n }),\n ],\n }),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getGrafanaRulesByEvaluationScene(cloudUsageDs, 'Alert rule evaluation'),\n getGrafanaRulesByEvaluationPercentageScene(cloudUsageDs, '% of alert rule evaluation'),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getGrafanaEvalSuccessVsFailuresScene(cloudUsageDs, 'Evaluation success vs failures'),\n getGrafanaMissedIterationsScene(cloudUsageDs, 'Iterations missed per evaluation group'),\n ],\n }),\n ],\n }),\n new SceneReactObject({\n component: SectionFooter,\n }),\n ],\n }),\n });\n}\n\nfunction getGrafanaAlertmanagerScenes() {\n return new NestedScene({\n title: 'Grafana Alertmanager',\n canCollapse: true,\n isCollapsed: false,\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexLayout({\n children: [\n getGrafanaAlertsByStateScene(cloudUsageDs, 'Firing alerts by state'),\n // getGrafanaAlertmanagerNotificationsScene(cloudUsageDs, 'Notification delivery'),\n getGrafanaAlertmanagerSilencesScene(cloudUsageDs, 'Silences'),\n ],\n }),\n new SceneReactObject({\n component: SectionFooter,\n }),\n ],\n }),\n });\n}\n\nfunction getCloudScenes() {\n return new NestedScene({\n title: 'Mimir Alertmanager',\n canCollapse: true,\n isCollapsed: false,\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n component: SectionSubheader,\n props: { datasources: [cloudUsageDs] },\n }),\n }),\n new SceneFlexLayout({\n children: [\n getAlertsByStateScene(cloudUsageDs, 'Firing alerts by state'),\n getNotificationsScene(cloudUsageDs, 'Notification delivery'),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getSilencesScene(cloudUsageDs, 'Silences'),\n getInvalidConfigScene(cloudUsageDs, 'Invalid configuration'),\n ],\n }),\n new SceneReactObject({\n component: SectionFooter,\n }),\n ],\n }),\n });\n}\n\nfunction getMimirManagedRulesScenes() {\n return new NestedScene({\n title: 'Mimir-managed alert rules',\n canCollapse: true,\n isCollapsed: false,\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n component: SectionSubheader,\n props: { datasources: [grafanaCloudPromDs, cloudUsageDs] },\n }),\n }),\n new SceneFlexLayout({\n children: [\n getMostFiredRulesScene(grafanaCloudPromDs, 'Top 10 firing rules'),\n getFiringCloudAlertsScene(grafanaCloudPromDs, 'Firing instances'),\n getPendingCloudAlertsScene(grafanaCloudPromDs, 'Pending instances'),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getInstancesByStateScene(grafanaCloudPromDs, 'Firing and pending alert instances'),\n getInstancesPercentageByStateScene(grafanaCloudPromDs, '% of alert instances by state'),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getEvalSuccessVsFailuresScene(cloudUsageDs, 'Evaluation success vs failures'),\n getMissedIterationsScene(cloudUsageDs, 'Missed evaluations'),\n ],\n }),\n new SceneReactObject({\n component: SectionFooter,\n }),\n ],\n }),\n });\n}\n\nfunction getMimirManagedRulesPerGroupScenes() {\n const ruleGroupHandler = new QueryVariable({\n label: 'Rule Group',\n name: 'rule_group',\n datasource: cloudUsageDs,\n query: 'label_values(grafanacloud_instance_rule_group_rules,rule_group)',\n });\n\n return new NestedScene({\n title: 'Mimir-managed alert rules - per rule group',\n canCollapse: true,\n isCollapsed: false,\n body: new SceneFlexLayout({\n direction: 'column',\n children: [\n new SceneFlexItem({\n body: new SceneReactObject({\n component: SectionSubheader,\n props: { datasources: [cloudUsageDs] },\n }),\n }),\n new SceneFlexLayout({\n children: [\n getRuleGroupEvaluationsScene(cloudUsageDs, 'Rule group evaluation'),\n getRuleGroupIntervalScene(cloudUsageDs, 'Rule group interval'),\n ],\n }),\n new SceneFlexLayout({\n children: [\n getRuleGroupEvaluationDurationScene(cloudUsageDs, 'Rule group evaluation duration'),\n getRulesPerGroupScene(cloudUsageDs, 'Rules per group'),\n getRuleGroupEvaluationDurationIntervalRatioScene(cloudUsageDs, 'Evaluation duration / interval ratio'),\n ],\n }),\n new SceneReactObject({\n component: SectionFooter,\n }),\n ],\n }),\n $variables: new SceneVariableSet({\n variables: [ruleGroupHandler],\n }),\n controls: [new VariableValueSelectors({})],\n });\n}\n","import React, { useState } from 'react';\n\nimport { config } from '@grafana/runtime';\nimport { SceneApp, SceneAppPage } from '@grafana/scenes';\nimport { usePageNav } from 'app/core/components/Page/usePageNav';\nimport { PluginPageContext, PluginPageContextType } from 'app/features/plugins/components/PluginPageContext';\n\nimport { isLocalDevEnv, isOpenSourceEdition } from '../utils/misc';\n\nimport { getOverviewScene, WelcomeHeader } from './GettingStarted';\nimport { getInsightsScenes } from './Insights';\n\nlet homeApp: SceneApp | undefined;\n\nexport function getHomeApp(insightsEnabled: boolean) {\n if (homeApp) {\n return homeApp;\n }\n\n if (insightsEnabled) {\n homeApp = new SceneApp({\n pages: [\n new SceneAppPage({\n title: 'Alerting',\n subTitle: ,\n url: '/alerting',\n hideFromBreadcrumbs: true,\n tabs: [\n new SceneAppPage({\n title: 'Insights',\n url: '/alerting/home/insights',\n getScene: getInsightsScenes,\n }),\n new SceneAppPage({\n title: 'Get started',\n url: '/alerting/home/overview',\n getScene: getOverviewScene,\n }),\n ],\n }),\n ],\n });\n } else {\n homeApp = new SceneApp({\n pages: [\n new SceneAppPage({\n title: 'Alerting',\n subTitle: ,\n url: '/alerting',\n hideFromBreadcrumbs: true,\n getScene: getOverviewScene,\n }),\n ],\n });\n }\n\n return homeApp;\n}\n\nexport default function Home() {\n const insightsEnabled =\n (!isOpenSourceEdition() || isLocalDevEnv()) && Boolean(config.featureToggles.alertingInsights);\n\n const appScene = getHomeApp(insightsEnabled);\n\n const sectionNav = usePageNav('alerting')!;\n const [pluginContext] = useState({ sectionNav });\n\n return (\n \n \n \n );\n}\n"],"names":["getOverviewScene","GettingStarted","showWelcomeHeader","theme","styles","getWelcomePageStyles","WelcomeHeader","ContentBox","Stack","ArrowLink","className","getWelcomeHeaderStyles","WelcomeCTABox","title","description","href","hrefText","getWelcomeCTAButtonStyles","children","getContentBoxStyles","getArrowLinkStyles","Icon","SectionFooter","getStyles","DataSourcesInfo","datasources","displayDs","ds","SectionSubheader","InsightsRatingModal","panel","showModal","setShowModal","onDismiss","onButtonClick","useful","modal","Modal","Button","menu","Menu","Dropdown","IconButton","getActiveGrafanaAlertsScene","datasource","panelTitle","expr","INSTANCE_ID","query","PANEL_STYLES","getGrafanaInstancesByStateScene","transformation","b","overrideToFixedColor","getGrafanaEvalSuccessVsFailuresScene","exprA","exprB","getInstanceStatByStatusScene","panelDescription","status","getGrafanaMissedIterationsScene","legendTransformation","source","map","data","frame","field","matches","getMostFiredInstancesScene","createRuleLink","value","index","ruleUID","RuleLink","ruleLinkTransformation","Link","getPausedGrafanaAlertsScene","getGrafanaRulesByEvaluationScene","getGrafanaRulesByEvaluationPercentageScene","getAlertsByStateScene","getGrafanaAlertmanagerSilencesScene","getInvalidConfigScene","getNotificationsScene","getSilencesScene","getRuleGroupEvaluationDurationIntervalRatioScene","getRuleGroupEvaluationDurationScene","getRuleGroupEvaluationsScene","getRuleGroupIntervalScene","getRulesPerGroupScene","getEvalSuccessVsFailuresScene","getFiringCloudAlertsScene","getInstancesByStateScene","getInstancesPercentageByStateScene","getMissedIterationsScene","getMostFiredRulesScene","getPendingCloudAlertsScene","ashDs","cloudUsageDs","grafanaCloudPromDs","SERIES_COLORS","key","THIS_WEEK_TIME_RANGE","namespace","getInsightsScenes","dataSourceSrv","categories","showGrafanaManaged","showGrafanaAlertmanager","showMimirAlertmanager","showMimirManaged","showMimirManagedPerGroup","getGrafanaManagedScenes","getGrafanaAlertmanagerScenes","getMimirManagedRulesScenes","getMimirManagedRulesPerGroupScenes","getCloudScenes","ruleGroupHandler","homeApp","getHomeApp","insightsEnabled","Home","config","appScene","sectionNav","usePageNav","pluginContext","PluginPageContext"],"sourceRoot":""}