https://github.com/gernest/requiemdb
Pure Go Permanent Storage For Open Telemetry Metrics, Traces and Logs, based on Compressed Roaring B-Tree Bitmaps, using Typescript as Query Language
https://github.com/gernest/requiemdb
database observability open-telemetry open-telemetry-collector
Last synced: 3 months ago
JSON representation
Pure Go Permanent Storage For Open Telemetry Metrics, Traces and Logs, based on Compressed Roaring B-Tree Bitmaps, using Typescript as Query Language
- Host: GitHub
- URL: https://github.com/gernest/requiemdb
- Owner: gernest
- License: apache-2.0
- Created: 2024-04-12T15:33:24.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-07T01:00:53.000Z (12 months ago)
- Last Synced: 2025-01-30T18:48:20.541Z (3 months ago)
- Topics: database, observability, open-telemetry, open-telemetry-collector
- Language: Go
- Homepage:
- Size: 4.08 MB
- Stars: 16
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# requiemdb
Permanent Storage for Open Telemetry Data.
# Features
- **OTLP gRPC server**: You can send metrics, traces and logs directly
from your apps using otel gRPC exporter. Works with all supported language SDK.
- **Query as code**: version, reuse , run or experiment with scripts.
- **Embedded javascript engine**: Use modern javascript or typescript for querying.
- **Standard compliant data**: Work with data as defined in Open Telemetry StandardsYou don't need bespoke query language to understand and get insight from your
applications. Work with samples as defined in [Open Telemetry Protocol](https://github.com/open-telemetry/opentelemetry-proto) using modern javascript or typescript.# Getting started
## Installation
You can see release page for downloads if you have go installed do this
```bash
go install github.com/gernest/requiemdb/cmd/rq@latest
```This will have `rq` binary installed
## Start the server
```
rq
```Wait for 2 minutes to have `rq` collect the process stats so we can query them.
> Metrics,traces and logs emitted by `rq` are stored in the same `rq` instance.
> This is to allow quick evaluation of `rq` capabilities before deployment.Let's check system cpu time, create a file `cpu.ts`
```ts
// cpu.ts
import { Metrics } from "@requiemdb/rq";/**
* Query instant system.cpu.time
*/
Metrics.render(
(new Metrics()).
name("system.cpu.time").
query()
)
``````bash
rq query cpu.ts
```
```
system.cpu.time
TIMESTAMP VALUE ATTRIBUTES
2024-04-03 14:37:40 193h2m11.21s { state = "idle" }
2024-04-03 14:37:40 13h36m20.38s { state = "user" }
2024-04-03 14:37:40 8h20m8.09s { state = "system" }
2024-04-03 14:37:40 0s { state = "other" }
```# Sending data
```
RQ_OTLP_LISTEN=localhost:4317 rq
```Configure your gRPC exporter to use `RQ_OTLP_LISTEN` endpoint.