perses

module
v0.45.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 2, 2024 License: Apache-2.0

README

Perses
Perses

build go react Go Report Card Gitpod ready-to-code

Overview

Perses is part of the CoreDash community. It belongs to the Linux Foundation. At a later stage, we want to promote the project to the Cloud Native Computing Foundation and be part of the monitoring tools like Prometheus or Thanos.

img.png img.png

Perses aims to tackle multiple goals:

  1. Become a standard dashboard visualization tool for Prometheus and other datasources. It will focus on being GitOps-compatible and thus enabling a smooth Dashboard-as-Code workflow, via a new and well-defined dashboard definition model.
  2. Provide different npm packages, so that anyone that would like to embed charts and dashboards in their own UI could benefit from the work achieved here. For example, these packages might be used in the future to improve the display of the data in the Prometheus UI.
  3. Offer a Kubernetes-native mode in which dashboard definitions can be deployed into and read from individual application namespaces (using CRDs). For more information you can take a look at the doc which would give you an idea of how it would work.
  4. To be friendly to Dashboard-as-Code users, by providing a complete static validation of the dashboard format. That means you will be able to validate your dashboards in a CI/CD using the Perses CLI (named percli)
  5. Support plugins, to allow users to extend the capacities natively provided.

Status

  1. Perses as an application can now be used.
    • Data-model reached a stable point, and we are providing different panels that should cover most of the use case when you need to use Prometheus.
    • Authentication and authorization are available.
  2. On the GitOps aspect:
    • We provide a CLI that helps to interact with the API. A short doc is available here
    • Two SDKs (in Golang and in Cuelang) are available to create a Dashboard using language you would like. (Dashboard as Code feature) Probably these SDKs are going to involve depending on the feedback we might receive. Likely it will be to add more util function rather than breaking things.
  3. We are eager to change the current plugin architecture to make it potentially simpler and above all to be able to externalize the load and the implementation of a plugin.
    • Changes are more on the frontend side. cue/schemas are kept in their current shape as there is no point to remove the static validation of the plugin in the backend side.
    • Work is in progress

What's next

Current Roadmap is available here

Install

There are various ways of installing Perses.

Precompiled binaries

Precompiled binaries for released versions are available in the GitHub release. Using the latest release binary is the recommended way of installing Perses.

Docker images

Docker images are available on Docker Hub.

You can launch a Perses container for trying it out with:

docker run --name perses -d -p 127.0.0.1:8080:8080 persesdev/perses

Building from source

To build Perses from source code, You need:

Start by cloning the repository:

git clone https://github.com/perses/perses.git
cd perses

Then you can use make build that would build the web assets and then Perses itself (and also the Perses CLI that can be used to interact directly with the Perses API in case you prefer to browser the API using a terminal).

make build
./bin/perses --config=your_config.yml

Contributing and development

General instructions about how you can contribute to Perses are available in the document CONTRIBUTING.md.

UI development

If you are primarily interested in contributing to the UI application and libraries, please refer to the UI Readme. It includes quick start instructions for how to build, run, and test the React UI. It also includes details about the architecture and guidelines for development.

License

The code is licensed under an Apache 2.0 license.

Directories

Path Synopsis
cmd
internal
api
api/dependency
Package dependency provides different manager that will be used to instantiate the different services and daos of the API.
Package dependency provides different manager that will be used to instantiate the different services and daos of the API.
pkg
client/fake/api
Package fakeapi is reproducing the package api at the same level.
Package fakeapi is reproducing the package api at the same level.
scripts
extract-changelog
This script is extracting the changelog for the current version from the file CHANGELOG.md available at the root of the project.
This script is extracting the changelog for the current version from the file CHANGELOG.md available at the root of the project.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL