Skip to content

Commit

Permalink
mgr/dashboard: return Prometheus alert groups, too
Browse files Browse the repository at this point in the history
Fixes: https://tracker.ceph.com/issues/42877

Signed-off-by: Patrick Seidensal <[email protected]>
  • Loading branch information
p-se committed Dec 3, 2019
1 parent 0423dae commit 4917279
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 15 deletions.
7 changes: 1 addition & 6 deletions src/pybind/mgr/dashboard/controllers/prometheus.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,7 @@ def list(self, **params):

@RESTController.Collection(method='GET')
def rules(self, **params):
data = self.prometheus_proxy('GET', '/rules', params)
configs = data['groups']
rules = []
for config in configs:
rules += config['rules']
return rules
return self.prometheus_proxy('GET', '/rules', params)

@RESTController.Collection(method='GET', path='/silences')
def get_silences(self, **params):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,22 @@ describe('SilenceFormComponent', () => {
);
ifPrometheusSpy = spyOn(prometheusService, 'ifPrometheusConfigured').and.callFake((fn) => fn());
rulesSpy = spyOn(prometheusService, 'getRules').and.callFake(() =>
of([
prometheus.createRule('alert0', 'someSeverity', [prometheus.createAlert('alert0')]),
prometheus.createRule('alert1', 'someSeverity', []),
prometheus.createRule('alert2', 'someOtherSeverity', [prometheus.createAlert('alert2')])
])
of({
groups: [
{
file: '',
interval: 0,
name: '',
rules: [
prometheus.createRule('alert0', 'someSeverity', [prometheus.createAlert('alert0')]),
prometheus.createRule('alert1', 'someSeverity', []),
prometheus.createRule('alert2', 'someOtherSeverity', [
prometheus.createAlert('alert2')
])
]
}
]
})
);

router = TestBed.get(Router);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,12 @@ export class SilenceFormComponent {
this.prometheusService.ifPrometheusConfigured(
() =>
this.prometheusService.getRules().subscribe(
(rules) => (this.rules = rules),
(groups) => {
this.rules = groups['groups'].reduce(
(acc, group) => _.concat<PrometheusRule>(acc, group.rules),
[]
);
},
() => {
this.prometheusService.disablePrometheusConfig();
this.rules = [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { AlertmanagerSilence } from '../models/alertmanager-silence';
import {
AlertmanagerAlert,
AlertmanagerNotification,
PrometheusRule
PrometheusRuleGroup
} from '../models/prometheus-alerts';
import { ApiModule } from './api.module';
import { SettingsService } from './settings.service';
Expand Down Expand Up @@ -48,8 +48,8 @@ export class PrometheusService {
return this.http.get<AlertmanagerSilence[]>(`${this.baseURL}/silences`, { params });
}

getRules(params = {}): Observable<PrometheusRule[]> {
return this.http.get<PrometheusRule[]>(`${this.baseURL}/rules`, { params });
getRules(params = {}): Observable<{ groups: PrometheusRuleGroup[] }> {
return this.http.get<{ groups: PrometheusRuleGroup[] }>(`${this.baseURL}/rules`, { params });
}

setSilence(silence: AlertmanagerSilence) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ class PrometheusAlert {
value: number;
}

export interface PrometheusRuleGroup {
name: string;
file: string;
rules: PrometheusRule[];
}

export class PrometheusRule {
name: string; // => PrometheusAlertLabels.alertname
query: string;
Expand Down

0 comments on commit 4917279

Please sign in to comment.