Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Apexcharts.js | 12,382 | 377 | 260 | a day ago | 188 | August 22, 2022 | 261 | mit | JavaScript | |
📊 Interactive JavaScript Charts built on SVG | ||||||||||
Vizzu Lib | 1,671 | a day ago | 15 | July 14, 2022 | 25 | apache-2.0 | JavaScript | |||
Library for animated data visualizations and data stories. | ||||||||||
Chronograf | 1,412 | 1 | 6 days ago | 43 | April 01, 2022 | 29 | other | TypeScript | ||
Open source monitoring and visualization UI for the TICK stack | ||||||||||
Insights | 991 | 1 | 2 | a year ago | 71 | February 23, 2020 | 66 | mit | JavaScript | |
Open Source Self-Hosted Business Intelligence Platform | ||||||||||
Esp Dash | 771 | 22 days ago | 12 | gpl-3.0 | C++ | |||||
Blazing fast library to create a functional dashboard for ESP8266 and ESP32 | ||||||||||
Gdash | 767 | 3 years ago | 27 | apache-2.0 | CSS | |||||
A dashboard for Graphite | ||||||||||
Grafterm | 759 | 9 months ago | 1 | December 04, 2019 | 8 | apache-2.0 | Go | |||
Metrics dashboards on terminal (a grafana inspired terminal version) | ||||||||||
Ipython Dashboard | 635 | 4 | 3 years ago | 6 | January 01, 2016 | 21 | gpl-2.0 | Python | ||
A stand alone, light-weight web server for building, sharing graphs created in ipython. Build for data science, data analysis guys. Aiming at building an interactive visualization, collaborated dashboard, and real-time streaming graph. | ||||||||||
Krane | 580 | 5 hours ago | 29 | apache-2.0 | Ruby | |||||
Kubernetes RBAC static analysis & visualisation tool | ||||||||||
Grafana Dash Gen | 429 | 1 | 5 | 3 months ago | 14 | September 24, 2020 | 7 | mit | JavaScript | |
grafana dash dash dash gen |
Yet Another Graphite Dashboard - because why not? It's heavily inspired by the Etsy dashboard framework but only provides a very small subset of features. If you have a lot of hosts or need advanced features I'd recommend checking that out.
composer require mrtazz/yagd
config.example.php
to config.php
and adapt itThere is a generic Page.php
class included which can just include all
Graphite graphs you have in an array called $metrics
like this:
<?php
$metrics = array(
'carbon.agents.foo_example_com-a.committedPoints',
'carbon.agents.foo_example_com-a.cpuUsage',
'carbon.agents.foo_example_com-a.avgUpdateTime',
'carbon.agents.foo_example_com-a.creates',
'carbon.agents.foo_example_com-a.errors',
'carbon.agents.foo_example_com-a.metricsReceived',
'carbon.agents.foo_example_com-a.pointsPerUpdate',
'carbon.agents.foo_example_com-a.updateOperations',
);
$page = new Page($CONFIG);
$page->renderFullPageWithMetrics($metrics);
If you are using collectd to gather system level graphs you can draw basic information onto a dashboard like this:
Configure hosts in your config.php
$CONFIG['hosts'] = [
"foo.example.com" => [
"cpus" => 2,
"filesystems" => [ 'root', 'var', ]
],
"additional_metrics" => [
"disk temp" => [
"disk temperature" => "collectd.foo_example_com.disktemp-ada*.current",
]
],
]
];
And then drop something like this into e.g. htdocs/hosts.php
:
<?php
require __DIR__ . '/../vendor/autoload.php';
include_once("../config.php");
use Yagd\CollectdHost;
use Yagd\Page;
$page = new Page($CONFIG);
echo $page->getHeader($CONFIG["title"],
$CONFIG["navitems"]);
foreach($CONFIG["hosts"] as $host => $data) {
$fss = empty($data["filesystems"]) ? [] : $data["filesystems"];
$server = new CollectdHost($host, $data["cpus"], $fss,
$data["interfaces"]);
$server->setGraphiteConfiguration($CONFIG["graphite"]["host"]);
echo "<h2> {$host} </h2>";
$server->render();
}
echo $page->getFooter();
For the host page for example you might wanna have an easy way to only show one host. For that you can inject a select box into the header navbar like this:
<?php
$selectbox = "";
$selectbox .= "<form method='get' action='hosts.php' style='margin-top: 15px'class='pull-right'>";
$selectbox .= " <select name='hostname' onchange='this.form.submit()'>";
foreach ($CONFIG["hosts"] as $host => $data) {
$selected = ($_GET["hostname"] == $host) ? "selected" : "";
$selectbox .= "<option value='{$host}' {$selected}>{$host}</option>";
}
$selectbox .= "</select>";
$selectbox .= "</form>";
$page = new Page($CONFIG);
echo $page->getHeader($CONFIG["title"],
$CONFIG["navitems"],
$selectbox);
if (empty($_GET["hostname"])) {
$hosts = $CONFIG["hosts"];
} else {
$hosts = [ $_GET["hostname"] => $CONFIG["hosts"][$_GET["hostname"]] ];
}
This will show the content of $selectbox
in the header and only show the
actually selected host (if one was selected) on the page.