Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
new grafana.Target(getTarget("membership.membership-update-faulty"))
.sumSeries().alias('faulty').color('red')
/* eslint-enable max-len */
]
}));
row.addPanel(new grafana.Panels.Graph({
title: 'Checksum Compute Times',
span: 4,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget("membership.compute-checksum-p95"))
.averageSeries().alias('p95'),
new grafana.Target(getTarget("membership.compute-checksum-p99"))
.averageSeries().alias('p99'),
new grafana.Target(getTarget("membership.compute-checksum-upper"))
.averageSeries().alias('upper')
/* eslint-enable max-len */
]
}));
return row;
}
function createDisseminationRow() {
var row = new grafana.Row();
row.state.title = 'DISSEMINATION';
row.state.showTitle = true;
row.addPanel(new grafana.Panels.SingleStat({
title: 'Max Piggyback',
span: 4,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget('dissemination.max-piggyback'))
.maxSeries().alias('total')
/* eslint-enable max-len */
]
}));
return row;
}
new grafana.Target(getTarget("membership.membership-update-alive"))
.sumSeries().alias('alive').color('green'),
new grafana.Target(getTarget("membership.membership-update-suspect"))
.sumSeries().alias('suspect').color('yellow'),
new grafana.Target(getTarget("membership.membership-update-faulty"))
.sumSeries().alias('faulty').color('red')
/* eslint-enable max-len */
]
}));
row.addPanel(new grafana.Panels.Graph({
title: 'Checksum Compute Times',
span: 4,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget("membership.compute-checksum-p95"))
.averageSeries().alias('p95'),
new grafana.Target(getTarget("membership.compute-checksum-p99"))
.averageSeries().alias('p99'),
new grafana.Target(getTarget("membership.compute-checksum-upper"))
.averageSeries().alias('upper')
/* eslint-enable max-len */
]
}));
return row;
}
function createBootstrapRow() {
var row = new grafana.Row();
row.state.title = 'BOOTSTRAP';
row.state.showTitle = true;
row.addPanel(new grafana.Panels.Graph({
title: 'Join Times',
span: 12,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget('bootstrap.join-p95'))
.percentileOfSeries(50).alias('p95')
/* eslint-enable max-len */
],
legend: {
show: false
}
}));
function createMembershipRow() {
var row = new grafana.Row();
row.state.title = 'MEMBERSHIP';
row.state.showTitle = true;
row.addPanel(new grafana.Panels.Graph({
title: 'Full-syncs',
span: 4,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget("membership.full-sync"))
.sumSeries().alias('total')
/* eslint-enable max-len */
]
}));
row.addPanel(lineGraph({
title: 'Updates',
function createDisseminationRow() {
var row = new grafana.Row();
row.state.title = 'DISSEMINATION';
row.state.showTitle = true;
row.addPanel(new grafana.Panels.SingleStat({
title: 'Max Piggyback',
span: 4,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget('dissemination.max-piggyback'))
.maxSeries().alias('total')
/* eslint-enable max-len */
]
}));
return row;
}
// We don't need to go deeper than 100, prevents circular substitution
var i = 0;
while(i < 100 && !doSubsitutePossible(vars)) {
i++;
}
}
var templateVariables = config.get('gen-dashboard.variable');
substituteVariables(templateVariables);
function getTarget(path) {
return strformat(config.get('gen-dashboard.template.' + path),
templateVariables);
}
var dashboard = new grafana.Dashboard({
title: config.get('gen-dashboard.dashboard-title')
});
function lineGraph(opts) {
var graph = new grafana.Panels.Graph(opts);
graph.state.fill = 0;
return graph;
}
function createSystemRow() {
var row = new grafana.Row();
row.state.title = 'SYSTEM';
row.state.showTitle = true;
row.addPanel(lineGraph({
export function createDashboard(dbdata: GrafanaDBData) {
const rows = dbdata.rows.map(conf => {
const row = new Grafana.Row({title: conf.title});
conf.panels.forEach(panel => row.addPanel(newPanel(panel)));
return row;
});
const db = new Grafana.Dashboard({
schemaVersion: 6,
title: dbdata.title,
templating: dbdata.templates,
description: dbdata.description,
rows,
});
db.state.editable = false;
// Necessary to make custom templates display "all" option
for (const template of db.state?.templating?.list) {
if (template.type === 'custom' && template.includeAll) {
template.options.unshift({selected: true, text: 'All', value: '$__all'});
}
template.current = template.options[0];
}
return db;
export function newPanel(params: PanelParams) {
const pan = new Grafana.Panels.Graph({
title: params.title,
span: 6,
datasource: 'default',
});
// Have to add this after to avoid grafana-dash-gen from forcing the target
// into a Graphite format
pan.state.targets = params.targets;
return pan;
}
function createBootstrapRow() {
var row = new grafana.Row();
row.state.title = 'BOOTSTRAP';
row.state.showTitle = true;
row.addPanel(new grafana.Panels.Graph({
title: 'Join Times',
span: 12,
targets: [
/* eslint-disable max-len */
new grafana.Target(getTarget('bootstrap.join-p95'))
.percentileOfSeries(50).alias('p95')
/* eslint-enable max-len */
],
legend: {
show: false
}
}));
return row;
}