b6358deefcf8d333971435b2a9ede4021bc68f54
[arvados.git] / services / health / main.go
1 package main
2
3 import (
4         "flag"
5         "net/http"
6
7         "git.curoverse.com/arvados.git/sdk/go/arvados"
8         "git.curoverse.com/arvados.git/sdk/go/health"
9         "git.curoverse.com/arvados.git/sdk/go/httpserver"
10         log "github.com/Sirupsen/logrus"
11 )
12
13 func main() {
14         configFile := flag.String("config", arvados.DefaultConfigFile, "`path` to arvados configuration file")
15         flag.Parse()
16
17         log.SetFormatter(&log.JSONFormatter{
18                 TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00",
19         })
20         cfg, err := arvados.GetConfig(*configFile)
21         if err != nil {
22                 log.Fatal(err)
23         }
24         clusterCfg, err := cfg.GetCluster("")
25         if err != nil {
26                 log.Fatal(err)
27         }
28         nodeCfg, err := clusterCfg.GetThisSystemNode()
29         if err != nil {
30                 log.Fatal(err)
31         }
32
33         log := log.WithField("Service", "Health")
34         srv := &httpserver.Server{
35                 Addr: nodeCfg.Health.Listen,
36                 Server: http.Server{
37                         Handler: &health.Aggregator{
38                                 Config: cfg,
39                                 Log: func(req *http.Request, err error) {
40                                         log.WithField("RemoteAddr", req.RemoteAddr).
41                                                 WithField("Path", req.URL.Path).
42                                                 WithError(err).
43                                                 Info("HTTP request")
44                                 },
45                         },
46                 },
47         }
48         if err := srv.Start(); err != nil {
49                 log.Fatal(err)
50         }
51         log.WithField("Listen", srv.Addr).Info("listening")
52         if err := srv.Wait(); err != nil {
53                 log.Fatal(err)
54         }
55 }