X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/85398442d095524c5b2f315c294ea81f9d17853b..163c8f8750193b791eb62f5a8d73dc44a006b69e:/services/keepstore/config.go diff --git a/services/keepstore/config.go b/services/keepstore/config.go index bbce883504..2bd989de30 100644 --- a/services/keepstore/config.go +++ b/services/keepstore/config.go @@ -9,17 +9,11 @@ import ( "encoding/json" "fmt" "io/ioutil" - "net/http" - "strconv" "strings" "time" "git.curoverse.com/arvados.git/sdk/go/arvados" - "git.curoverse.com/arvados.git/sdk/go/stats" - "github.com/Sirupsen/logrus" - "github.com/golang/protobuf/jsonpb" - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/sirupsen/logrus" ) type Config struct { @@ -40,6 +34,11 @@ type Config struct { EnableDelete bool TrashLifetime arvados.Duration TrashCheckInterval arvados.Duration + PullWorkers int + TrashWorkers int + EmptyTrashWorkers int + TLSCertificateFile string + TLSKeyFile string Volumes VolumeList @@ -48,8 +47,6 @@ type Config struct { debugLogf func(string, ...interface{}) ManagementToken string - - metrics } var ( @@ -94,11 +91,11 @@ func (cfg *Config) Start() error { cfg.debugLogf = func(string, ...interface{}) {} } - if f := formatter[strings.ToLower(cfg.LogFormat)]; f == nil { + f := formatter[strings.ToLower(cfg.LogFormat)] + if f == nil { return fmt.Errorf(`unsupported log format %q (try "text" or "json")`, cfg.LogFormat) - } else { - log.Formatter = f } + log.Formatter = f if cfg.MaxBuffers < 0 { return fmt.Errorf("MaxBuffers must be greater than zero") @@ -155,71 +152,15 @@ func (cfg *Config) Start() error { return nil } -type metrics struct { - registry *prometheus.Registry - reqDuration *prometheus.SummaryVec - timeToStatus *prometheus.SummaryVec - exportProm http.Handler -} - -func (*metrics) Levels() []logrus.Level { - return logrus.AllLevels -} - -func (m *metrics) Fire(ent *logrus.Entry) error { - if tts, ok := ent.Data["timeToStatus"].(stats.Duration); !ok { - } else if method, ok := ent.Data["reqMethod"].(string); !ok { - } else if code, ok := ent.Data["respStatusCode"].(int); !ok { - } else { - m.timeToStatus.WithLabelValues(strconv.Itoa(code), strings.ToLower(method)).Observe(time.Duration(tts).Seconds()) - } - return nil -} - -func (m *metrics) setup() { - m.registry = prometheus.NewRegistry() - m.timeToStatus = prometheus.NewSummaryVec(prometheus.SummaryOpts{ - Name: "time_to_status_seconds", - Help: "Summary of request TTFB.", - }, []string{"code", "method"}) - m.reqDuration = prometheus.NewSummaryVec(prometheus.SummaryOpts{ - Name: "request_duration_seconds", - Help: "Summary of request duration.", - }, []string{"code", "method"}) - m.registry.MustRegister(m.timeToStatus) - m.registry.MustRegister(m.reqDuration) - m.exportProm = promhttp.HandlerFor(m.registry, promhttp.HandlerOpts{ - ErrorLog: log, - }) - log.AddHook(m) -} - -func (m *metrics) exportJSON(w http.ResponseWriter, req *http.Request) { - jm := jsonpb.Marshaler{Indent: " "} - mfs, _ := m.registry.Gather() - w.Write([]byte{'['}) - for i, mf := range mfs { - if i > 0 { - w.Write([]byte{','}) - } - jm.Marshal(w, mf) - } - w.Write([]byte{']'}) -} - -func (m *metrics) Instrument(next http.Handler) http.Handler { - return promhttp.InstrumentHandlerDuration(m.reqDuration, next) -} - // VolumeTypes is built up by init() funcs in the source files that // define the volume types. var VolumeTypes = []func() VolumeWithExamples{} type VolumeList []Volume -// UnmarshalJSON, given an array of objects, deserializes each object -// as the volume type indicated by the object's Type field. -func (vols *VolumeList) UnmarshalJSON(data []byte) error { +// UnmarshalJSON -- given an array of objects -- deserializes each +// object as the volume type indicated by the object's Type field. +func (vl *VolumeList) UnmarshalJSON(data []byte) error { typeMap := map[string]func() VolumeWithExamples{} for _, factory := range VolumeTypes { t := factory().Type() @@ -252,7 +193,7 @@ func (vols *VolumeList) UnmarshalJSON(data []byte) error { if err != nil { return err } - *vols = append(*vols, vol) + *vl = append(*vl, vol) } return nil }