title | description |
---|---|
Grafana | Guide for time series data visualization with QuestDB and Grafana |
Grafana is a popular observability and monitoring application used to visualize data and has an extensive ecosystem of widgets and plugins. QuestDB supports connecting to Grafana via the Postgres endpoint.
Prerequisites
- Grafana should be installed and running.
- QuestDB should be installed and running via Docker, the binaries or Homebrew for macOS users.
Add a data source
- Open Grafana’s UI (by default available at
http://localhost:3000
) - Go to the
Configuration
section and click onData sources
- Click
Add data source
- Choose the
PostgreSQL
plugin and configure it with the following settings:
host: localhost:8812
database: qdb
user: admin
password: quest
SSL mode: disable
- When adding a panel, use the “text edit mode” by clicking the pencil icon and adding a query
Global variables
To simplify queries which have dynamic elements such as date range filters, the query can contain global variables which are documented in the Grafana reference documentation.
$__timeFilter(timestamp)
This variable allows filtering results by sending a start-time and end-time to QuestDB. This expression evaluates to:
timestamp BETWEEN
'2018-02-01T00:00:00Z' AND '2018-02-28T23:59:59Z'
$__interval
This variable calculates a dynamic interval based on the time range applied to the dashboard. By using this function, the sampling interval changes automatically as the user zooms in and out of the panel.
Example query
SELECT
pickup_datetime AS time,
avg(trip_distance) AS distance
FROM taxi_trips
WHERE $__timeFilter(pickup_datetime)
SAMPLE BY $__interval;