All Projects → bookingcom → nanotube

bookingcom / nanotube

Licence: Apache-2.0 license
High-performance router for Graphite.

Programming Languages

go
31211 projects - #10 most used programming language
Jinja
831 projects
Makefile
30231 projects
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to nanotube

Influxgraph
Graphite InfluxDB backend. InfluxDB storage finder / plugin for Graphite API.
Stars: ✭ 87 (+55.36%)
Mutual labels:  graphite
Ohmgraphite
Export Open Hardware sensor data to Graphite / InfluxDB / Prometheus / Postgres / Timescaledb
Stars: ✭ 155 (+176.79%)
Mutual labels:  graphite
Moira
Realtime Alerting for Graphite
Stars: ✭ 222 (+296.43%)
Mutual labels:  graphite
Polymur
A fast carbon-relay with live routing controls + https Graphite forwarder
Stars: ✭ 97 (+73.21%)
Mutual labels:  graphite
Carbon Clickhouse
Graphite metrics receiver with ClickHouse as storage
Stars: ✭ 139 (+148.21%)
Mutual labels:  graphite
Anode
Utility for analyzing graphite metrics. Experimental package.
Stars: ✭ 188 (+235.71%)
Mutual labels:  graphite
Tessera
A dashboard front-end for graphite.
Stars: ✭ 1,202 (+2046.43%)
Mutual labels:  graphite
Icinga Vagrant
Vagrant boxes for Icinga 2, Icinga Web 2, modules, themes and integrations (Graphite, InfluxDB, Elastic, Graylog, etc.)
Stars: ✭ 248 (+342.86%)
Mutual labels:  graphite
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+3446.43%)
Mutual labels:  graphite
Graphite exporter
Server that accepts metrics via the Graphite protocol and exports them as Prometheus metrics
Stars: ✭ 217 (+287.5%)
Mutual labels:  graphite
Carbon
Carbon is one of the components of Graphite, and is responsible for receiving metrics over the network and writing them down to disk using a storage backend.
Stars: ✭ 1,435 (+2462.5%)
Mutual labels:  graphite
Glaucus
An independent Linux® distribution built from scratch
Stars: ✭ 130 (+132.14%)
Mutual labels:  graphite
Icingaweb2 Module Grafana
Grafana module for Icinga Web 2 (supports InfluxDB & Graphite)
Stars: ✭ 190 (+239.29%)
Mutual labels:  graphite
Es Stats
ElasticSearch cluster metrics -> Graphite
Stars: ✭ 91 (+62.5%)
Mutual labels:  graphite
Graphouse
Graphouse allows you to use ClickHouse as a Graphite storage.
Stars: ✭ 241 (+330.36%)
Mutual labels:  graphite
Sexigraf
SexiGraf is a vSphere centric Graphite appliance with a Grafana frontend.
Stars: ✭ 84 (+50%)
Mutual labels:  graphite
Graphite
Development repository for the graphite cookbook
Stars: ✭ 160 (+185.71%)
Mutual labels:  graphite
Netdata
Real-time performance monitoring, done right! https://www.netdata.cloud
Stars: ✭ 57,056 (+101785.71%)
Mutual labels:  graphite
Carbonapi
Implementation of graphite API (graphite-web) in golang
Stars: ✭ 243 (+333.93%)
Mutual labels:  graphite
Kenshin
Kenshin: A time-series database alternative to Graphite Whisper with 40x improvement in IOPS
Stars: ✭ 203 (+262.5%)
Mutual labels:  graphite

Nanotube: data router for Graphite

CI Go Report Card

This is the router (or relay, or reverse-proxy) for Graphite. It routes incoming records according to the specified rules. The Nanotube is designed for high-load systems. It is used at Booking.com to route up to a million incoming records/sec on a single box with a typical production config.

Build and run

  1. Clone the repo.
  2. Navigate to it and run make to build.
  3. Run it with
./nanotube -config config/config.toml

Command line options:

-config string
    Path to config file.
-validate
    Validate configuration files.
-version
    Print version info.
-confighash
    Print config hash info.

Go version

The only supported Go version is 1.20.

Supported platforms

are Linux and Darwin.

Record structure

The main supported protocol is line. The records have the structure:

path.path.path value datetime

See here for more details.

The support of Open Telemetry gRPC is experimental.

Zero-downtime reload

Nanotube supports zero-downtime reload that can be triggered with USR2 signal. It will update the binary and try to load updated config. If the config is invalid, the old instance will keep running.

Tags support

Tags are not supported. See [here]](#4) for details.

Design

Design details are in the design doc.

OpenTelemetry

We support OpenTelemetry by using v0.7.0 of protobuf protocol.

K8s support

Nanotube can run as a daemonset in k8s. It can play a role of the submission sidecar by injecting ports into tagged pods. See Nanokube doc for more info.

Acknowledgment

This program was originally developed for Booking.com. With approval from Booking.com, the code was generalized and published as Open Source on GitHub, for which the authors would like to express their gratitude.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].