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
Last synced: 10 months ago · JSON representation ·

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
Created over 2 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Changelog License Citation

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.

Grafana Palindrome.js Panel

⚙️ 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 integration in Grafana

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

Palindrome.js light

⚡ Realtime Palindrome.js

Palindrome.js integration in Grafana

📺 Creation demo

Palindrome.js integration in Grafana 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 ...

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

.github/workflows/ci.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
  • actions/upload-artifact v4 composite
.github/workflows/release.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • softprops/action-gh-release v1 composite
.config/Dockerfile docker
  • grafana/${grafana_image} ${grafana_version} build
Dockerfile docker
  • node 20-alpine build
package-lock.json npm
  • 2396 dependencies
package.json npm
  • @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