Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

grafana dash dash dash gen

License

NotificationsYou must be signed in to change notification settings

uber/grafana-dash-gen

Repository files navigation

Node.js CI

A collection of utility classes to construct and publish grafana graphs. The library is built ground up to incorporate grafana terminologies.

  • Dashboard: Represents the final dashboard that is displayed.
  • Row: A row in grafana. Dashboard consists or many rows.
  • Panel: A visual display item. A panel could be a graph, single stat or others. A row consists of many panels.
  • Target: A dot separated graphite string. E.g, a.b.count. A Panel consists of many targets.
  • Annotations: Lined markers that will annotate a graph (panel). A Dashboard can have annotations added to it.
  • Templates: Variables that can be included in the state. E.g, a.$dc.b.count (to switch between datacenters). A Dashboard can have templates added to it.

Alt text

Code to generate the dashboard

You will be able to generate and publish a grafana graph using the following steps.

Step 1: Configure grafana

if you would like grafana to publish your dashboard you need this step. If you do not need grafana to publish your dashboard, you can skip this step.

constgrafana=require('grafana-dash-gen');constRow=grafana.Row;constDashboard=grafana.Dashboard;constPanels=grafana.Panels;constTarget=grafana.Target;constTemplates=grafana.Templates;constAlert=grafana.Alert;constCondition=grafana.Condition;grafana.configure({url:'https://your.grafana.com/elasticsearch/grafana-dash/dashboard/',cookie:'auth-openid=someidhere'});

Step 2: Create a dashboard

constdashboard=newDashboard({title:'Api dashboard'});

(or) Below is an example of a dashboard with a custom slug, templatesdc andsmoothing and annotations.

constdashboard=newDashboard({title:'Api dashboard',slug:'api',templating:[{name:'dc',options:['dc1','dc2']},{name:'smoothing',options:['30min','10min','5min','2min','1min']}],annotations:[{name:'Deploy',target:'stats.$dc.production.deploy'}]});

If you do not wish to have any templates and annotations

Step 3: Create a new row

As said abolve, grafana dashboard contains a number of rows.

constrow=newRow();

Step 4: Create graphs to add to the row

There are two ways to add the graph to a row. Pass it while a graph is created as below

constpanel=newPanels.Graph({title:'api req/sec',span:5,targets:[newTarget('api.statusCode.*').transformNull(0).sum().hitcount('1seconds').scale(0.1).alias('rps')],row:row,dashboard:dashboard});

(or) add it in a separate step

constpanel=newPanels.Graph({title:'api req/sec',span:5,targets:[newTarget('api.statusCode.*').transformNull(0).sum().hitcount('1seconds').scale(0.1).alias('rps')]});row.addPanel(panel);

If you would like to create a full width single stat (as in the image) the code is below. Notice how we create a new row on the fly.

constrequestVolume=newPanels.SingleStat({title:'Current Request Volume',postfix:'req/sec',targets:[newTarget('stats.$dc.counts').sum().scale(0.1)],row:newRow(),dashboard:dashboard});

Step 5: Create an alert and add it to the graph

Alerts are optional. An alert is set on a target, each target added to the panel receives a refId of 'A', 'B', ..., 'Z'.

constconditionOnRequestLowVolume=newCondition().onQuery('A').withEvaluator(1,'lt').withReducer('max');constalert=newAlert({name:'Low volume of requests'});alert.addCondition(conditionOnRequestLowVolume);// ORconstalert=newAlert({name:'Low volume of requests'}).addCondition(conditionOnRequestLowVolume);requestVolume.addAlert(alert);

It is also possible to add an alert by passing it to the Graph constructor

constgraphWithAnAlert=newGraph({alert:YOUR_ALERT_OBJECT});

Step 6: Publish the graph

grafana.publish(dashboard);

to generate the json and not publish use

console.log(JSON.stringify(dashboard.generate()));

A complete example of a dashboard is provided in example.js


Installation

npm install grafana-dash-gen

Tests

npm test

Contributors

  • Evan Culver
  • Madan Thangavelu

MIT Licenced

About

grafana dash dash dash gen

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors24


[8]ページ先頭

©2009-2025 Movatter.jp