All Projects → fifemon → graphql-datasource

fifemon / graphql-datasource

Licence: other
Grafana datasource plugin to query data from a GraphQL API

Programming Languages

typescript
32286 projects
HTML
75241 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to graphql-datasource

chronos-pipeline
A data pipeline for processing event data
Stars: ✭ 20 (-63.64%)
Mutual labels:  grafana
skycloud-base
🔥springcloud脚手架,配置中心(apollo/nacos) 注册中心(consul/nacos) 分布式事物(seata) 调用链(skywalking) 日志(ELK)监控(prometheus与grafana) 等,适合学习与快速开发使用
Stars: ✭ 80 (+45.45%)
Mutual labels:  grafana
jmeter-influxdb2-listener-plugin
Influx DB v2.0 listener plugin for Apache JMeter. Provides the possibility to see the online dashboard (aggregation table, errors, the response body of failures).
Stars: ✭ 64 (+16.36%)
Mutual labels:  grafana
devops-kpi-chapter1
DevOps KPI in Practice - Chapter 1 - Source Code
Stars: ✭ 25 (-54.55%)
Mutual labels:  grafana
kubetools
Kubetools - Curated List of Kubernetes Tools
Stars: ✭ 674 (+1125.45%)
Mutual labels:  grafana
gapit-htmlgraphics-panel
Grafana panel for displaying metric sensitive HTML or SVG graphics.
Stars: ✭ 41 (-25.45%)
Mutual labels:  grafana
synthetic-monitoring-app
Synthetic Monitoring frontend application
Stars: ✭ 80 (+45.45%)
Mutual labels:  grafana
air-quality
Air quality sensing and monitoring
Stars: ✭ 17 (-69.09%)
Mutual labels:  grafana
grafana-sensu-go-datasource
A Grafana data source plugin for querying the Sensu Go API
Stars: ✭ 21 (-61.82%)
Mutual labels:  grafana
coronavirus-dresden
Collects official SARS-CoV-2 infection statistics published by the city of Dresden.
Stars: ✭ 19 (-65.45%)
Mutual labels:  grafana
raspberry-metrics
Expose Raspberry PI metrics using Prometheus and Grafana. Install with single command.
Stars: ✭ 41 (-25.45%)
Mutual labels:  grafana
grafana-sqlite-to-postgres
Grafana SQLite to Postgres Database Migrator
Stars: ✭ 70 (+27.27%)
Mutual labels:  grafana
dns-collector
Aggregator, analyzer, transporter and logging for your DNS logs
Stars: ✭ 58 (+5.45%)
Mutual labels:  grafana
kafka-consumer-lag-monitoring
Client tool that exports the consumer lag of Kafka consumer groups to Prometheus or your terminal
Stars: ✭ 45 (-18.18%)
Mutual labels:  grafana
Prometheus-grafana
Monitor your Kubernetes cluster resources and applications
Stars: ✭ 21 (-61.82%)
Mutual labels:  grafana
pm2-free-monitoring
Pm2 free monitoring with Grafana and InfluxDb!
Stars: ✭ 38 (-30.91%)
Mutual labels:  grafana
prysm-grafana-dashboard
Guide step to step to get a Prysm dashboard using Grafana and Prometheus with mobile alerts
Stars: ✭ 57 (+3.64%)
Mutual labels:  grafana
victoriametrics-ru-links
Список постов и видеозаписей об VictoriaMetrics на русском языке
Stars: ✭ 1 (-98.18%)
Mutual labels:  grafana
eseries-perf-analyzer
This project provides an automated installation and deployment of Grafana, NetApp E-Series Web Services, and supporting software for performance monitoring of NetApp E-Series Storage Systems.
Stars: ✭ 19 (-65.45%)
Mutual labels:  grafana
graftorio2
(fork of graftorio) factorio mod for creating grafana dashboard
Stars: ✭ 42 (-23.64%)
Mutual labels:  grafana

GraphQL Data Source

CI

Grafana datasource plugin that provides access to a GraphQL API for numerical timeseries data, general/tabular data, annotations, and dashboard variables.

  • The GraphQL query must be structured so that the data of interest is returned under the configurable data path (default data) in the response. If the object at that path is an array it will be iterated over, with each object added as a row in the data frame, otherwise the result object will be the only row.
    • Can be separated by commas to use multiple data paths
  • Timeseries data must include a timestamp field under the data path, default Time, in ISO8601 or a configurable custom format.
  • Nested types will be flattened into dot-delimited fields.
  • Grafana variables should be substituted directly in the query (instead of using GraphQL variables). The dashboard time ranges are available in the global variables $__from and $__to as millisecond epoch (or in whatever format is needed by the API in Grafana 7.1.2 or later).
  • Group by can be used to group elements into multiple data points.
  • Alias by is used to alter the name of the field displayed in the legend. $field_<field.name> is substituted with the values of the field and $fieldName is substituted with the name of the field.

Screenshots

DeutscheBahn Arrivals Table DeutscheBahn Arrivals Annotations GitHub Security Advisories DeutscheBahn Station Variable

Examples

Below are some example queries demonstrating how to use the plugin, using the FIFEMon GraphQL test source server, which also includes a dashboard demonstrating these queries.

Basic timeseries

query {
  data: simple_series(from: "${__from:date:iso}", to: "${__to:date:iso}", interval_ms: $__interval_ms) {
    Time: timestamp
    value
  }
}

Note the use of the global $__from and $__to variables to insert the dashboard time range into the query and the use of $__interval_ms to specify the appropriate time interval for the graph.

Custom time format

query {
  simple_series(
    from: "${__from:date:iso}"
    to: "${__to:date:iso}"
    interval_ms: $__interval_ms
    format: "MM.dd.uuuu HHmmss"
  ) {
    timestamp
    value
  }
}
  • Data path: simple_series
  • Time path: timestamp
  • Time format: MM.DD.YYYY HHmmss

Alias and group by

query {
  complex_series(from: "${__from:date:iso}", to: "${__to:date:iso}", interval_ms: $__interval_ms) {
    time {
      timestamp
    }
    value
    group {
      id
      name
    }
  }
}
  • Data path: complex_series
  • Time path: time.timestamp
  • Group by: group.id
  • Alias by: $field_group.name

In the above example, "Group by" and "Alias by" are defined. "Group by" allows you to split up an array of data into multiple data points. "Alias by" is used as the name of the data point. You can make alias use text from the query or even the field name by using $field_<your.field.name> for the value of the field, or $fieldName for the name of the field. If $fieldName was used, it would be replaced by "value" because that's the name of the field. If $field_group.name was used, it would be replaced with the value of name. Using $fieldName can be useful if you're querying multiple numeric fields that you want displayed in your graph.

Annotations

query {
  events(from: "${__from:date:iso}", to: "${__to:date:iso}", end: true) {
    timestamp
    end_timestamp
    name
    description
    tags
  }
}
  • Data path: events
  • Time path: timestamp
  • End time path: end_timestamp
  • Title: $field_name
  • Text: $field_description
  • Tags: tag1, tag2

The above annotation example is similar to regular queries. You are able to define a data path, time path, and time format. Similar to the last example, you can also substitute values into the title, text, and tags by using $field_<field name>. Tags are separated by commas. The above example has two tags: "tag1" and "tag2".

If the optional end time field is defined and present, the annotation will be shown over a period of time.

Dashboard Variable Queries

Dashboard variables can be populated by a GraphQL query that returns an array of objects. If the objects contain both __text and __value fields then they will be used (the __text field will be displayed, the __value field will be used in substitutions). Otherwise the values of all fields will be appended to the variable value list.

query {
  groups {
    __value: id
    __text: name
  }
}
  • Data path: groups
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].