10666: Replaced 'version' package with 'version' var
[arvados.git] / services / health / main.go
1 package main
2
3 import (
4         "flag"
5         "fmt"
6         "net/http"
7         "os"
8
9         "git.curoverse.com/arvados.git/sdk/go/arvados"
10         "git.curoverse.com/arvados.git/sdk/go/health"
11         "git.curoverse.com/arvados.git/sdk/go/httpserver"
12         log "github.com/Sirupsen/logrus"
13 )
14
15 var version = "dev"
16
17 func main() {
18         configFile := flag.String("config", arvados.DefaultConfigFile, "`path` to arvados configuration file")
19         getVersion := flag.Bool("version", false, "Print version information and exit.")
20         flag.Parse()
21
22         // Print version information if requested
23         if *getVersion {
24                 fmt.Printf("Version: %s\n", version)
25                 os.Exit(0)
26         }
27
28         log.SetFormatter(&log.JSONFormatter{
29                 TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00",
30         })
31         log.Printf("arvados health %q started", version)
32
33         cfg, err := arvados.GetConfig(*configFile)
34         if err != nil {
35                 log.Fatal(err)
36         }
37         clusterCfg, err := cfg.GetCluster("")
38         if err != nil {
39                 log.Fatal(err)
40         }
41         nodeCfg, err := clusterCfg.GetThisSystemNode()
42         if err != nil {
43                 log.Fatal(err)
44         }
45
46         log := log.WithField("Service", "Health")
47         srv := &httpserver.Server{
48                 Addr: nodeCfg.Health.Listen,
49                 Server: http.Server{
50                         Handler: &health.Aggregator{
51                                 Config: cfg,
52                                 Log: func(req *http.Request, err error) {
53                                         log.WithField("RemoteAddr", req.RemoteAddr).
54                                                 WithField("Path", req.URL.Path).
55                                                 WithError(err).
56                                                 Info("HTTP request")
57                                 },
58                         },
59                 },
60         }
61         if err := srv.Start(); err != nil {
62                 log.Fatal(err)
63         }
64         log.WithField("Listen", srv.Addr).Info("listening")
65         if err := srv.Wait(); err != nil {
66                 log.Fatal(err)
67         }
68 }