Browse Source

add: stat API

yll 4 years ago
parent
commit
6945fe6b17
3 changed files with 59 additions and 1 deletions
  1. 20 0
      engine/counters.go
  2. 36 0
      wukongd/http.go
  3. 3 1
      wukongd/main.go

+ 20 - 0
engine/counters.go

@@ -11,3 +11,23 @@ func (engine *Engine) NumDocumentsIndexed() uint64 {
 func (engine *Engine) NumDocumentsRemoved() uint64 {
 	return engine.numDocumentsRemoved
 }
+
+func (engine *Engine) NumDocumentsForceUpdated() uint64 {
+	return engine.numDocumentsForceUpdated
+}
+
+func (engine *Engine) NumIndexingRequests() uint64 {
+	return engine.numIndexingRequests
+}
+
+func (engine *Engine) NumRemovingRequests() uint64 {
+	return engine.numRemovingRequests
+}
+
+func (engine *Engine) NumForceUpdatingRequests() uint64 {
+	return engine.numForceUpdatingRequests
+}
+
+func (engine *Engine) NumDocumentsStored() uint64 {
+	return engine.numDocumentsStored
+}

+ 36 - 0
wukongd/http.go

@@ -82,6 +82,7 @@ func index_v1(w http.ResponseWriter, r *http.Request) {
 	var param ParamIndex
 	err := jsonBody(&w, r, &param)
 	if err != nil {
+		logger.Error().Err(err)
 		w.WriteHeader(http.StatusBadRequest)
 		return
 	}
@@ -133,6 +134,7 @@ func search_v1(w http.ResponseWriter, r *http.Request) {
 	})
 	sresp, err := json.Marshal(resp)
 	if err != nil {
+		logger.Error().Err(err)
 		w.WriteHeader(http.StatusInternalServerError)
 		return
 	}
@@ -147,4 +149,38 @@ func shutdown_v1(w http.ResponseWriter, r *http.Request) {
 
 func stat_v1(w http.ResponseWriter, r *http.Request) {
 	logger.Trace().Msg("stat")
+	v := map[string]interface{}{
+		"startAt":                  startedAt.Format("2006-01-02 15:04:05"),
+		"version":                  version,
+		"build":                    buildTime,
+		"commit":                   gitCommit,
+		"branch":                   gitBranch,
+		"log":                      config.Logger.File,
+		"logLevel":                 config.Logger.Level,
+		"httpAddr":                 config.Server.Addr,
+		"mode":                     config.Server.Mode,
+		"indexType":                config.Engine.IndexType,
+		"shardsNum":                config.Engine.ShardsNum,
+		"persistent":               config.Engine.Persistent,
+		"persistentEngine":         config.Engine.PersistentEngine,
+		"persistentFolder":         config.Engine.PersistentFolder,
+		"persistentShardsNum":      config.Engine.PersistentShardsNum,
+		"numTokenIndexAdded":       searcher.NumTokenIndexAdded(),
+		"numIndexingRequests":      searcher.NumIndexingRequests(),
+		"numDocumentsIndexed":      searcher.NumDocumentsIndexed(),
+		"numDocumentsRemoved":      searcher.NumDocumentsRemoved(),
+		"numRemovingRequests":      searcher.NumRemovingRequests(),
+		"numDocumentsForceUpdated": searcher.NumDocumentsForceUpdated(),
+		"numForceUpdatingRequests": searcher.NumForceUpdatingRequests(),
+		"numDocumentsStored":       searcher.NumDocumentsStored(),
+	}
+	b, err := json.Marshal(v)
+	if err != nil {
+		logger.Error().Err(err)
+		w.WriteHeader(http.StatusBadRequest)
+		return
+	}
+
+	w.WriteHeader(http.StatusOK)
+	fmt.Fprintf(w, `{"ec":0,"result":%s}`, string(b))
 }

+ 3 - 1
wukongd/main.go

@@ -7,6 +7,7 @@ import (
 	"os"
 	"os/signal"
 	"syscall"
+	"time"
 )
 
 import (
@@ -28,7 +29,8 @@ var (
 	test_conf   = flag.String("t", "", "test specified config file")
 	showVersion = flag.Bool("v", false, "display version")
 
-	chSig = make(chan os.Signal, 2)
+	chSig     = make(chan os.Signal, 2)
+	startedAt = time.Now()
 )
 
 func _main() {