Comments (3)
so I assume it is production ready (#35) by now. Is this correct?
go-carbon initially was created by @lomik to replace carbon-cache at the place where he worked back then and is also used at large scale at booking.com (and basically maintained by people who mostly work there).
As far as I know it still doesn't support necessary bits to make tags working and doesn't support pluggable storages (it is essentially whisper only). Other than that it should work as drop-in replacement and even provide extra features (like whisper compression).
Instead of carbon-c-relay you can use either carbon-relay-ng from Grafana - and it should be 100% compatible with carbon-relay. Alternatively you can use carbon-c-relay (either original or fork that is stored here - fork wasn't updated for quiet some time as original one had a period when it was not very stable and testing each release took some time and effort, and since I don't work at booking I don't have setup to extensively test relay). People at booking developed https://github.com/bookingcom/nanotube - it doesn't support tags, but claims to be faster than carbon-c-relay (which was faster than carbon-relay-ng, and that usually means less requirements for CPU) and support some other instrumentation features which others doesn't support. It is also written in Go.
About carbonapi - there is go-graphite/carbonapi that should be production ready and somewhat aims to be compatible with graphite-web (actually people behind grafana contributed really a lot of bugfixes and improvements for functions that are supported there, however there still might be behavioral difference between graphite-web and carbonapi) and it supports some other features, like you can add different backends and even use prometheus or victoriametrics as backend (though that is experimental) - and in case backend support tags - carbonapi will support tags as well.
There is bookingcom's fork of carbonapi (bookingcom/carbonapi) which forked from before tag support was implemented upstream and since then diverged quiet a bit (as well with aim to add more instrumentation support, etc, etc). It is used in production by booking.com as far as I know, so also can be considered as production ready.
I hope that helps. And for other questions, maybe @deniszh or some one else would be able to answer.
from go-carbon.
And about tagging support - after I finished my reply I've remembered that it is not entierly correct. go-carbon supports tags on write-path so you can feed it tagged metrics and it will store them correctly, it also supports tags if you'll use carbonlink (for fetching fresh data), but it doesn't have support on clusterserver part of the protocol as it was way more complex to properly implement and as well there were some concerns in terms of performacne with vanilla implementation of tags, those it was never finished (there were at least 3 attempts to do that - during internal hackathon in 2017 or 2018, then that work was picked up by @bom-d-van and he reimplemented backend part of it and I tried to implement APIs in ~2019, but haven't finished that job as I don't have a use case for it myself).
Maybe later there were other attempts, but I haven't heard about them.
from go-carbon.
Hi @Civil thanks for your detailed and fast reply.
go-carbon initially was created by @lomik to replace carbon-cache
That's perfect! My basic idea is to only have one instance of go-carbon by default, but to have the option to fire up more instances when required. At the moment most of our systems are running with 2 or 4 carbon-cache instances, but from what the readme claims about performance I guess go-carbon should handle this quite easily.
As far as I know it still doesn't support necessary bits to make tags working and doesn't support pluggable storages (it is essentially whisper only)
At the moment we do not use Tags
at all. I'm developer of an open source monitoring suite and we use Graphite as our primary time series database.
A typical series will be stored as: <host-uuid>.<service-uuid>.<metric>
, e.g: 03cb5ace-6dc1-455e-b311-18b37e8d1c87.d0e28652-36b8-4c80-a43b-a9f7f44090e0.rta
Instead of carbon-c-relay you can use either carbon-relay-ng from Grafana
That would be probably my go-to candidate
About carbonapi - there is go-graphite/carbonapi that should be production ready and somewhat aims to be compatible with graphite-web (actually people behind grafana contributed really a lot of bugfixes and improvements for functions that are supported there
This sounds good to me. We do not have very complex queries so probably everything will be working out of the box, especially due to most of the users are using Grafana anyways.
I will definitely give this approach a shot. It would be really cool if I could replace all Python components as they tend to break quite frequently. (new Python version, new pip --something options required etc)
Thanks again for your time, I appreciate this!
from go-carbon.
Related Issues (20)
- [Q] Kill signal for graceful stop by flushing to Whisper files? HOT 1
- [BUG] panic: runtime error: slice bounds out of range
- [Q] add more kind of metrics from prometheus api
- response does not respect aggregation function for request spanning multiple aggregation periods
- [BUG] v0.17.0 CPU usage problem HOT 4
- [Q]Flags do not work red hat 8 HOT 7
- [Q] Resizing compressed files? HOT 1
- [FR] Pluggable storage engines? HOT 3
- [FR] Disable logs for 404 errors
- [Q] short statsd flush interval causes missing data in grafana dashboard
- [Q] How is this meant to be installed? HOT 1
- [Q] Packages for Debian Bookworm HOT 2
- [BUG] Whispers under symlink are not returned for queries with wildcards HOT 6
- [BUG] If set to "carbon" user+group instead default root, the service start is stuck and no informative logs. HOT 1
- [Q]Force Carbonlink request? HOT 10
- [BUG] CVE-2020-13949 HOT 4
- [BUG] OOM (out of memory) recurring every 8-9 days HOT 10
- [Q] Is "workers" effectively bound to "max-cpu"? HOT 3
- [Q]How to build local version in order to investigate? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-carbon.