func (out *elasticsearchOutput) init( beat string, config outputs.MothershipConfig, topologyExpire int, ) error { tlsConfig, err := outputs.LoadTLSConfig(config.TLS) if err != nil { return err } clients, err := mode.MakeClients(config, makeClientFactory(beat, tlsConfig, config)) if err != nil { return err } timeout := elasticsearchDefaultTimeout if config.Timeout != 0 { timeout = time.Duration(config.Timeout) * time.Second } maxRetries := defaultMaxRetries if config.MaxRetries != nil { maxRetries = *config.MaxRetries } maxAttempts := maxRetries + 1 // maximum number of send attempts (-1 = infinite) if maxRetries < 0 { maxAttempts = 0 } var waitRetry = time.Duration(1) * time.Second var maxWaitRetry = time.Duration(60) * time.Second var m mode.ConnectionMode out.clients = clients if len(clients) == 1 { client := clients[0] m, err = mode.NewSingleConnectionMode(client, maxAttempts, waitRetry, timeout, maxWaitRetry) } else { loadBalance := config.LoadBalance == nil || *config.LoadBalance if loadBalance { m, err = mode.NewLoadBalancerMode(clients, maxAttempts, waitRetry, timeout, maxWaitRetry) } else { m, err = mode.NewFailOverConnectionMode(clients, maxAttempts, waitRetry, timeout) } } if err != nil { return err } if config.Save_topology { err := out.EnableTTL() if err != nil { logp.Err("Fail to set _ttl mapping: %s", err) // keep trying in the background go func() { for { err := out.EnableTTL() if err == nil { break } logp.Err("Fail to set _ttl mapping: %s", err) time.Sleep(5 * time.Second) } }() } } out.TopologyExpire = 15000 if topologyExpire != 0 { out.TopologyExpire = topologyExpire * 1000 // millisec } out.mode = m if config.Index != "" { out.index = config.Index } else { out.index = beat } return nil }
func (lj *logstash) init( beat string, config outputs.MothershipConfig, topologyExpire int, ) error { useTLS := false if config.TLS != nil { useTLS = !config.TLS.Disabled } timeout := logstashDefaultTimeout if config.Timeout != 0 { timeout = time.Duration(config.Timeout) * time.Second } defaultPort := logstashDefaultPort if config.Port != 0 { defaultPort = config.Port } var clients []mode.ProtocolClient var err error if useTLS { var tlsConfig *tls.Config tlsConfig, err = outputs.LoadTLSConfig(config.TLS) if err != nil { return err } clients, err = mode.MakeClients(config, makeClientFactory(timeout, func(host string) (TransportClient, error) { return newTLSClient(host, defaultPort, tlsConfig) })) } else { clients, err = mode.MakeClients(config, makeClientFactory(timeout, func(host string) (TransportClient, error) { return newTCPClient(host, defaultPort) })) } if err != nil { return err } sendRetries := defaultSendRetries if config.Max_retries != nil { sendRetries = *config.Max_retries } maxAttempts := sendRetries + 1 if sendRetries < 0 { maxAttempts = 0 } var m mode.ConnectionMode if len(clients) == 1 { m, err = mode.NewSingleConnectionMode(clients[0], maxAttempts, waitRetry, timeout, maxWaitRetry) } else { loadBalance := config.LoadBalance != nil && *config.LoadBalance if loadBalance { m, err = mode.NewLoadBalancerMode(clients, maxAttempts, waitRetry, timeout, maxWaitRetry) } else { m, err = mode.NewFailOverConnectionMode(clients, maxAttempts, waitRetry, timeout) } } if err != nil { return err } lj.mode = m if config.Index != "" { lj.index = config.Index } else { lj.index = beat } return nil }
func (lj *lumberjack) init( beat string, config outputs.MothershipConfig, topologyExpire int, ) error { useTLS := false if config.TLS != nil { useTLS = !config.TLS.Disabled } timeout := lumberjackDefaultTimeout if config.Timeout != 0 { timeout = time.Duration(config.Timeout) * time.Second } var clients []mode.ProtocolClient var err error if useTLS { var tlsConfig *tls.Config tlsConfig, err = outputs.LoadTLSConfig(config.TLS) if err != nil { return err } clients, err = makeClients(config, timeout, func(host string) (TransportClient, error) { return newTLSClient(host, tlsConfig) }) } else { clients, err = makeClients(config, timeout, func(host string) (TransportClient, error) { return newTCPClient(host) }) } if err != nil { return err } sendRetries := defaultSendRetries if config.Max_retries != nil { sendRetries = *config.Max_retries } var m mode.ConnectionMode if len(clients) == 1 { m, err = mode.NewSingleConnectionMode(clients[0], sendRetries, waitRetry, timeout) } else { loadBalance := config.LoadBalance == nil || *config.LoadBalance if loadBalance { m, err = mode.NewLoadBalancerMode(clients, sendRetries, waitRetry, timeout) } else { m, err = mode.NewFailOverConnectionMode(clients, sendRetries, waitRetry, timeout) } } if err != nil { return err } lj.mode = m return nil }