mirror of
https://github.com/ClusterCockpit/cc-metric-store.git
synced 2024-12-26 16:59:07 +01:00
More debug options
This commit is contained in:
parent
f3d7e5c28a
commit
ba67312c93
19
api.go
19
api.go
@ -145,10 +145,29 @@ func handleWrite(rw http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
bytes, err := io.ReadAll(r.Body)
|
bytes, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.Printf("error while reading request body: %s", err.Error())
|
||||||
http.Error(rw, err.Error(), http.StatusInternalServerError)
|
http.Error(rw, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if debugDump != io.Discard {
|
||||||
|
now := time.Now()
|
||||||
|
msg := make([]byte, 0, 512)
|
||||||
|
msg = append(msg, "\n--- local unix time: "...)
|
||||||
|
msg = strconv.AppendInt(msg, now.Unix(), 10)
|
||||||
|
msg = append(msg, " ---\n"...)
|
||||||
|
|
||||||
|
debugDumpLock.Lock()
|
||||||
|
defer debugDumpLock.Unlock()
|
||||||
|
if _, err := debugDump.Write(msg); err != nil {
|
||||||
|
log.Printf("error while writing to debug dump: %s", err.Error())
|
||||||
|
}
|
||||||
|
if _, err := debugDump.Write(bytes); err != nil {
|
||||||
|
log.Printf("error while writing to debug dump: %s", err.Error())
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
dec := lineprotocol.NewDecoderWithBytes(bytes)
|
dec := lineprotocol.NewDecoderWithBytes(bytes)
|
||||||
if err := decodeLine(dec, r.URL.Query().Get("cluster")); err != nil {
|
if err := decodeLine(dec, r.URL.Query().Get("cluster")); err != nil {
|
||||||
log.Printf("/api/write error: %s", err.Error())
|
log.Printf("/api/write error: %s", err.Error())
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
@ -101,12 +102,19 @@ type Config struct {
|
|||||||
RootDir string `json:"directory"`
|
RootDir string `json:"directory"`
|
||||||
DeleteInstead bool `json:"delete-instead"`
|
DeleteInstead bool `json:"delete-instead"`
|
||||||
} `json:"archive"`
|
} `json:"archive"`
|
||||||
|
Debug struct {
|
||||||
|
EnableGops bool `json:"gops"`
|
||||||
|
DumpToFile string `json:"dump-to-file"`
|
||||||
|
} `json:"debug"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var conf Config
|
var conf Config
|
||||||
var memoryStore *MemoryStore = nil
|
var memoryStore *MemoryStore = nil
|
||||||
var lastCheckpoint time.Time
|
var lastCheckpoint time.Time
|
||||||
|
|
||||||
|
var debugDumpLock sync.Mutex
|
||||||
|
var debugDump io.Writer = io.Discard
|
||||||
|
|
||||||
func loadConfiguration(file string) Config {
|
func loadConfiguration(file string) Config {
|
||||||
var config Config
|
var config Config
|
||||||
configFile, err := os.Open(file)
|
configFile, err := os.Open(file)
|
||||||
@ -232,15 +240,24 @@ func main() {
|
|||||||
flag.BoolVar(&enableGopsAgent, "gops", false, "Listen via github.com/google/gops/agent")
|
flag.BoolVar(&enableGopsAgent, "gops", false, "Listen via github.com/google/gops/agent")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if enableGopsAgent {
|
startupTime := time.Now()
|
||||||
|
conf = loadConfiguration(configFile)
|
||||||
|
memoryStore = NewMemoryStore(conf.Metrics)
|
||||||
|
|
||||||
|
if enableGopsAgent || conf.Debug.EnableGops {
|
||||||
if err := agent.Listen(agent.Options{}); err != nil {
|
if err := agent.Listen(agent.Options{}); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
startupTime := time.Now()
|
if conf.Debug.DumpToFile != "" {
|
||||||
conf = loadConfiguration(configFile)
|
f, err := os.Create(conf.Debug.DumpToFile)
|
||||||
memoryStore = NewMemoryStore(conf.Metrics)
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
debugDump = f
|
||||||
|
}
|
||||||
|
|
||||||
d, err := time.ParseDuration(conf.Checkpoints.Restore)
|
d, err := time.ParseDuration(conf.Checkpoints.Restore)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -323,4 +340,10 @@ func main() {
|
|||||||
log.Printf("Writing checkpoint failed: %s\n", err.Error())
|
log.Printf("Writing checkpoint failed: %s\n", err.Error())
|
||||||
}
|
}
|
||||||
log.Printf("Done! (%d files written)\n", files)
|
log.Printf("Done! (%d files written)\n", files)
|
||||||
|
|
||||||
|
if closer, ok := debugDump.(io.Closer); ok {
|
||||||
|
if err := closer.Close(); err != nil {
|
||||||
|
log.Printf("error: %s", err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user