Yagd

super simple dashboard framework in PHP
Alternatives To Yagd
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Apexcharts.js12,382377260a day ago188August 22, 2022261mitJavaScript
📊 Interactive JavaScript Charts built on SVG
Vizzu Lib1,671
a day ago15July 14, 202225apache-2.0JavaScript
Library for animated data visualizations and data stories.
Chronograf1,41216 days ago43April 01, 202229otherTypeScript
Open source monitoring and visualization UI for the TICK stack
Insights99112a year ago71February 23, 202066mitJavaScript
Open Source Self-Hosted Business Intelligence Platform
Esp Dash771
22 days ago12gpl-3.0C++
Blazing fast library to create a functional dashboard for ESP8266 and ESP32
Gdash767
3 years ago27apache-2.0CSS
A dashboard for Graphite
Grafterm759
9 months ago1December 04, 20198apache-2.0Go
Metrics dashboards on terminal (a grafana inspired terminal version)
Ipython Dashboard635
43 years ago6January 01, 201621gpl-2.0Python
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.
Krane580
5 hours ago29apache-2.0Ruby
Kubernetes RBAC static analysis & visualisation tool
Grafana Dash Gen429153 months ago14September 24, 20207mitJavaScript
grafana dash dash dash gen
Alternatives To Yagd
Select To Compare


Alternative Project Comparisons
Readme

yagd

Build Status Coverage Status Code Climate Latest Stable Version Latest Unstable Version MIT license

Overview

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.

Look

yagd look

Requirements

  • PHP >= 5.5
  • Graphite

Installation

  • in your dashboards repo, run: composer require mrtazz/yagd
  • copy config.example.php to config.php and adapt it
  • write php to create your dashboards

Usage examples

Generic dashboards

There 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);

Display CollectD host data

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();

Inject a select box into the navbar

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.

Popular Dashboard Projects
Popular Graph Projects
Popular Web User Interface Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Php
Graph
Hosts
Dashboard
Graphite