- Make empty results ok #453
- carbonserver: /list_query?leaft_only=true and /admin/info?scopes=config #454
- Makefile: revert .SHELLFLAGS changes #456
- Upgrade to go-1.18 #460
- Removing DockerHub upload #461
- Introducing
persiter.oooDiscardedPoints
metric #463 - Fixing OOO discard metric overflow #464
- refactoring
persiter.oooDiscardedPoints
metric #TBD - Online Schema/Aggregation Migration #438
- tool/persister_configs_differ and -check-policies flag in go-carbon #438
- Another attempt to fix issues with release upload #449
- Fix issues with upload #448
- Fixing packaging #447
- carbonserver/quota: throughput racy counter fixes and refactoring #446
- trie: stop indexing empty directory nodes #445
- carbonserver: introduce new max-inflight-requests and no-service-when-index-is-not-ready configs #443
- Fix carbonserver render error race #442
- Pipeline improvements #441
- Add Kafka msgpack support #440
- carbonserver: introduce new api /metrics/list_query #435
- carbonserver: adds /admin/info endpoint for returning internal info #433
- carbonserver: fix a 404 related race condition in findCache #431
- carbonserver: log more detailed errors about symlink and continue trie index despite error #427
- Resolves #422 - Include section name when unknown aggregation method is used #423
- ctrie: a bug fix for trigram statNodes #419
- mod: upgrade to go 1.16 and drops SOURCES from Makefile #417
- carbonserver: change error/debug log destination to access.log for Ca... #416
- carbonserver: change max-metrics-globbed and max-metrics-rendered def... #416
- trie: numerious optimization and bug fixes for concurrent and realtim... #416
- cache-scan: only init Cache.Shard.adds when the feature is enabled #416
- receiver/kafka: fix ci lint errors #413
- receiver/kafka: moves time.NewTicker out of for loop #413
- receiver/kafka: fix kafka connection leaks when failing to consume pa... #413
- Fixing build on riscv64 (#410) #411
- trie/realtime: set wspConfigRetriever when realtime index is enabled #395 #396
- Go v1.15.3
- carbonserver: fix incorrect hanlding of counting and indexing files in updateFileList #385
- trie/bug fixes and finally adds some simple fuzzing logics #383
- Go v1.15.3
- carbonserver: fix findError information lost due to unexported fields #380
- Upgrade golangci-lint #378
- A concurrent version of trie index (#334)
- carbonserver: fix two panics related to prometheus #374 (#376)
- Add service.version for all the traces (#373)
- trie: add a little documentation about efficient metric naming patterns (#370)
- Implementing linters (#368)
- Go v1.15.1 (#367)
- Tracing/Opentelemetry (#364)
- [travis-ci] Add apt-get update and go mod vendor to sync gox installation in Travis (#361)
- Fix pubsub test (#360)
- fix packages.sh (#359)
- Migrate to go modules (#351)
- Moving to go-graphite organization (#347)
- Carbonlink support fixed with Python 3 Pickle Compatible Metric Request Parser (#340)
- (EXPERIMENTAL) Adding ability to update index for metrics even if there is no whisper file created on disk (#338)
- bugfix: unconfirmed metrics (#319)
- Implement context cancellations for find and find part of render (#307)
- (EXPERIMENTAL) Trie Index (#303)
- Populate metric details and access times only if stats are enabled (#299)
- Automatically delete empty whisper file caused by edge cases like server reboot (#293)
- (EXPERIMENTAL) Added new options and upgraded go-whisper library to have compressed format (cwhisper) support
- Accept UDP messages in plain protocol without trailing newline
- Added
whisper.hard-max-creates-per-second
option #242 - No longer trying to combine separate UDP messages from one sender into single stream
- [carbonserver] Added metrics for prometheus
- [carbonserver] Improved compatibility with graphite-web (#250, #251)
- Added
whisper.max-creates-per-second
option - Support multiple targets in carbonserver
- Support new
carbonapi_v3_pb
protocol. This allows recent versions of carbonapi to get metadata alongside with data
- Tags support was added (only with graphite-web)
- flock support for persister and carbonserver
cache.max-size
andcache.write-strategy
can be changed without restart (HUP signal)- Google PubSub protocol was added. It receives data from PubSub Subscriptions and can decode protobuf, plain, or pickle messages.
- The default format is plain. Specify protobuf or pickle by adding an attribute named 'content-type' to the PubSub messsages:
- application/protobuf
- application/python-pickle
- Sample configuration:
- The default format is plain. Specify protobuf or pickle by adding an attribute named 'content-type' to the PubSub messsages:
[receiver.pubsub]
protocol = "pubsub"
project = "project-name"
subscription = "subscription-name"
# receiver_go_routines = 4
# receiver_max_messages = 1000
# receiver_max_bytes = 500000000 # default 500MB
- GRPC api for query cache was added
- Added support for an unlimited number of receivers
- Protobuf protocol was added. Sample configuration:
[receiver.protobuf]
protocol = "protobuf"
listen = ":2005"
- HTTP protocol was added. It receives data from POST requests body. Data can be encoded in plain, pickle (Content-Type: application/python-pickle) and protobuf (Content-Type: application/protobuf) formats. Sample configuration:
[receiver.http]
protocol = "http"
listen = ":2006"
- Kafka protocol was added. It receives data from Kafka and can decode protobuf, plain or pickle messages. You need manually specify message format in the config file. Sample configuration:
[receiver.kafka]
protocol = "kafka"
parse-protocol = "protobuf" # can be also "plain" or "pickle"
brokers = [ "localhost:9092" ]
topic = "graphite"
partition = 0
state-file = "/var/lib/graphite/kafka.state"
initial-offset = "-30m" # In case of absent or damaged state file fetch last 30 mins of messages
Breaking changes:
- common: logfile and log-level in common config section are deprecated
- changed config defaults:
- user changed to
carbon
- whisper directory changed to
/var/lib/graphite/whisper/
- schemas config changed to
/etc/go-carbon/storage-schemas.conf
- user changed to
- rpm:
- binary moved to
/usr/bin/go-carbon
- configs moved to
/etc/go-carbon/
- binary moved to
- deb:
- binary moved to
/usr/bin/go-carbon
- binary moved to
Other changes:
- common: Requires Go 1.8 or newer
- common: Logging refactored. Format changed to structured JSON. Added support of multiple logging handlers with separate output, level and encoding
- dump/restore: New dump format. Added
go-carbon -cat filename
command for printing dump to console. New version of go-carbon can read old dump - dump/restore: [fix] go-carbon can not stop after dump (with enabled dump and carbonserver)
- carbonserver: [feature] IdleTimeout is now configurable in carbonserver part
- carbonserver: [feature] support /render query cache (query-cache-* options in config file)
- carbonserver: [feature] support /metrics/find cache (find-cache-* option in config file)
- carbonserver: [feature] support /metrics/details handler, that returns information about metrics (require enabled trigram-index)
- carbonserver: [feature] Add config option to disable trigram index (before that to disable index you should set scan-interval to 0)
- carbonserver: [fix] fix #146 (metrics_known was broken if metrics were not sent as counters)
- Always stop on USR2 signal (previously did not stop with disabled dump/restore) #135
- Completely new internal architecture
- Removed flush to whisper and stop on
USR2
signal. Use dump/restore instead - Removed global queue (channel) between receivers and cache, added optional per-receiver queues
- Built-in carbonserver (thanks Vladimir Smirnov)
- Added runtime tunables to internal metrics #70
- Bug fix: The synchronous config reload (HUP signal) and launch of the internal collecting statistics procedure (every "metric-interval") could cause deadlock (thanks Maxim Ivanov)
- Fully refactored and optimizer cache module (core of go-carbon) (thanks Maxim Ivanov)
- Added
noop
cache.write-strategy (thanks Maxim Ivanov) - New optional dump/restore functional for minimize data loss on restart
- Refactored internal stat mechanics.
common.graph-prefix
andcommon.metric-interval
now can be changed without restart (on HUP signal) - Customizable internal metrics endpoint.
common.metric-endpoint
param. Valid values: "local" and "" (write directly to whisper), "tcp://host:port", "udp://host:port"
- Added
cache.write-strategy
option (values "max" or "sorted") (thanks Alexander Akulov) commitedPoints
metric renamed tocommittedPoints
- Added sparse file creation (
whisper.sparse-create
config option) - Enable reload in init script (thanks Jose Riguera)
- Clean up schemas parser code (thanks Dieter Plaetinck)
- Better go-whisper error handling (thanks Hiroaki Nakamura)
- Don't try to create whisper file if exists with bad permissions #21
- Fixed problem: Points in queue (channel) between cache and persister subsystems was invisible for carbonlink
- Grace stop on
USR2
signal: close all socket listeners, flush cache to disk and stop carbon - Reload persister config (
whisper
section of main config,storage-schemas.conf
andstorage-aggregation.conf
) onHUP
signal - Fix bug: Cache may start save points only after first checkpoint
- Decimal numbers in log files instead of hexademical #22
- Fix bug: NaN values being saved in Whisper datafiles #17 (thanks Andrew Hayworth)
- Fix bug: may crash on bad pickle message with big message size in header #30. Added option
pickle.max-message-size
with 64 MB default value - Improved throttling (max-updates-per-second) performance #32
metric-interval
option
- Cache module optimization
- Fix RPM init script
- Improved validation of bad wsp files
- RPM init script checks config before restart
- Debug logging of bad pickle messages
- Fix bug in go-whisper library: UpdateMany saves first point if many points has identical timestamp
- Reduced error level of "bad messages" in tcp and pickle receivers. Now
info
- Configurable logging level.
log-level
option - Fix
wrong carbonlink request
error in log
-check-config
validates schemas and aggregation configs- Fix broken internal metrics
tcp.active
andpickle.active
- Optional udp incomplete messages logging:
log-incomplete
setting - Fixes for working on x86-32
- logging fsnotify: fix ONCE rotation bug
- Optional whisper throttle setting #8:
max-updates-per-second
- Fix bug in go-whisper: points in long archives missed if metrics retention count >=3
- Bug fix schemas parser
- Code refactoring and improved test coverage (thanks Dave Rawks)
- Bug fixes
- Log "create wsp" as debug
- Log UDP checkpoint (calculate stats every minute)
- Rotate logfile by inotify event (without HUP)
- Check logfile opened
- storage-aggregation.conf support
- Create and chown logfile before daemonize and change user
- Debian package (thanks Dave Rawks)
- Git submodule dependencies
- Init script for CentOS 6
- Makefile
- "make rpm" script
- Daemonize and run-as-user support
-check-config
option-pidfile
option
- First full-functional public version
- Logging with HUP rotation support
- UDP receiver
- Tcp receiver
- Pickle receiver
- TOML-configs
- Carbonlink
- Multi-persister support
- storage-schemas.conf support