Skip to content

Conversation

@aviralgarg05
Copy link

[FEATURE] Add OpenGemini plugin

This PR adds support for OpenGemini, a CNCF sandbox project for distributed time-series data storage. Since OpenGemini is fully compatible with InfluxDB v1.x APIs, this plugin implements the necessary data models and components to connect to OpenGemini instances and execute InfluxQL queries.

Plugins Included:

  • OpenGeminiDatasource: Datasource plugin for connecting to OpenGemini instances with support for direct URL and HTTP proxy settings.
  • OpenGeminiTimeSeriesQuery: Time series query plugin using InfluxQL with support for database selection and variable substitution.

Relates to perses/perses#3716

Description

The plugin is implemented as a new package within the perses/plugins monorepo. Key features include:

  • Schema-first Design: CUE schemas define the OpenGeminiDatasource and OpenGeminiTimeSeriesQuery specs, ensuring full validation.
  • InfluxDB Compatibility: Uses the /query endpoint and handles Influx-style JSON response transformation (columns/values) into Perses TimeSeries format.
  • Editor UI: React-based editors for configuring connection settings and writing InfluxQL queries.
  • Monorepo Integration: Fully integrated with the root turbo build system and rsbuild.shared configuration.

Screenshots

N/A - Uses standard Perses form and editor UI components.

Checklist

  • Pull request has a descriptive title and context useful to a reviewer.
  • Pull request title follows the [FEATURE] Add OpenGemini plugin naming convention.
  • All commits have DCO signoffs.

UI Changes

  • Code follows the UI guidelines.
  • Verified local build successfully using npx turbo run build --filter=@perses-dev/opengemini-plugin.

This adds support for OpenGemini, a CNCF sandbox project for time-series data storage that is compatible with InfluxDB v1.x APIs.

Plugins included:
- OpenGeminiDatasource: Datasource plugin for connecting to OpenGemini instances
- OpenGeminiTimeSeriesQuery: Time series query plugin using InfluxQL

Relates to perses/perses#3716

Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
@aviralgarg05 aviralgarg05 requested review from a team and AntoineThebaud as code owners January 20, 2026 12:08
@aviralgarg05 aviralgarg05 requested review from shahrokni and removed request for a team January 20, 2026 12:08
@jgbernalp
Copy link
Contributor

@aviralgarg05 you need to execute npm install from the root of the project after adding a plugin so the package-lock.json is on sync.

This commit addresses the following:

- Adds missing lint script to package.json

- Fixes linting errors in source code

- Adds Jest configuration and setup files

- Adds basic unit test to satisfy test runner

Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
- Add missing license header to datasource.test.ts
- Update golangci-lint script to skip plugins without Go files (opengemini is TypeScript-only)

Signed-off-by: aviralgarg05 <gargaviral99@gmail.com>
@aviralgarg05 aviralgarg05 force-pushed the feat/opengemini-plugin branch from 29f8944 to ebf3d1e Compare January 23, 2026 12:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants