/
config.go
66 lines (58 loc) · 1.79 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package config
import (
"github.com/go-kit/kit/log"
"github.com/openzipkin/zipkin-go"
zipkinhttp "github.com/openzipkin/zipkin-go/reporter/http"
_ "github.com/openzipkin/zipkin-go/reporter/recorder"
"github.com/pp553933054/micro-go-book/ch13-seckill/pkg/bootstrap"
_ "github.com/pp553933054/micro-go-book/ch13-seckill/pkg/bootstrap"
conf "github.com/pp553933054/micro-go-book/ch13-seckill/pkg/config"
"github.com/spf13/viper"
"os"
)
const (
kConfigType = "CONFIG_TYPE"
)
var ZipkinTracer *zipkin.Tracer
var Logger log.Logger
func init() {
Logger = log.NewLogfmtLogger(os.Stderr)
Logger = log.With(Logger, "ts", log.DefaultTimestampUTC)
Logger = log.With(Logger, "caller", log.DefaultCaller)
viper.AutomaticEnv()
initDefault()
if err := conf.LoadRemoteConfig(); err != nil {
Logger.Log("Fail to load remote config", err)
}
if err := conf.Sub("mysql", &conf.MysqlConfig); err != nil {
Logger.Log("Fail to parse mysql", err)
}
if err := conf.Sub("trace", &conf.TraceConfig); err != nil {
Logger.Log("Fail to parse trace", err)
}
zipkinUrl := "http://" + conf.TraceConfig.Host + ":" + conf.TraceConfig.Port + conf.TraceConfig.Url
Logger.Log("zipkin url", zipkinUrl)
initTracer(zipkinUrl)
}
func initDefault() {
viper.SetDefault(kConfigType, "yaml")
}
func initTracer(zipkinURL string) {
var (
err error
useNoopTracer = zipkinURL == ""
reporter = zipkinhttp.NewReporter(zipkinURL)
)
//defer reporter.Close()
zEP, _ := zipkin.NewEndpoint(bootstrap.DiscoverConfig.ServiceName, bootstrap.HttpConfig.Port)
ZipkinTracer, err = zipkin.NewTracer(
reporter, zipkin.WithLocalEndpoint(zEP), zipkin.WithNoopTracer(useNoopTracer),
)
if err != nil {
Logger.Log("err", err)
os.Exit(1)
}
if !useNoopTracer {
Logger.Log("tracer", "Zipkin", "type", "Native", "URL", zipkinURL)
}
}