opCharts Remote Data Widget

opCharts Remote Data Widget

Requires opCharts-4.0.9 and Above.

 

 

opCharts can display tabular data from most JSON endpoints which required no authentication or support token / bearer header tokens.

In this example we are showing weather data from the Gold Coast using the openweathermap.org API

Key

Required

Description

Key

Required

Description

Name

Name of the component which is shown under the opCharts data sources when creating a dashboard

data_source_type

remote_json is used for opCharts to know it needs to make this type of request

model_view

opmantek-remote-json for the table view, opmantek-pie to show the data in a pie chart

options.titleText

Title of the component shown on the dashboard

remote_paramaters.url

URL of your endpoint which returns JSON data

remote_paramaters.auth_type

 

 

remote_paramaters.data_key

 

 

remote_paramaters.pagination

 

server or client, defaults to server

remote_paramaters.log_request

 

true or false, omkd_log_level also has to be debug for the web request to written into opCharts.log

private.token

 

Opmantek Token Auth

table_schema

 

opCharts - Customising Table Columns

external_url

 

Hyperlink which displays on the top right of the component

external_url_label

 

Label for the hyperlink

showLegend

 

Pie View only, default to true, use false to hide the legen

/usr/local/omk/lib/json/opCharts/components.d

example_gold_coast_weather.json
{ "name": "Weather in Gold Coast, AU", "data_source_type" : "remote_json", "model_view" : "opmantek-remote-json", "options": { "titleText": "Weather in Gold Coast, AU" }, "remote_paramaters": { "pagination": "client", "url": "https://api.openweathermap.org/data/2.5/forecast?id=2165087&APPID=__YOUR__API__KEY__&units=metric", "data_key": "list" }, "table_schema": [ { "name": "dt", "label": "Timestamp", "cell": "String", "formatter": "UnixTime", "editable": false }, { "name": "wind.speed", "label": "Wind Speed", "cell": "ColouredByLevel", "levels": ["red", 75, "orange", 50, "yellow", 25, "green", 0], "editable": false }, { "name": "main.temp", "label": "Temp", "cell": "ColouredByLevel", "editable": false, "levels": ["red", 30, "orange", 25, "yellow", 18, "green", 0] }, { "name": "wind.deg", "label": "Wind Direction", "cell": "String", "editable": false }, { "name": "main.pressure", "label": "Pressure", "cell": "String", "editable": false }, { "name": "main.humidity", "label": "Humidity", "cell": "ColouredByLevel", "levels": ["red", 75, "orange", 50, "yellow", 25, "green", 0], "editable": false }, { "name": "weather.0.description", "label": "Forcast", "cell": "String", "editable": false } ] }

Pie Chart

Showing your own data in the pie chart

Pie Data
{ "replyData": { "data": [{ "name": "irukandji.opmantek.com:magni.opmantek.com:UDP:32760", "y": 56.17 }, { "name": "Other", "y": 14.18 }, { "name": "magni.opmantek.com:irukandji.opmantek.com:UDP:32760", "y": 10.35 }, { "name": "vgw120-example.com:auto-141.opmantek.com:trivnet1", "y": 4.82 }, { "name": "auto-119.opmantek.com:ec2-0.0.0.0.compute-1.amazonaws.com:UDP:45056", "y": 3.6 }, { "name": "auto-141.opmantek.com:vgw120-example.com:trivnet1", "y": 3.25 }, { "name": "magni.opmantek.com:192.168.1.1:UDP:32760", "y": 2.39 }, { "name": "magni.opmantek.com:kraken.opmantek.com:UDP:32760", "y": 1.84 }, { "name": "vali.opmantek.com:10.152.0.10:http", "y": 1.77 }, { "name": "kraken.opmantek.com:magni.opmantek.com:UDP:32760", "y": 1.63 }] } }

 

 

Example component definition to show a pie chart from opFlow

asgard_pie.json
{ "name": "Pie TopN - Agent asgard", "data_source_type" : "remote_json", "model_view" : "opmantek-pie", "options": { "titleText": "Pie TopN - Agent asgard" }, "remote_paramaters": { "auth_type": "omk_token", "url": "http://example.opmantek.com/en/omk/opFlowSP/agent/192.168.88.254/interface/2/data_model_view.json", "requestData" : { "data_source": "", "dataset_id": 0, "model": "opFlow_flows_summary", "model_group": 1, "model_view": "pie", "parameters": { "agent" : "5db27d6a731c248b9b953e0a", "axis": 0, "end_date_raw": null, "field": null, "filter": null, "graph_type": null, "group_by": ["src_ip", "dst_ip", "application"], "groupby": ["dnsname_src_ip", "dnsname_dst_ip", "application"], "interfaces" : { "out" : [ "5db27d6a731c248b9b953e1c" ], "in" : [ "5db27d6a731c248b9b953e18" ] }, "lineType": "line", "summarise": 300, "summary_field": "octets", "topn": 10, "value_column": "octets" }, "translations": [{ "name": "topn", "parameters": { "key_columns": ["src_ip", "dst_ip", "application", "app_port"], "summary_kvps": ["application", 0, "octets", 2, "packets", 2, "flows", 2, "app_port", 0], "topn": 10, "value_column": "octets" } }, { "name": "apply_dnsname", "parameters": {} }] } }, "private": { "token": "whateverSuitsU!" } }

 

How to use the widget

The first step to create a new component is to add the json descriptor file in the path (A content example can be seen in the example above):

omk/conf/components.d/new_component.json

Once the file is created it can be used as a component in a Dashboard.