All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
main.go
Exit code after showing a version.
main.go
Catch both SIGINT and SIGTERM and exit with 0 code.
- -graphiteAddress takes
hostname:port
pair. - Multiple senders allowed by repeating -graphiteAddress flag.
- -graphitePort flag.
- Init as go module.
receiver.go
10 minutes deadline for incoming connections.
main.go
-version flag to show Groxy version.
- Mutual TLS support.
- New parameter -forceTenant that allows to rewrite metric tenant if it is already set.
state
do not add dot to empty prefix at own metrics.
- -TLS argument in favor of -tlsOutput and -tlsInput.
- Add compression for both
receiver
andsender
. - New arguments: -tlsOutput, -tlsInput, -tlsInputCert, -tlsInputKey.
state
new metrics: OutBytes, OutBpm.
- hostname argument. Allows setting hostname instead of getting a real one (good for Docker).
- Wait time when no metrics are in the queue from 10 to 5 milliseconds.
- The size of a pack from 1000 to 10000. Default packs limit adjusted as well.
- Bump version.
- Do not die if runSender can't connect to Graphite server.
- Do not rewrite tenant if it is set.
- systemTenant and systemPrefix arguments to allow sending groxy metrix to some tenant and path different from main tenant and path.
- limitPerSec new argument to limit the number of metric packs sent per second. Default is 10 packs that is equals to 10x1000=10000 metrics per second or 600000 mpm.
- New metric PacksOverflewError exported as packs_overflew_error.
- Send pointers to Metric through chanels instead of Metric itself. Reduce memory consumption (~6-10 times).
- Replace uint64 with int64 for state counters.
- Refactor sendMetric.
- #1 use sync/atomic for counters.
- Replace int64 with uint64 for state counters.
- queue stat instead of out_queue because out_queue now shows diff between outputed and transformed metrics.
- Send groxy state as metrics to Graphite.
- Logging with logrus library.
- Both out_queue and transform_queue are not counters but calculated once per second.
- Groxy version to State.
- sendMetric changes.
- -immutablePrefix can be set many times and used as a slice.
- Use a single out connection and pass packs as pointers to array.
- Wrong TransformQueue-- action.
- Create multiple connections for Sender and send a number of packs to each before close.
- Stats server that returns current state by HTTP.
- Re-send of metrics after send failure.
- Sending to closed connections.
- Send connection TLS version pinned on 1.2 which fixed a CD termination error on Haproxy side.
- Connection options.
- CPU overload.
./.github/workflows/go.yml
CI that creates releases and builds an executable for it.
main.go
first working version.