{"id":19607074,"url":"https://github.com/bookingcom/nanotube","last_synced_at":"2025-04-09T10:09:01.734Z","repository":{"id":39585230,"uuid":"229038571","full_name":"bookingcom/nanotube","owner":"bookingcom","description":"High-performance router for Graphite.","archived":false,"fork":false,"pushed_at":"2025-04-01T01:07:15.000Z","size":75434,"stargazers_count":58,"open_issues_count":11,"forks_count":12,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-02T03:32:22.023Z","etag":null,"topics":["go","graphite","monitoring"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bookingcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-19T11:16:01.000Z","updated_at":"2025-03-17T09:51:24.000Z","dependencies_parsed_at":"2025-02-07T13:12:48.316Z","dependency_job_id":"8e06b376-82a3-4bc5-a63d-ae40cc5c3ebd","html_url":"https://github.com/bookingcom/nanotube","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bookingcom%2Fnanotube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bookingcom%2Fnanotube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bookingcom%2Fnanotube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bookingcom%2Fnanotube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bookingcom","download_url":"https://codeload.github.com/bookingcom/nanotube/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248018060,"owners_count":21034048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","graphite","monitoring"],"created_at":"2024-11-11T10:08:43.964Z","updated_at":"2025-04-09T10:09:01.698Z","avatar_url":"https://github.com/bookingcom.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nanotube: data router for Graphite\n\n![CI](https://github.com/bookingcom/nanotube/workflows/CI/badge.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/bookingcom/nanotube)](https://goreportcard.com/report/github.com/bookingcom/nanotube)\n\n\nThis 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.\n\n## Build and run\n\n1. Clone the repo.\n2. Navigate to it and run\n`make`\nto build.\n3. Run it with\n\n```\n./nanotube -config config/config.toml\n```\n\nCommand line options:\n\n```\n-config string\n    Path to config file.\n-validate\n    Validate configuration files.\n-version\n    Print version info.\n-confighash\n    Print config hash info.\n```\n\n### Go version\n\nThe supported Go version is `1.21` or newer. We're usually support current go version and two previous releases.\n\n### Supported platforms\n\nare *Linux* and *Darwin*.\n\n## Record structure\n\nThe main supported protocol is [line](https://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol). The records have the structure:\n\n```\npath.path.path value datetime\n```\n\nSee [here](docs/record_parsing.md) for more details.\n\nThe support of [Open Telemetry gRPC](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto) is experimental.\n\n## Zero-downtime reload\n\nNanotube 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.\n\n## Tags support\n\nTags are not supported. See [here]](https://github.com/bookingcom/nanotube/issues/4) for details.\n\n## Design\n\nDesign details are in the design [doc](docs/design.md).\n\n## OpenTelemetry\n\nWe support OpenTelemetry by using [v0.7.0 of protobuf protocol](https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v0.7.0).\n\n## K8s support\n\nNanotube 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](test/k8s/README.md) for more info.\n\n## Acknowledgment\n\nThis 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbookingcom%2Fnanotube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbookingcom%2Fnanotube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbookingcom%2Fnanotube/lists"}