diff options
| -rw-r--r-- | config.go | 11 | ||||
| -rw-r--r-- | config_forwarder.go | 18 | ||||
| -rw-r--r-- | config_test.go | 16 | ||||
| -rw-r--r-- | haminer.go | 18 | ||||
| -rw-r--r-- | influxd_client.go | 4 |
5 files changed, 42 insertions, 25 deletions
@@ -22,7 +22,7 @@ const ( // Config define options to create and run Haminer instance. type Config struct { - Influxd ConfigForwarder + Forwarders map[string]*ConfigForwarder `ini:"forwarder"` // Listen is the address where Haminer will bind and receiving // log from HAProxy. @@ -68,6 +68,7 @@ func (cfg *Config) Load(path string) (err error) { logp = `Load` in *ini.Ini + fw *ConfigForwarder ) in, err = ini.Open(path) @@ -89,9 +90,11 @@ func (cfg *Config) Load(path string) (err error) { return fmt.Errorf(`%s: %w`, logp, err) } - err = cfg.Influxd.init() - if err != nil { - return fmt.Errorf(`%s: %w`, logp, err) + for _, fw = range cfg.Forwarders { + err = fw.init() + if err != nil { + return fmt.Errorf(`%s: %w`, logp, err) + } } return nil diff --git a/config_forwarder.go b/config_forwarder.go index 357f562..408d1bd 100644 --- a/config_forwarder.go +++ b/config_forwarder.go @@ -10,27 +10,29 @@ const ( influxdVersion1 = `v1` influxdVersion2 = `v2` + + forwarderInfluxd = `influxd` ) -// ConfigForwarder contains configuration for forwarding the logs to Influxd. +// ConfigForwarder contains configuration for forwarding the logs. type ConfigForwarder struct { - Version string `ini:"forwarder:influxd:version"` + Version string `ini:"::version"` - Url string `ini:"forwarder:influxd:url"` + Url string `ini:"::url"` apiWrite string headerToken string - Bucket string `ini:"forwarder:influxd:bucket"` + Bucket string `ini:"::bucket"` // Fields for HTTP API v1. - User string `ini:"forwarder:influxd:user"` - Pass string `ini:"forwarder:influxd:pass"` + User string `ini:"::user"` + Pass string `ini:"::pass"` // Fields for HTTP API v2. - Org string `ini:"forwarder:influxd:org"` - Token string `ini:"forwarder:influxd:token"` + Org string `ini:"::org"` + Token string `ini:"::token"` } // init check, validate, and initialize the configuration values. diff --git a/config_test.go b/config_test.go index 779c59a..244bfa6 100644 --- a/config_test.go +++ b/config_test.go @@ -57,13 +57,15 @@ func TestLoad(t *testing.T) { desc: "With path exist", in: "testdata/haminer.conf", exp: &Config{ - Influxd: ConfigForwarder{ - Version: `v2`, - Url: `http://127.0.0.1:8086`, - Org: `kilabit.info`, - Bucket: `haproxy`, - apiWrite: `http://127.0.0.1:8086/api/v2/write?bucket=haproxy&org=kilabit.info&precision=ns`, - headerToken: `Token `, + Forwarders: map[string]*ConfigForwarder{ + `influxd`: &ConfigForwarder{ + Version: `v2`, + Url: `http://127.0.0.1:8086`, + Org: `kilabit.info`, + Bucket: `haproxy`, + apiWrite: `http://127.0.0.1:8086/api/v2/write?bucket=haproxy&org=kilabit.info&precision=ns`, + headerToken: `Token `, + }, }, Listen: `0.0.0.0:8080`, listenAddr: `0.0.0.0`, @@ -39,15 +39,21 @@ func NewHaminer(cfg *Config) (h *Haminer) { } func (h *Haminer) createForwarder() { - if len(h.cfg.Influxd.Url) == 0 { - return - } - var ( - fwder = NewInfluxdClient(&h.cfg.Influxd) + fwCfg *ConfigForwarder + influxdc *InfluxdClient + fwName string ) - h.ff = append(h.ff, fwder) + for fwName, fwCfg = range h.cfg.Forwarders { + switch fwName { + case forwarderInfluxd: + influxdc = NewInfluxdClient(fwCfg) + if influxdc != nil { + h.ff = append(h.ff, influxdc) + } + } + } } // Start will listen for UDP packet and start consuming log, parse, and diff --git a/influxd_client.go b/influxd_client.go index 9c71523..7c8a54a 100644 --- a/influxd_client.go +++ b/influxd_client.go @@ -54,6 +54,10 @@ type InfluxdClient struct { // NewInfluxdClient will create, initialize, and return new Influxd client. func NewInfluxdClient(cfg *ConfigForwarder) (cl *InfluxdClient) { + if len(cfg.Url) == 0 { + return nil + } + cl = &InfluxdClient{ cfg: cfg, } |
