@studion/infra-code-blocks
Version:
Studion common infra components
78 lines (77 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSloDashboard = createSloDashboard;
const merge_with_defaults_1 = require("../../../shared/merge-with-defaults");
const builder_1 = require("./builder");
const availability_1 = require("../panels/availability");
const success_rate_1 = require("../panels/success-rate");
const latency_1 = require("../panels/latency");
const defaults = {
target: 0.99,
window: '30d',
shortWindow: '5m',
targetLatency: 250,
dashboardConfig: {},
};
function createSloDashboard(config) {
const argsWithDefaults = (0, merge_with_defaults_1.mergeWithDefaults)(defaults, config);
const { target, window, shortWindow, targetLatency, ampNamespace, dataSourceName, filter, } = argsWithDefaults;
return new builder_1.GrafanaDashboardBuilder(config.name)
.withConfig(argsWithDefaults.dashboardConfig)
.withTitle(argsWithDefaults.title)
.addPanel((0, availability_1.createAvailabilityPanel)({ target, window, ampNamespace, dataSourceName }))
.addPanel((0, availability_1.createAvailabilityBurnRatePanel)({
target,
window,
ampNamespace,
dataSourceName,
}))
.addPanel((0, success_rate_1.createSuccessRatePanel)({
target,
window,
filter,
ampNamespace,
dataSourceName,
}))
.addPanel((0, success_rate_1.createSuccessRateTimeSeriesPanel)({
shortWindow,
filter,
ampNamespace,
dataSourceName,
}))
.addPanel((0, success_rate_1.createSuccessRateBurnRatePanel)({
target,
filter,
ampNamespace,
dataSourceName,
}))
.addPanel((0, latency_1.createLatencyPanel)({
target,
window,
targetLatency,
filter,
ampNamespace,
dataSourceName,
}))
.addPanel((0, latency_1.createLatencyPercentilePanel)({
target,
shortWindow,
filter,
ampNamespace,
dataSourceName,
}))
.addPanel((0, latency_1.createLatencyPercentagePanel)({
targetLatency,
shortWindow,
filter,
ampNamespace,
dataSourceName,
}))
.addPanel((0, latency_1.createLatencyBurnRatePanel)({
target,
targetLatency,
ampNamespace,
dataSourceName,
}))
.build();
}