Go Cross Filter
Table of Contents
Overview
Axibase Cross Filter is a Go-language application that implements the cross-filter concept for use with data stored in Axibase Time Series Database. The Cross Filter application provides the capability to apply graphical client-side filters to metadata and time series values, without reloading data from the server. Datasets are loaded from ATSD using SQL queries and refreshed on a schedule. Cross Filter uses cross-filter.js
and datatables
to build and maintain indices to optimize client-side filtering. Filters are built using widgets from the Axibase Charts library.
Dependencies
Client:
- Bootstrap
3.3.5
- jQuery
2.1.4
- D3.js
3.5.6
- DataTables
1.10.9
- DataTables Scroller
1.3.0
- Crossfilter
1.3.12
Server:
- ATSD Revision more current than
11130
- Go dependencies from Godeps.json
Getting Started
Requirements
- Go Language Build Tools
- Go Dependency Management Tool
dep
Install
Navigate to your destination folder and execute the following commands:
Load last version from github repository:
# Load last version from github repository
go get github.com/axibase/go-capacity-screener
# Compile the project:
godep go build
Usage
Default program structure is enumerated below:
.
|-- config.json - Capacity Screener configuration file
|-- go-capacity-screener - Capacity Screener binary
|-- templates - Web page templates
| |-- index.tpl
| `-- view.tpl
`-- portals - User defined portals folder
|-- itcam-rtt.conf
|-- nmon.conf
`-- oracle_databases.conf
Edit Configuration Files
Define ATSD URL, username and password:
{
"url": "http://atsd_server:8088", #define ATSD access credentials
"user": "username",
"password": "password",
"port": 8000, #application web view port
"updatePeriod": "1m", #interval used to update all defined tables
"tables": [
... #define tables here
]
}
Define tables:
...
"tables": [
{
"name": "Linux Performance", #table name
"entityGroups": ["nmon-linux", "nurswg-dc1", "nurswg-dc2"], #which entity groups can be used to filter the table(dataset)
"sqlQuery": ATSD_SQL_QUERY, #SQL query to load data from ATSD
"portalConfigPath": "portals/linux_performance.config", #portal configuration file
"columns": [ #all column names should match aliases in sqlQuery.
{
"name": "entity",
"entity": true #entity column flag (only one per table) to view the portal
},
{
"name": "os",
"filter": {} #filter object to use column for a visual filtering.
},
{
"name": "loc_area",
"filter": {}
},
{
"name": "app",
"filter": {}
},
{
"name": "FS id",
"filter": {}
},
{
"name": "Cpu Busy, %",
"filter": {
range: [0, 100] #range option to set histogram range for numeric columns
},
"formatter": { #specify formatter for numeric columns to render column value based on formula (round(multiplier * value))
"round": 1 #you can specify "round" and "multiplier" independently.
}
},
{
"name": "Memory Used, %",
"filter": {
range: [0, 100]
},
"formatter": {
"round": 1
}
},
{
"name": "Memory Free, Mb",
"filter": {},
"formatter": {
"round": 0,
"multiplier": 0.00097656 #converting bytes to Mb
}
},
{
"name": "FS used, %",
"filter": {
range: [0, 100]
},
"formatter": {
"round": 1
}
}
]
},
...
]
Launch the Application
./go-cross-filter