Skip to content
Snippets Groups Projects
Commit 0182f845 authored by Tom Wilkie's avatar Tom Wilkie
Browse files

Make it a single binary.


Signed-off-by: default avatarTom Wilkie <tom.wilkie@gmail.com>
parent 04219738
No related branches found
No related tags found
No related merge requests found
......@@ -4,9 +4,7 @@ vendor/github.com/cortexproject/cortex/pkg/ingester/client/cortex.pb.go
vendor/github.com/cortexproject/cortex/pkg/ring/ring.pb.go
.pkg
.cache
cmd/distributor/distributor
cmd/ingester/ingester
cmd/querier/querier
cmd/tempo/tempo
cmd/promtail/promtail
*.output
/images/
......
FROM alpine:3.4
COPY distributor /bin/distributor
EXPOSE 80
ENTRYPOINT [ "/bin/distributor" ]
package main
import (
"flag"
"net/http"
"os"
"github.com/opentracing-contrib/go-stdlib/nethttp"
opentracing "github.com/opentracing/opentracing-go"
log "github.com/sirupsen/logrus"
"github.com/weaveworks/common/middleware"
"github.com/weaveworks/common/server"
"github.com/cortexproject/cortex/pkg/ring"
"github.com/cortexproject/cortex/pkg/util"
"google.golang.org/grpc"
"github.com/grafana/tempo/pkg/distributor"
"github.com/grafana/tempo/pkg/flagext"
)
func main() {
var (
flagset = flag.NewFlagSet("", flag.ExitOnError)
serverConfig = server.Config{
MetricsNamespace: "tempo",
GRPCMiddleware: []grpc.UnaryServerInterceptor{
middleware.ServerUserHeaderInterceptor,
},
}
ringConfig ring.Config
distributorConfig distributor.Config
)
flagext.RegisterConfigs(flagset, &serverConfig, &ringConfig, &distributorConfig)
flagset.Parse(os.Args[1:])
util.InitLogger(&serverConfig)
r, err := ring.New(ringConfig)
if err != nil {
log.Fatalf("Error initializing ring: %v", err)
}
defer r.Stop()
distributor, err := distributor.New(distributorConfig, r)
if err != nil {
log.Fatalf("Error initializing distributor: %v", err)
}
server, err := server.New(serverConfig)
if err != nil {
log.Fatalf("Error initializing server: %v", err)
}
defer server.Shutdown()
operationNameFunc := nethttp.OperationNameFunc(func(r *http.Request) string {
return r.URL.RequestURI()
})
server.HTTP.Handle("/api/prom/push", middleware.Merge(
middleware.Func(func(handler http.Handler) http.Handler {
return nethttp.Middleware(opentracing.GlobalTracer(), handler, operationNameFunc)
}),
middleware.AuthenticateUser,
).Wrap(http.HandlerFunc(distributor.PushHandler)))
server.HTTP.Handle("/ring", r)
server.Run()
}
FROM alpine:3.4
COPY ingester /bin/ingester
EXPOSE 80
ENTRYPOINT [ "/bin/ingester" ]
package main
import (
"flag"
"net/http"
"os"
"github.com/cortexproject/cortex/pkg/util"
log "github.com/sirupsen/logrus"
"github.com/weaveworks/common/middleware"
"github.com/weaveworks/common/server"
"google.golang.org/grpc"
"google.golang.org/grpc/health/grpc_health_v1"
"github.com/grafana/tempo/pkg/flagext"
"github.com/grafana/tempo/pkg/ingester"
"github.com/grafana/tempo/pkg/logproto"
)
func main() {
var (
flagset = flag.NewFlagSet("", flag.ExitOnError)
serverConfig = server.Config{
MetricsNamespace: "tempo",
GRPCMiddleware: []grpc.UnaryServerInterceptor{
middleware.ServerUserHeaderInterceptor,
},
GRPCStreamMiddleware: []grpc.StreamServerInterceptor{
middleware.StreamServerUserHeaderInterceptor,
},
}
ingesterConfig ingester.Config
)
flagext.RegisterConfigs(flagset, &serverConfig, &ingesterConfig)
flagset.Parse(os.Args[1:])
util.InitLogger(&serverConfig)
ingesterConfig.LifecyclerConfig.ListenPort = &serverConfig.GRPCListenPort
ingester, err := ingester.New(ingesterConfig)
if err != nil {
log.Fatalf("Error initializing ingester: %v", err)
}
defer ingester.Shutdown()
server, err := server.New(serverConfig)
if err != nil {
log.Fatalf("Error initializing server: %v", err)
}
defer server.Shutdown()
logproto.RegisterPusherServer(server.GRPC, ingester)
logproto.RegisterQuerierServer(server.GRPC, ingester)
grpc_health_v1.RegisterHealthServer(server.GRPC, ingester)
server.HTTP.Path("/ready").Handler(http.HandlerFunc(ingester.ReadinessHandler))
server.Run()
}
package main
import (
"flag"
"net/http"
"os"
"github.com/cortexproject/cortex/pkg/ring"
"github.com/cortexproject/cortex/pkg/util"
"github.com/opentracing-contrib/go-stdlib/nethttp"
opentracing "github.com/opentracing/opentracing-go"
log "github.com/sirupsen/logrus"
"github.com/weaveworks/common/middleware"
"github.com/weaveworks/common/server"
"google.golang.org/grpc"
"github.com/grafana/tempo/pkg/flagext"
"github.com/grafana/tempo/pkg/querier"
)
func main() {
var (
flagset = flag.NewFlagSet("", flag.ExitOnError)
operationNameFunc = nethttp.OperationNameFunc(func(r *http.Request) string {
return r.URL.RequestURI()
})
serverConfig = server.Config{
MetricsNamespace: "tempo",
GRPCMiddleware: []grpc.UnaryServerInterceptor{
middleware.ServerUserHeaderInterceptor,
},
}
ringConfig ring.Config
querierConfig querier.Config
)
flagext.RegisterConfigs(flagset, &serverConfig, &ringConfig, &querierConfig)
flagset.Parse(os.Args[1:])
util.InitLogger(&serverConfig)
r, err := ring.New(ringConfig)
if err != nil {
log.Fatalf("Error initializing ring: %v", err)
}
defer r.Stop()
querier, err := querier.New(querierConfig, r)
if err != nil {
log.Fatalf("Error initializing querier: %v", err)
}
server, err := server.New(serverConfig)
if err != nil {
log.Fatalf("Error initializing server: %v", err)
}
defer server.Shutdown()
httpMiddleware := middleware.Merge(
middleware.Func(func(handler http.Handler) http.Handler {
return nethttp.Middleware(opentracing.GlobalTracer(), handler, operationNameFunc)
}),
middleware.AuthenticateUser,
)
server.HTTP.Handle("/api/prom/query", httpMiddleware.Wrap(http.HandlerFunc(querier.QueryHandler)))
server.HTTP.Handle("/api/prom/label", httpMiddleware.Wrap(http.HandlerFunc(querier.LabelHandler)))
server.HTTP.Handle("/api/prom/label/{name}/values", httpMiddleware.Wrap(http.HandlerFunc(querier.LabelHandler)))
server.Run()
}
FROM alpine:3.4
COPY querier /bin/querier
COPY tempo /bin/tempo
EXPOSE 80
ENTRYPOINT [ "/bin/querier" ]
ENTRYPOINT [ "/bin/tempo" ]
package main
import (
"flag"
"net/http"
"os"
"github.com/opentracing-contrib/go-stdlib/nethttp"
opentracing "github.com/opentracing/opentracing-go"
log "github.com/sirupsen/logrus"
"github.com/weaveworks/common/middleware"
"github.com/weaveworks/common/server"
"github.com/cortexproject/cortex/pkg/ring"
"github.com/cortexproject/cortex/pkg/util"
"google.golang.org/grpc"
"google.golang.org/grpc/health/grpc_health_v1"
"github.com/grafana/tempo/pkg/distributor"
"github.com/grafana/tempo/pkg/flagext"
"github.com/grafana/tempo/pkg/ingester"
"github.com/grafana/tempo/pkg/logproto"
"github.com/grafana/tempo/pkg/querier"
)
type target struct {
deps []string
init func() error
stop func()
}
func main() {
var (
flagset = flag.NewFlagSet("", flag.ExitOnError)
serverConfig = server.Config{
MetricsNamespace: "tempo",
GRPCMiddleware: []grpc.UnaryServerInterceptor{
middleware.ServerUserHeaderInterceptor,
},
}
ringConfig ring.Config
distributorConfig distributor.Config
ingesterConfig ingester.Config
querierConfig querier.Config
)
flagext.RegisterConfigs(flagset, &serverConfig, &ringConfig, &distributorConfig,
&ingesterConfig, &querierConfig)
flagset.Parse(os.Args[1:])
util.InitLogger(&serverConfig)
server, err := server.New(serverConfig)
if err != nil {
log.Fatalf("Error initializing server: %v", err)
}
defer server.Shutdown()
var (
r *ring.Ring
d *distributor.Distributor
i *ingester.Ingester
q *querier.Querier
mods = map[string]target{
"ring": target{
init: func() (err error) {
r, err = ring.New(ringConfig)
return
},
stop: func() {
r.Stop()
},
},
"distributor": target{
deps: []string{"ring"},
init: func() (err error) {
d, err = distributor.New(distributorConfig, r)
if err != nil {
return
}
operationNameFunc := nethttp.OperationNameFunc(func(r *http.Request) string {
return r.URL.RequestURI()
})
server.HTTP.Handle("/api/prom/push", middleware.Merge(
middleware.Func(func(handler http.Handler) http.Handler {
return nethttp.Middleware(opentracing.GlobalTracer(), handler, operationNameFunc)
}),
middleware.AuthenticateUser,
).Wrap(http.HandlerFunc(d.PushHandler)))
server.HTTP.Handle("/ring", r)
return
},
stop: func() {},
},
"ingester": target{
deps: []string{"ring"},
init: func() (err error) {
ingesterConfig.LifecyclerConfig.ListenPort = &serverConfig.GRPCListenPort
i, err = ingester.New(ingesterConfig)
if err != nil {
return
}
logproto.RegisterPusherServer(server.GRPC, i)
logproto.RegisterQuerierServer(server.GRPC, i)
grpc_health_v1.RegisterHealthServer(server.GRPC, i)
server.HTTP.Path("/ready").Handler(http.HandlerFunc(i.ReadinessHandler))
return
},
stop: func() {
i.Shutdown()
},
},
"querier": target{
deps: []string{"ring"},
init: func() (err error) {
q, err = querier.New(querierConfig, r)
if err != nil {
return
}
operationNameFunc := nethttp.OperationNameFunc(func(r *http.Request) string {
return r.URL.RequestURI()
})
httpMiddleware := middleware.Merge(
middleware.Func(func(handler http.Handler) http.Handler {
return nethttp.Middleware(opentracing.GlobalTracer(), handler, operationNameFunc)
}),
middleware.AuthenticateUser,
)
server.HTTP.Handle("/api/prom/query", httpMiddleware.Wrap(http.HandlerFunc(q.QueryHandler)))
server.HTTP.Handle("/api/prom/label", httpMiddleware.Wrap(http.HandlerFunc(q.LabelHandler)))
server.HTTP.Handle("/api/prom/label/{name}/values", httpMiddleware.Wrap(http.HandlerFunc(q.LabelHandler)))
return
},
stop: func() {},
},
"lite": target{
deps: []string{"querier", "ingester", "distributor"},
init: func() (err error) {
return
},
stop: func() {},
},
}
)
var run func(mod string)
run = func(mod string) {
for _, dep := range mods[mod].deps {
run(dep)
}
if err := mods[mod].init(); err != nil {
log.Fatalf("Error initializing %s: %v", mod, err)
}
}
run(flagset.Arg(0))
server.Run()
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment