nanotube

module
v0.0.0-...-ec279c9 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2023 License: Apache-2.0

README

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]](https://github.com/bookingcom/nanotube/issues/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.

Directories

Path Synopsis
cmd
pkg
conf
Package conf represents configuration of the clusters set.
Package conf represents configuration of the clusters set.
in
k8s
rec
Package rec includes everything related to datapoint record.
Package rec includes everything related to datapoint record.
rewrites
Package rewrites provides primitives for working with rewrite rules.
Package rewrites provides primitives for working with rewrite rules.
rules
Package rules provides primitives for working with routing rules.
Package rules provides primitives for working with routing rules.
test

Jump to

Keyboard shortcuts

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