diff options
| author | Shulhan <ms@kilabit.info> | 2019-01-04 16:07:58 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2019-01-04 16:07:58 +0700 |
| commit | ba7bb17a36b5611ecd2a22c1d7393343c44cc8d3 (patch) | |
| tree | 348209deb31540f88a743fad69b3d789cdf5db81 /config.go | |
| parent | a5d1c2878a207b4fdc9203134df17539970f10b8 (diff) | |
| download | haminer-ba7bb17a36b5611ecd2a22c1d7393343c44cc8d3.tar.xz | |
haminer: change buffered mode from max size to time interval
Previously, we forward the logs only if total collected logs in buffer
is greater or equal to 10.
This commit change the model into using time interval, where the logs
will be send every N seconds (default to 15 seconds).
Diffstat (limited to 'config.go')
| -rw-r--r-- | config.go | 36 |
1 files changed, 30 insertions, 6 deletions
@@ -8,6 +8,7 @@ import ( "log" "strconv" "strings" + "time" "github.com/shuLhan/share/lib/ini" ) @@ -16,6 +17,7 @@ import ( const ( ConfigKeyAcceptBackend = "accept_backend" ConfigKeyCaptureRequestHeader = "capture_request_header" + ConfigKeyForwardInterval = "forward_interval" ConfigKeyInfluxAPIWrite = "influxdb_api_write" ConfigKeyListen = "listen" ) @@ -24,7 +26,7 @@ const ( const ( defListenAddr = "127.0.0.1" defListenPort = 5140 - defMaxBufferedLogs = 10 + defForwardInterval = 15 * time.Second ) // @@ -39,6 +41,9 @@ type Config struct { // AcceptBackend list of backend to be filtered. AcceptBackend []string + // ForwardInterval define an interval where logs will be forwarded. + ForwardInterval time.Duration + // List of request headers to be parsed and mapped as keys in halog // output. RequestHeaders []string @@ -46,10 +51,6 @@ type Config struct { // InfluxAPIWrite define HTTP API to write to Influxdb. InfluxAPIWrite string - // MaxBufferedLogs define a number of logs that will be keep in buffer - // before being forwarded. - MaxBufferedLogs int - // retags contains list of pre-processing rules for tag. retags []*tagPreprocessor } @@ -62,7 +63,7 @@ func NewConfig() (cfg *Config) { return &Config{ ListenAddr: defListenAddr, ListenPort: defListenPort, - MaxBufferedLogs: defMaxBufferedLogs, + ForwardInterval: defForwardInterval, } } @@ -94,12 +95,35 @@ func (cfg *Config) Load(path string) { cfg.InfluxAPIWrite = v } + v, _ = in.Get("haminer", "", ConfigKeyForwardInterval) + cfg.SetForwardInterval(v) + sec := in.GetSection("preprocess", "tag") cfg.parsePreprocessTag(sec) } // +// SetForwardInterval set forward interval using string formatted, e.g. "20s" +// where "s" represent unit time in "second". +// +func (cfg *Config) SetForwardInterval(v string) { + if len(v) == 0 { + return + } + + var err error + + cfg.ForwardInterval, err = time.ParseDuration(v) + if err != nil { + log.Println("SetForwardInterval: ", err) + } + if cfg.ForwardInterval < defForwardInterval { + cfg.ForwardInterval = defForwardInterval + } +} + +// // SetListen will parse `v` value as "addr:port", and set config address and // port based on it. // |
