tessera - graphing dashboard
* nginx vhost * uwsgi app server * dashboards
This commit is contained in:
parent
8f4eb6de1f
commit
6d154a3c89
|
@ -0,0 +1,7 @@
|
||||||
|
# Tessera
|
||||||
|
Tessera is a nice JS dashboard
|
||||||
|
|
||||||
|
# Prerequisites
|
||||||
|
* uwsgi
|
||||||
|
* nginx and separate vhost or port. Tessera does not run nice from subdir
|
||||||
|
* python-virtualenv
|
|
@ -0,0 +1,272 @@
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"title": "Internet Connectivity",
|
||||||
|
"category": "Data",
|
||||||
|
"summary": "",
|
||||||
|
"description": "",
|
||||||
|
"creation_date": "2015-09-20T14:47:17.870112Z",
|
||||||
|
"last_modified_date": "2015-11-07T20:58:59.943634Z",
|
||||||
|
"imported_from": null,
|
||||||
|
"tags": [],
|
||||||
|
"definition": {
|
||||||
|
"options": {},
|
||||||
|
"item_type": "dashboard_definition",
|
||||||
|
"item_id": "d3",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Uplink",
|
||||||
|
"item_type": "section",
|
||||||
|
"item_id": "d4",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "row",
|
||||||
|
"item_id": "d27",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d28",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "heading",
|
||||||
|
"item_id": "d29",
|
||||||
|
"text": "TX",
|
||||||
|
"level": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d30",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "heading",
|
||||||
|
"item_id": "d31",
|
||||||
|
"text": "RX",
|
||||||
|
"level": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "row",
|
||||||
|
"item_id": "d9",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d10",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Peak Rate",
|
||||||
|
"item_type": "jumbotron_singlestat",
|
||||||
|
"item_id": "d11",
|
||||||
|
"query": "uplink_tx",
|
||||||
|
"format": ",.3s",
|
||||||
|
"transform": "max",
|
||||||
|
"units": "bps"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d12",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Mean Rate",
|
||||||
|
"item_type": "singlestat",
|
||||||
|
"item_id": "d13",
|
||||||
|
"query": "uplink_tx",
|
||||||
|
"format": ",.3s",
|
||||||
|
"transform": "mean",
|
||||||
|
"units": "bps"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Current Rate",
|
||||||
|
"item_type": "singlestat",
|
||||||
|
"item_id": "d14",
|
||||||
|
"query": "uplink_tx",
|
||||||
|
"format": ",.3s",
|
||||||
|
"transform": "last_non_zero",
|
||||||
|
"units": "bps"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d20",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Peak Rate",
|
||||||
|
"item_type": "jumbotron_singlestat",
|
||||||
|
"item_id": "d21",
|
||||||
|
"query": "uplink_rx",
|
||||||
|
"format": ",.3s",
|
||||||
|
"transform": "max",
|
||||||
|
"units": "bps"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d22",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Mean Rate",
|
||||||
|
"item_type": "singlestat",
|
||||||
|
"item_id": "d23",
|
||||||
|
"query": "uplink_rx",
|
||||||
|
"format": ",.3s",
|
||||||
|
"transform": "mean",
|
||||||
|
"units": "bps"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Current Rate",
|
||||||
|
"item_type": "singlestat",
|
||||||
|
"item_id": "d24",
|
||||||
|
"query": "uplink_rx",
|
||||||
|
"format": ",.3s",
|
||||||
|
"transform": "last_non_zero",
|
||||||
|
"units": "bps"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "row",
|
||||||
|
"item_id": "d5",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d6",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "",
|
||||||
|
"options": {
|
||||||
|
"palette": "tableau10",
|
||||||
|
"y1": {
|
||||||
|
"label": "bps"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"item_type": "bar_chart",
|
||||||
|
"item_id": "d8",
|
||||||
|
"height": 4,
|
||||||
|
"query": "uplink_combined",
|
||||||
|
"legend": "none",
|
||||||
|
"hide_zero_series": false,
|
||||||
|
"stack_mode": "none"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 12
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"level": 1,
|
||||||
|
"horizontal_rule": false,
|
||||||
|
"layout": "fixed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"queries": {
|
||||||
|
"stations": {
|
||||||
|
"name": "stations",
|
||||||
|
"targets": [
|
||||||
|
"received.*.iwinfo-wlan*.stations.value"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"uplink_combined": {
|
||||||
|
"name": "uplink_combined",
|
||||||
|
"targets": [
|
||||||
|
"group(scale(perSecond(received.eric.interface-eth1_50.if_octets.tx),8),\n scale(perSecond(received.eric.interface-eth1_50.if_octets.rx),-8))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"uplink_rx": {
|
||||||
|
"name": "uplink_rx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_50.if_octets.rx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"uplink_tx": {
|
||||||
|
"name": "uplink_tx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_50.if_octets.tx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"video_combined": {
|
||||||
|
"name": "video_combined",
|
||||||
|
"targets": [
|
||||||
|
"group(scale(perSecond(received.eric.interface-eth1_203.if_octets.tx),8), scale(perSecond(received.eric.interface-eth1_203.if_octets.rx),-8))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"video_rx": {
|
||||||
|
"name": "video_rx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_203.if_octets.rx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"video_tx": {
|
||||||
|
"name": "video_tx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_203.if_octets.tx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wifi_noise": {
|
||||||
|
"name": "wifi_noise",
|
||||||
|
"targets": [
|
||||||
|
"dBmtomW(received.*.iwinfo-wlan*.signal_noise.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wifi_noise_dbm": {
|
||||||
|
"name": "wifi_noise_dbm",
|
||||||
|
"targets": [
|
||||||
|
"received.*.iwinfo-wlan*.signal_noise.value"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wired_combined": {
|
||||||
|
"name": "wired_combined",
|
||||||
|
"targets": [
|
||||||
|
"group(scale(perSecond(received.eric.interface-eth1_201.if_octets.tx),8), scale(perSecond(received.eric.interface-eth1_201.if_octets.rx),-8))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wired_rx": {
|
||||||
|
"name": "wired_rx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_201.if_octets.rx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wired_tx": {
|
||||||
|
"name": "wired_tx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_201.if_octets.tx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wireless_combined": {
|
||||||
|
"name": "wireless_combined",
|
||||||
|
"targets": [
|
||||||
|
"group(scale(perSecond(received.eric.interface-eth1_202.if_octets.tx),8), scale(perSecond(received.eric.interface-eth1_202.if_octets.rx),-8))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wireless_rx": {
|
||||||
|
"name": "wireless_rx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_202.if_octets.rx),8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wireless_tx": {
|
||||||
|
"name": "wireless_tx",
|
||||||
|
"targets": [
|
||||||
|
"scale(perSecond(received.eric.interface-eth1_202.if_octets.tx),8)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"href": "/api/dashboard/2",
|
||||||
|
"view_href": "/dashboards/2/internet-connectivity",
|
||||||
|
"definition_href": "/api/dashboard/2/definition"
|
||||||
|
}
|
|
@ -0,0 +1,173 @@
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"title": "Wireless",
|
||||||
|
"category": "Data",
|
||||||
|
"summary": "",
|
||||||
|
"description": "",
|
||||||
|
"creation_date": "2015-11-07T06:32:41.530934Z",
|
||||||
|
"last_modified_date": "2015-11-07T22:08:31.369260Z",
|
||||||
|
"imported_from": null,
|
||||||
|
"tags": [],
|
||||||
|
"definition": {
|
||||||
|
"options": {},
|
||||||
|
"item_type": "dashboard_definition",
|
||||||
|
"item_id": "d3",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "section",
|
||||||
|
"item_id": "d4",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "row",
|
||||||
|
"item_id": "d5",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d13",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"options": {
|
||||||
|
"palette": "tableau10"
|
||||||
|
},
|
||||||
|
"item_type": "bar_chart",
|
||||||
|
"item_id": "d14",
|
||||||
|
"height": 4,
|
||||||
|
"query": "stations",
|
||||||
|
"legend": "none",
|
||||||
|
"hide_zero_series": false,
|
||||||
|
"stack_mode": "stack"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 12
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "row",
|
||||||
|
"item_id": "d8",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d9",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "5GHz vs 2.4GHz",
|
||||||
|
"options": {
|
||||||
|
"palette": "tableau10",
|
||||||
|
"y1": {
|
||||||
|
"label": "Stations"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"item_type": "bar_chart",
|
||||||
|
"item_id": "d10",
|
||||||
|
"query": "stations2_5",
|
||||||
|
"legend": "simple",
|
||||||
|
"hide_zero_series": false,
|
||||||
|
"stack_mode": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "markdown",
|
||||||
|
"item_id": "d15",
|
||||||
|
"text": "The number of 5GHz associations (positive numbers) vs the number of 2.4 GHz associations (negative).",
|
||||||
|
"raw": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 12
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_type": "row",
|
||||||
|
"item_id": "d16",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item_type": "cell",
|
||||||
|
"item_id": "d17",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Stations in Per Hall",
|
||||||
|
"options": {
|
||||||
|
"palette": "numbers6",
|
||||||
|
"y1": {
|
||||||
|
"label": "Stations"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"item_type": "bar_chart",
|
||||||
|
"item_id": "d18",
|
||||||
|
"query": "stations_for_domain",
|
||||||
|
"legend": "simple",
|
||||||
|
"hide_zero_series": false,
|
||||||
|
"stack_mode": "stack"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"span": 12
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"level": 1,
|
||||||
|
"horizontal_rule": false,
|
||||||
|
"layout": "fixed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"queries": {
|
||||||
|
"stations": {
|
||||||
|
"name": "stations",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations2_5": {
|
||||||
|
"name": "stations2_5",
|
||||||
|
"targets": [
|
||||||
|
"group(sumSeries(received.ap-*-ac.iwinfo-wlan0.stations.value, received.ap-*-an.iwinfo-wlan1.stations.value),\nscale(sumSeries(received.ap-*-legacy.iwinfo-wlan0.stations.value),-1), scale(sumSeries(received.ap-*-ac.iwinfo-wlan1.stations.value, received.ap-*-an.iwinfo-wlan0.stations.value),-1))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_bulgaria": {
|
||||||
|
"name": "stations_bulgaria",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-bulgaria-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_chamber": {
|
||||||
|
"name": "stations_chamber",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-chamber-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_for_domain": {
|
||||||
|
"name": "stations_for_domain",
|
||||||
|
"targets": [
|
||||||
|
"group(sumSeries(received.ap-bulgaria-*.iwinfo-wlan*.stations.value),\nsumSeries(received.ap-lobby1-*.iwinfo-wlan*.stations.value),\nsumSeries(received.ap-chamber-*.iwinfo-wlan*.stations.value),\nsumSeries(received.ap-marble-*.iwinfo-wlan*.stations.value),\nsumSeries(received.ap-music-*.iwinfo-wlan*.stations.value),\nsumSeries(received.ap-lobby2-*.iwinfo-wlan*.stations.value))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_lobby1": {
|
||||||
|
"name": "stations_lobby1",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-lobby1-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_lobby2": {
|
||||||
|
"name": "stations_lobby2",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-lobby2-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_marble": {
|
||||||
|
"name": "stations_marble",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-marble-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stations_music": {
|
||||||
|
"name": "stations_music",
|
||||||
|
"targets": [
|
||||||
|
"sumSeries(received.ap-music-*.iwinfo-wlan*.stations.value)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"href": "/api/dashboard/3",
|
||||||
|
"view_href": "/dashboards/3/wireless",
|
||||||
|
"definition_href": "/api/dashboard/3/definition"
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
server {
|
||||||
|
server_name tessera.openfest.org;
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
|
||||||
|
root /var/www/html;
|
||||||
|
client_max_body_size 500M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
limit_except GET{
|
||||||
|
auth_basic "NO";
|
||||||
|
auth_basic_user_file "/etc/tessera/htpasswd.users";
|
||||||
|
}
|
||||||
|
try_files $uri @tessera;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @tessera {
|
||||||
|
include uwsgi_params;
|
||||||
|
# uwsgi_param SCRIPT_NAME tessera;
|
||||||
|
uwsgi_modifier1 30;
|
||||||
|
uwsgi_pass 127.0.0.1:3032;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
[uwsgi]
|
||||||
|
processes = 2
|
||||||
|
socket = 127.0.0.1:3032
|
||||||
|
gid = www-data
|
||||||
|
uid = www-data
|
||||||
|
chdir = /opt/tessera-pip/lib/python2.7/site-packages/tessera
|
||||||
|
#wsgi-file = /opt/graphite/conf/graphite.wsgi
|
||||||
|
home = /opt/tessera-pip
|
||||||
|
py-program-name = /opt/tessera-pip/bin/python
|
||||||
|
module = tessera
|
||||||
|
callable = app
|
Loading…
Reference in New Issue