palindrome.js-grafana-plugin
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.3%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: Smile-SA
- License: apache-2.0
- Language: TypeScript
- Default Branch: main
- Size: 11 MB
Statistics
- Stars: 3
- Watchers: 7
- Forks: 0
- Open Issues: 0
- Releases: 3
Metadata Files
README.md
Grafana Palindrome.js Panel
Visualize Prometheus metrics or other datasources in 3D with the Grafana Palindrome.js panel. This panel is based over the SMILE Palindrome.js library.
Palindrome.js is a three.js based library which provides 3D monitoring for system metrics and KPIs. Metrics are presented as sets within layers, which helps to easily identify relations between metrics, indicators, behaviors or trends for your realtime systems or any other data source. Custom algorithms, visual behaviors, styles and color schemes can easily be modified or added.
⚙️ Getting started
Install dependencies and build the project
bash
docker build -t palindrome-builder .
docker run -v ./dist:/dist palindrome-builder
Run the plugin
bash
docker compose up
- Project should be up and running on: http://localhost:3000.
- Grafana credentials: (username: admin, password: admin)
- On the main dashboard you should be able to see three Palindrome.js panels with InfluxDB, Prometheus, and Graphite data sources.
Run the E2E tests (using Cypress)
```bash # Spins up a Grafana instance first that we tests against docker compose up
# Starts the tests npm run e2e ```
Run the linter
```bash npm run lint
# or
npm run lint:fix ```
🎯 Features and usage
Palindrome.js is composed of layers defined by the user. Each layer can contain from 1 to n metrics. Metrics ranges are described through minimum, median, and maximum values, which are inputs from the user. The current value is obtained from the time series database. The overall Palindrome.js shape and color reflect the current values evolving in their user described ranges. For further details, please refer to the Palindrome.js documentation.
This panel should be connected to one of these supported data sources: - Prometheus - InfluxDB v2 - Graphite
Once done, you can define layers and metrics using code queries, following this format:
<query> <comment-sign>label: <label>, layer: <layerName>, ranges: [<min value>, <med value>, <max value>]
Notes:
- Palindrome.js metadata should be inside a comment section.
- Comment signs can be # or //.
- label metadata is optional
Example for Prometheus data source:
Promql
node_disk_io_now{device="nvme0n1"} #label: ssdMetric, layer: systemMetrics, ranges: [0, 50, 100]
- Once you've finished typing queries, click on
Run queries, and the 3D object will appear.
Example for InfluxDB v2 data source:
Flux
from(bucket: "Palindrome.js")
|> range(start:-1m)
|> filter(fn: (r) => r["_measurement"] == "cpu")
|> filter(fn: (r) => r["_field"] == "usage_system")
|> filter(fn: (r) => r["cpu"] == "cpu0")
//layer: Container Metrics, ranges: [0, 3, 10]
Example for Graphite data source:
carbon.agents.*-a.pointsPerUpdate #layer: layer2, ranges: [0, 1, 3]
After setting up queries, two fields will be populated: Palindrome Data Structure and Palindrome Configuration:
Palindrome Data Structure: This is the data structure of Palindrome.js based on the metrics entered by the user. It is a read-only text area (editable through query comments).
Palindrome Configuration: This field displays the current configuration used to display the 3D object. It is editable. For more information, please refer to our API reference.

Palindrome.js is also available in a light theme version.

⚡ Realtime Palindrome.js

📺 Creation demo

💡 Credits
- Mohamed Ali Yacoubi @yacoubii
- JonRiv (author) @JonRiv
- Rnd Team @ SMILE
📜 License
This project is licensed under Apache2.0.
Owner
- Name: Smile - Open Source Solutions
- Login: Smile-SA
- Kind: organization
- Email: opensource-contributions@smile.fr
- Location: Paris, Nantes, Lyon, Bordeaux, Montpellier ...
- Website: http://www.smile.fr
- Twitter: GroupeSmile
- Repositories: 159
- Profile: https://github.com/Smile-SA
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Rivalan" given-names: "Jonathan" orcid: "https://orcid.org/0000-0002-3779-556X" title: "Palindrome.js-grafana-plugin" version: 1.0 date-released: 2024-04-19 url: "https://github.com/Smile-SA/palindrome.js-grafana-plugin"
GitHub Events
Total
- Watch event: 5
Last Year
- Watch event: 5
Dependencies
- actions/checkout v4 composite
- actions/setup-node v4 composite
- actions/upload-artifact v4 composite
- actions/checkout v4 composite
- actions/setup-node v3 composite
- softprops/action-gh-release v1 composite
- grafana/${grafana_image} ${grafana_version} build
- node 20-alpine build
- 2396 dependencies
- @babel/core ^7.21.4 development
- @grafana/e2e 10.0.3 development
- @grafana/e2e-selectors 10.0.3 development
- @grafana/eslint-config ^6.0.0 development
- @grafana/tsconfig ^1.2.0-rc1 development
- @swc/core ^1.3.90 development
- @swc/helpers ^0.5.0 development
- @swc/jest ^0.2.26 development
- @testing-library/jest-dom 6.1.4 development
- @testing-library/react 14.0.0 development
- @types/jest ^29.5.0 development
- @types/lodash ^4.14.194 development
- @types/node ^20.8.7 development
- @types/testing-library__jest-dom 5.14.8 development
- copy-webpack-plugin ^11.0.0 development
- css-loader ^6.7.3 development
- eslint-plugin-deprecation ^2.0.0 development
- eslint-webpack-plugin ^4.0.1 development
- fork-ts-checker-webpack-plugin ^8.0.0 development
- glob ^10.2.7 development
- identity-obj-proxy 3.0.0 development
- jest ^29.5.0 development
- jest-environment-jsdom ^29.5.0 development
- prettier ^2.8.7 development
- replace-in-file-webpack-plugin ^1.0.6 development
- sass 1.63.2 development
- sass-loader 13.3.1 development
- style-loader 3.3.3 development
- swc-loader ^0.2.3 development
- ts-node ^10.9.1 development
- tsconfig-paths ^4.2.0 development
- typescript 4.8.4 development
- webpack ^5.86.0 development
- webpack-cli ^5.1.4 development
- webpack-livereload-plugin ^3.0.2 development
- @emotion/css 11.10.6
- @grafana/data 10.0.3
- @grafana/runtime 10.0.3
- @grafana/schema 10.0.3
- @grafana/ui 10.0.3
- @smile/palindrome.js ^1.0.6
- react 18.2.0
- react-dom 18.2.0
- tslib 2.5.3