mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 07:01:49 +08:00
Alerting: Wrap legacy alerting metrics with legacy_
(#48190)
* Alerting: Wrap legacy alerting metrics with `legacy_`
This commit is contained in:
@ -93,7 +93,8 @@ func ProvideAlertEngine(renderer rendering.Service, requestValidator models.Plug
|
|||||||
|
|
||||||
// Run starts the alerting service background process.
|
// Run starts the alerting service background process.
|
||||||
func (e *AlertEngine) Run(ctx context.Context) error {
|
func (e *AlertEngine) Run(ctx context.Context) error {
|
||||||
e.ticker = NewTicker(clock.New(), 1*time.Second, metrics.NewTickerMetrics(prometheus.DefaultRegisterer))
|
reg := prometheus.WrapRegistererWithPrefix("legacy_", prometheus.DefaultRegisterer)
|
||||||
|
e.ticker = NewTicker(clock.New(), 1*time.Second, metrics.NewTickerMetrics(reg))
|
||||||
alertGroup, ctx := errgroup.WithContext(ctx)
|
alertGroup, ctx := errgroup.WithContext(ctx)
|
||||||
alertGroup.Go(func() error { return e.alertingTicker(ctx) })
|
alertGroup.Go(func() error { return e.alertingTicker(ctx) })
|
||||||
alertGroup.Go(func() error { return e.runJobDispatcher(ctx) })
|
alertGroup.Go(func() error { return e.runJobDispatcher(ctx) })
|
||||||
|
@ -137,7 +137,14 @@ func TestTicker(t *testing.T) {
|
|||||||
|
|
||||||
expectedMetric := fmt.Sprintf(expectedMetricFmt, interval.Seconds(), 0, float64(expectedTick.UnixNano())/1e9)
|
expectedMetric := fmt.Sprintf(expectedMetricFmt, interval.Seconds(), 0, float64(expectedTick.UnixNano())/1e9)
|
||||||
|
|
||||||
require.NoError(t, testutil.GatherAndCompare(registry, bytes.NewBufferString(expectedMetric), "grafana_alerting_ticker_last_consumed_tick_timestamp_seconds", "grafana_alerting_ticker_next_tick_timestamp_seconds", "grafana_alerting_ticker_interval_seconds"))
|
errs := make(map[string]error, 1)
|
||||||
|
require.Eventuallyf(t, func() bool {
|
||||||
|
err := testutil.GatherAndCompare(registry, bytes.NewBufferString(expectedMetric), "grafana_alerting_ticker_last_consumed_tick_timestamp_seconds", "grafana_alerting_ticker_next_tick_timestamp_seconds", "grafana_alerting_ticker_interval_seconds")
|
||||||
|
if err != nil {
|
||||||
|
errs["error"] = err
|
||||||
|
}
|
||||||
|
return err == nil
|
||||||
|
}, 1*time.Second, 100*time.Millisecond, "failed to wait for metrics to match expected values:\n%v", errs)
|
||||||
|
|
||||||
clk.Add(interval)
|
clk.Add(interval)
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
@ -147,6 +154,13 @@ func TestTicker(t *testing.T) {
|
|||||||
actual := readChanOrFail(t, ctx, ticker.C)
|
actual := readChanOrFail(t, ctx, ticker.C)
|
||||||
|
|
||||||
expectedMetric = fmt.Sprintf(expectedMetricFmt, interval.Seconds(), float64(actual.UnixNano())/1e9, float64(expectedTick.Add(interval).UnixNano())/1e9)
|
expectedMetric = fmt.Sprintf(expectedMetricFmt, interval.Seconds(), float64(actual.UnixNano())/1e9, float64(expectedTick.Add(interval).UnixNano())/1e9)
|
||||||
require.NoError(t, testutil.GatherAndCompare(registry, bytes.NewBufferString(expectedMetric), "grafana_alerting_ticker_last_consumed_tick_timestamp_seconds", "grafana_alerting_ticker_next_tick_timestamp_seconds", "grafana_alerting_ticker_interval_seconds"))
|
|
||||||
|
require.Eventuallyf(t, func() bool {
|
||||||
|
err := testutil.GatherAndCompare(registry, bytes.NewBufferString(expectedMetric), "grafana_alerting_ticker_last_consumed_tick_timestamp_seconds", "grafana_alerting_ticker_next_tick_timestamp_seconds", "grafana_alerting_ticker_interval_seconds")
|
||||||
|
if err != nil {
|
||||||
|
errs["error"] = err
|
||||||
|
}
|
||||||
|
return err == nil
|
||||||
|
}, 1*time.Second, 100*time.Millisecond, "failed to wait for metrics to match expected values:\n%v", errs)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -46,9 +46,12 @@ Scopes must have an order to ensure consistency and ease of search, this helps u
|
|||||||
## Grafana Alerting - main / unreleased
|
## Grafana Alerting - main / unreleased
|
||||||
|
|
||||||
- [CHANGE] Prometheus Compatible API: Use float-like values for `api/prometheus/grafana/api/v1/alerts` and `api/prometheus/grafana/api/v1/rules` instead of the evaluation string #47216
|
- [CHANGE] Prometheus Compatible API: Use float-like values for `api/prometheus/grafana/api/v1/alerts` and `api/prometheus/grafana/api/v1/rules` instead of the evaluation string #47216
|
||||||
- [BUGFIX] (Legacy) Templates: Parse notification templates using all the matches of the alert rule when going from `Alerting` to `OK` in legacy alerting #47355
|
|
||||||
- [BUGFIX] Scheduler: Fix state manager to support OK option of `AlertRule.ExecErrState` #47670
|
|
||||||
- [ENHANCEMENT] Templates: Enable the use of classic condition values in templates #46971
|
|
||||||
- [ENHANCEMENT] Scheduler: ticker expose new metrics `grafana_alerting_ticker_last_consumed_tick_timestamp_seconds`, `grafana_alerting_ticker_next_tick_timestamp_seconds`, `grafana_alerting_ticker_interval_seconds` #47828
|
|
||||||
- [CHANGE] Notification URL points to alert view page instead of alert edit page. #47752
|
- [CHANGE] Notification URL points to alert view page instead of alert edit page. #47752
|
||||||
- [FEATURE] Indicate whether routes are provisioned when GETting Alertmanager configuration #47857
|
- [FEATURE] Indicate whether routes are provisioned when GETting Alertmanager configuration #47857
|
||||||
|
- [BUGFIX] (Legacy) Templates: Parse notification templates using all the matches of the alert rule when going from `Alerting` to `OK` in legacy alerting #47355
|
||||||
|
- [BUGFIX] Scheduler: Fix state manager to support OK option of `AlertRule.ExecErrState` #47670
|
||||||
|
- [ENHANCEMENT] Templates: Enable the use of classic condition values in templates #46971
|
||||||
|
- [ENHANCEMENT] Scheduler: Ticker expose new metrics. In legacy, metrics are prefixed with `legacy_` #47828, #48190
|
||||||
|
- `grafana_alerting_ticker_last_consumed_tick_timestamp_seconds`
|
||||||
|
- `grafana_alerting_ticker_next_tick_timestamp_seconds`
|
||||||
|
- `grafana_alerting_ticker_interval_seconds`
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
// Libraries
|
// Libraries
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { connect, ConnectedProps } from 'react-redux';
|
import { connect, ConnectedProps } from 'react-redux';
|
||||||
import { useTheme2 } from '@grafana/ui';
|
|
||||||
|
|
||||||
|
import { useTheme2 } from '@grafana/ui';
|
||||||
// Types
|
// Types
|
||||||
import { ExploreItemState, StoreState } from 'app/types';
|
import { ExploreItemState, StoreState } from 'app/types';
|
||||||
import { ExploreId } from 'app/types/explore';
|
import { ExploreId } from 'app/types/explore';
|
||||||
|
Reference in New Issue
Block a user