• This repository has been archived on 02/Apr/2024
  • Stars
    star
    1,331
  • Rank 35,309 (Top 0.7 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[DEPRECATED] Promscale is a unified metric and trace observability backend for Prometheus, Jaeger and OpenTelemetry built on PostgreSQL and TimescaleDB.

Warning

Promscale has been discontinued and is deprecated.

The code in this repository is no longer maintained.

Learn more.

Promscale

Go reviewdog - golangci Go Report Card Code Climate GoDoc

Promscale

Promscale is a unified metric and trace observability backend for Prometheus, Jaeger and OpenTelemetry built on PostgreSQL and TimescaleDB.

Promscale serves as a robust and 100% PromQL-compliant Prometheus remote storage and as a durable and scalable Jaeger storage backend. Promscale is a certified Jaeger storage backend.

Unlike other observability backends, it has a simple and easy-to-manage architecture with just two components: the Promscale Connector and the Promscale Database (PostgreSQL with the TimescaleDB and Promscale extensions).

Quick Start

Try it out now with our demo environment you can deploy on your laptop in five minutes with Docker.

git clone https://github.com/timescale/promscale.git
cd promscale/docker-compose/promscale-demo
docker compose up -d

Explore your metrics and traces in Grafana (http://localhost:3000, username: admin, password: admin) and Jaeger (http://localhost:16686).

Check our short demo guide to learn more.

Key Features

  • Prometheus metric storage: support for remote write, remote read, 100% PromQL, metric metadata, exemplars and Prometheus HA.
  • Certified Jaeger trace storage: Promscale is a certified Jaeger storage backend. Integrate Jaeger with Promscale to store and visualize your traces with a simple configuration change in Jaeger. Use Promscale as the storage backend for the metrics required by the Service Performance Management UI. No need for a separate Prometheus / PromQL compatible storage.
  • OpenTelemetry trace storage: support for ingestion of traces through the OpenTelemetry Protocol (OTLP).
  • Grafana integration: query and visualize your metrics and traces using the PromQL, SQL and Jaeger datasources.
  • Durable and reliable storage: built on top of the maturity of Postgres and TimescaleDB with millions of instances worldwide. A trusted system that offers high availability, replication, data integrity, data compression, backups, authentication, roles and permissions.
  • PromQL Alerts: full support for PromQL alerting rules. You can reuse the Prometheus configuration that you already have.
  • Multi-tenancy: support for Prometheus multi-tenancy so you can restrict data access by tenant.
  • Pick your query language: PromQL for metrics and SQL for metrics and traces. With full SQL support together with TimescaleDB's advanced analytics functions, you can query and correlate metrics, traces, and business data to derive new insights.
  • Flexible data management: configurable default retention for metrics and traces as well as per-metric retention and APIs to delete metric series that are no longer needed.
  • Downsampling: increase the performance of long-term queries by downsampling metrics with PromQL recording rules and TimescaleDB continuous aggregates. Combine downsampling with per-metric retention to only keep the data you need, reduce costs and accelerate performance.
  • Out-of-the-box monitoring: leverage the dashboard, alerting rules and runbooks built by the Promscale team to start monitoring Promscale since the first day following best practices from the team behind the product.
  • Easy data migration: use our prom-migrator tool to effortlessly migrate your existing Prometheus data to Promscale.
  • Simplified deployment on K8s: use tobs to deploy and manage a complete, pre-configured and production-ready observability stack for metrics and traces on a K8s cluster that includes Promscale, Prometheus, OpenTelemetry with auto-instrumentation, Grafana and plenty of out-of-the-box dashboards and alerts.

Architecture

Learn more about Promscale's architecture and how it works.

Promscale Architecture Diagram

Promscale for Prometheus

Promscale provides Prometheus users with:

  • A single-pane-of-glass across all Kubernetes clusters
    Use Promscale as a centralized storage for all your Prometheus instances so you can easily query data across all of them in Grafana and centralize alert management and recording rules. Use multi-tenancy to control who has access to the data for a Kubernetes cluster.

  • Efficient long-term trend analysis
    Use Promscale as a durable long-term storage for Prometheus metrics with a proven and rock-solid foundation based on PostgreSQL and TimescaleDB with millions of instances worldwide. With metric downsampling and per-metric retention you can keep just the data you need for your analysis for as long as you need. This allows you to cut down the costs associated with using the same retention for all data in Prometheus and dramatically improves query performance for long-term queries.

Key features: 100% PromQL-compliant, high availability, multi-tenancy, PromQL alerting and recording rules, downsampling, per-metric retention.

If you are already familiar with PostgreSQL, then Promscale is a great choice for your Prometheus remote storage. You can scale to millions of series and hundreds of thousands of samples per second on a single PostgreSQL node thanks to TimescaleDB.

To get started:

  1. Install Promscale.
  2. Configure Prometheus to send data to Promscale.
  3. Configure Grafana to query and visualize metrics from Promscale using a PromQL and/or a PostgreSQL datasource.

Promscale for Jaeger and OpenTelemetry

Promscale supports ingesting Jaeger and OpenTelemetry traces via the Jaeger Collector and the OpenTelemetry Collector. OpenTelemetry traces can also be sent directly from OpenTelemetry client libraries via the OpenTelemetry Protocol (OTLP). Promscale is a certified Jaeger storage that passess 100% of the compliance tests.

Promscale provides Jaeger and OpenTelemetry users with:

  • An easy-to-use durable and scalable storage backend for traces
    Most users run Jaeger with the in memory or badger storage because the two options recommended for production (Elasticsearch and Cassandra) are difficult to set up and operate. Promscale uses a much simpler architecture based on PostgreSQL which many developers are comfortable with and scales to 100s of thousands of spans per second on a single database node.

  • Service performance analysis
    Because Promscale can store both metrics and traces, you can use the new Service Performance Management feature in Jaeger with Promscale as the only storage backend for the entire experience. Promscale also includes a fully customizable, out-of-the-box, and modern Application Performance Management (APM) experience in Grafana built using SQL queries on traces.

  • Trace analysis
    Jaeger searching capabilities are limited to filtering individual traces. This is helpful when troubleshooting problems once you know what you are looking for. With Promscale you can use SQL to interrogate your trace data in any way you want and discover issues that would usally take you a long time to figure out by just looking at log lines, metric charts or individual traces. You can see some examples in our documentation and in this blog post

Key features: native OTLP support, high availability, SQL queries, APM capabilities, data compression, data retention

Try it out by installing our lightweight opentelemetry-demo with a single command. Check this blog post for more details.

To get started:

  1. Install Promscale.
  2. Send traces to Promscale in Jaeger, OpenTelemetry, or Zipkin format
  3. Configure Jaeger to query and visualize traces from Promscale.

Also consider:

  1. Configure Grafana to query and visualize traces from Promscale using a Jaeger and a PostgreSQL datasource.
  2. Install the APM dashboards in Grafana.

Documentation and Help

Complete user documentation is available at https://docs.timescale.com/promscale/latest/

If you have any questions, please join the #promscale channel on TimescaleDB Slack.

Promscale Repositories

This repository contains the source code of the Promscale Connector. Promscale also requires that the Promscale extension which lives in this repository is installed in the TimescaleDB/PostgreSQL database. The extension sets up and manages the database schemas and provides performance and SQL query experience improvements.

This repository also contains the source code for prom-migrator. Prom-migrator is an open-source, community-driven and free-to-use, universal prometheus data migration tool, that migrates data from one storage system to another, leveraging Prometheus's remote storage endpoints. For more information about prom-migrator, visit prom-migrator's README.

You may also want to check tobs which makes it very easy to deploy a complete observability stack built on Prometheus, OpenTelemetry and Promscale in Kubernetes via helm.

Contributing

We welcome contributions to the Promscale Connector, which is licensed and released under the open-source Apache License, Version 2. The same Contributor's Agreement applies as in TimescaleDB; please sign the Contributor License Agreement (CLA) if you're a new contributor.

Release

Release checklist is available when creating new "Release Checklist" issue.

More Repositories

1

timescaledb

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.
C
17,361
star
2

tsbs

Time Series Benchmark Suite, a tool for comparing and evaluating databases for time series data
Go
1,260
star
3

pgvectorscale

A complement to pgvector for high performance, cost efficient vector search on large workloads.
Rust
924
star
4

tobs

tobs - The Observability Stack for Kubernetes. Easy install of a full observability stack into a k8s cluster with Helm charts.
Shell
559
star
5

pgai

Bring AI models closer to your PostgreSQL data
Python
476
star
6

timescaledb-tune

A tool for tuning TimescaleDB for better performance by adjusting settings to match your system's CPU and memory resources.
Go
433
star
7

timescaledb-toolkit

Extension for more hyperfunctions, fully compatible with TimescaleDB and PostgreSQL 📈
Rust
362
star
8

timescaledb-parallel-copy

A binary for parallel copying of CSV data into a TimescaleDB hypertable
Go
357
star
9

prometheus-postgresql-adapter

Use PostgreSQL as a remote storage database for Prometheus
Go
335
star
10

timescaledb-docker

Release Docker builds of TimescaleDB
Dockerfile
288
star
11

helm-charts

Configuration and Documentation to run TimescaleDB in your Kubernetes cluster
Shell
263
star
12

pg_prometheus

PostgreSQL extension for Prometheus data
C
213
star
13

timescaledb-docker-ha

Create Docker images containing TimescaleDB, Patroni to be used by developers and Kubernetes.
Python
152
star
14

examples

Collection of example applications and tools to help you get familiar with TimescaleDB
JavaScript
120
star
15

nft-starter-kit

Timescale NFT Starter Kit
Python
114
star
16

vector-cookbook

Timescale Vector Cookbook. A collection of recipes to build applications with LLMs using PostgreSQL and Timescale Vector.
Jupyter Notebook
99
star
17

outflux

Export data from InfluxDB to TimescaleDB
Go
89
star
18

opentelemetry-demo

A demo system for exploring the tracing features of Promscale
Python
65
star
19

timescaledb-ruby

The timescaledb gem. Pack of helpers to work with TimescaleDB extension in Ruby.
Ruby
62
star
20

streaming-replication-docker

TimescaleDB Streaming Replication in Docker
Shell
56
star
21

docs

Timescale product documentation 📖
JavaScript
50
star
22

pgspot

Spot vulnerabilities in postgres SQL scripts
Python
50
star
23

timescaledb-extras

Helper functions and procedures for timescale
PLpgSQL
44
star
24

benchmark-postgres

Tools for benchmarking TimescaleDB vs PostgreSQL
Go
38
star
25

docs.timescale.com-content

Content pages for TimescaleDB documentation
JavaScript
37
star
26

promscale_extension

[DEPRECATED] Tables, types and functions supporting Promscale
PLpgSQL
37
star
27

timescaledb-backup

Go
33
star
28

timescaledb-wale

Dockerized WAL-E with an HTTP API
Python
21
star
29

python-vector

Jupyter Notebook
19
star
30

terraform-provider-timescale

Timescale Cloud Terraform Provider
Go
18
star
31

pg_influx

InfluxDB Line Protocol Listener for PostgreSQL
C
17
star
32

homebrew-tap

TimescaleDB Homebrew tap, containing formulas for the database, tools, etc.
Ruby
16
star
33

tsv-timemachine

Sample application for time aware RAG with Streamlit, LlamaIndex and Timescale Vector. Learn more at https://www.timescale.com/ai
Python
15
star
34

templates

Templates to get started with Timescale on Finance or Sensors (IoT)
PLpgSQL
12
star
35

rag-is-more-than-vector-search

Companion repo to "RAG is more than vector search" blog post
Python
12
star
36

promscale-benchmark

Makefile
8
star
37

timescale-extension-utils-rs

Rust
5
star
38

unstructured-pgai-example

Example showing unstructured.io + timescaledb + PGAI
Python
5
star
39

doctor

Rule-based recommendations about your timeseries database.
Python
4
star
40

web-developer-assignment

HTML
3
star
41

wikistream-docker

A Docker environment for https://github.com/timescale/wikistream
Shell
3
star
42

mta-timescale

Demo: Load MTA bus feeds into TimescaleDB
3
star
43

cloud-actions

Cloud public actions
Shell
3
star
44

migration-eval

Tools to determine a migration strategy based on your database
Shell
3
star
45

docker-dbt

Dockerfiles for dbt
Python
2
star
46

aws-lambda-example

A sample serverless AWS Lambda time-series application.
Python
2
star
47

frontend-developer-assignment

HTML
2
star
48

pg_traceam

Simple table access method that just prints out what functions in the access methods and related functions that are called.
C
2
star
49

state_of_postgres

2019
SCSS
1
star
50

build-actions

GitHub actions for release pipelines (building, publishing, checking, etc.)
Shell
1
star
51

pgschema

1
star
52

docs-htmltojsx

A fork of react-magic html-to-jsx specifically modified to parse timescale docs
JavaScript
1
star
53

postgres_cheat_sheet

1
star
54

promscale_specs

Formal specifications for Promscale components
TLA
1
star
55

integrate-with-timescale-using-python

Best practice for interacting with your Timescale service programatically
1
star