You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.5 KiB
68 lines
1.5 KiB
package conf |
|
|
|
import ( |
|
"fmt" |
|
|
|
"github.com/BurntSushi/toml" |
|
|
|
"go-common/library/conf" |
|
"go-common/library/log" |
|
) |
|
|
|
const ( |
|
_agentConfigKey = "dapper-agent.toml" |
|
) |
|
|
|
// LoadAgentConfig LoadAgentConfig |
|
func LoadAgentConfig() (*AgentConfig, error) { |
|
if confPath != "" { |
|
cfg := new(AgentConfig) |
|
_, err := toml.DecodeFile(confPath, cfg) |
|
return cfg, err |
|
} |
|
return remoteAgentConfig() |
|
} |
|
|
|
// AgentConfig config for dapper agent |
|
type AgentConfig struct { |
|
Servers []string `toml:"servers"` |
|
Log *log.Config `toml:"log"` |
|
Queue *QueueConfig `toml:"queue"` |
|
UDPCollect UDPCollectConfig `toml:"udp_collect"` |
|
} |
|
|
|
// QueueConfig internal queue config |
|
type QueueConfig struct { |
|
// queue local stroage path |
|
MemBuckets int `toml:"mem_buckets"` |
|
BucketBytes int `toml:"bucket_bytes"` |
|
CacheDir string `toml:"cache_dir"` |
|
} |
|
|
|
// UDPCollectConfig collect config |
|
type UDPCollectConfig struct { |
|
Workers int `toml:"workers"` |
|
Addr string `toml:"addr"` |
|
} |
|
|
|
func remoteAgentConfig() (*AgentConfig, error) { |
|
client, err := conf.New() |
|
if err != nil { |
|
return nil, fmt.Errorf("new config center client error: %s", err) |
|
} |
|
data, ok := client.Value2(_agentConfigKey) |
|
if !ok { |
|
return nil, fmt.Errorf("load config center error key %s not found", _agentConfigKey) |
|
} |
|
cfg := new(AgentConfig) |
|
_, err = toml.Decode(data, cfg) |
|
if err != nil { |
|
return nil, fmt.Errorf("could not decode config file %s, error: %s", _agentConfigKey, err) |
|
} |
|
go func() { |
|
for range client.Event() { |
|
// ignore config change event |
|
} |
|
}() |
|
return cfg, nil |
|
}
|
|
|