Add profiling
This commit is contained in:
parent
586440fe8d
commit
c620e4a005
@ -22,6 +22,7 @@ type TLSConnectionMonitor struct {
|
|||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
ListenAddr string `toml:"ListenAddr"`
|
ListenAddr string `toml:"ListenAddr"`
|
||||||
|
Profiling bool `toml:"Profiling"`
|
||||||
StepMonitors []StepMonitor `toml:"StepMonitors"`
|
StepMonitors []StepMonitor `toml:"StepMonitors"`
|
||||||
TLSConnectionMonitors []TLSConnectionMonitor `toml:"TLSConnectionMonitors"`
|
TLSConnectionMonitors []TLSConnectionMonitor `toml:"TLSConnectionMonitors"`
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Endpoint for the metrics server
|
# Endpoint for the metrics server
|
||||||
ListenAddr = ":9969"
|
ListenAddr = ":9969"
|
||||||
|
Profiling = true
|
||||||
|
|
||||||
# Monitor step-ca root certificate
|
# Monitor step-ca root certificate
|
||||||
[[StepMonitors]]
|
[[StepMonitors]]
|
||||||
|
22
main.go
22
main.go
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/http/pprof"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"time"
|
"time"
|
||||||
@ -31,8 +32,8 @@ func LoadConfig() (*config.Config, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// Load config
|
// Load cfg
|
||||||
config, err := LoadConfig()
|
cfg, err := LoadConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error loading config: %v\n", err)
|
fmt.Printf("Error loading config: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@ -45,7 +46,7 @@ func main() {
|
|||||||
|
|
||||||
// Setup stepmons
|
// Setup stepmons
|
||||||
var stepmons []*stepmon.StepMonitor
|
var stepmons []*stepmon.StepMonitor
|
||||||
for _, s := range config.StepMonitors {
|
for _, s := range cfg.StepMonitors {
|
||||||
if s.Enabled {
|
if s.Enabled {
|
||||||
sm := stepmon.NewStepMonitor(s.BaseURL, s.RootID)
|
sm := stepmon.NewStepMonitor(s.BaseURL, s.RootID)
|
||||||
sm.SetLogger(logger)
|
sm.SetLogger(logger)
|
||||||
@ -62,7 +63,7 @@ func main() {
|
|||||||
|
|
||||||
// Setup tlsconmons
|
// Setup tlsconmons
|
||||||
var tlsconmons []*tlsconmon.TLSConnectionMonitor
|
var tlsconmons []*tlsconmon.TLSConnectionMonitor
|
||||||
for _, t := range config.TLSConnectionMonitors {
|
for _, t := range cfg.TLSConnectionMonitors {
|
||||||
if t.Enabled {
|
if t.Enabled {
|
||||||
duration, err := time.ParseDuration(t.Duration)
|
duration, err := time.ParseDuration(t.Duration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -95,14 +96,21 @@ func main() {
|
|||||||
|
|
||||||
// Start http server
|
// Start http server
|
||||||
srv := &http.Server{}
|
srv := &http.Server{}
|
||||||
srv.Addr = config.ListenAddr
|
srv.Addr = cfg.ListenAddr
|
||||||
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.Handle("/metrics", promhttp.Handler())
|
|
||||||
srv.Handler = mux
|
srv.Handler = mux
|
||||||
|
|
||||||
|
mux.Handle("/metrics", promhttp.Handler())
|
||||||
|
|
||||||
|
if cfg.Profiling {
|
||||||
|
logger.Info("Profiling enabled, exposing /debug/pprof")
|
||||||
|
mux.HandleFunc("/debug/pprof/", pprof.Index)
|
||||||
|
}
|
||||||
|
|
||||||
// Start http server
|
// Start http server
|
||||||
go func() {
|
go func() {
|
||||||
logger.Info("Starting HTTP server", "addr", config.ListenAddr)
|
logger.Info("Starting HTTP server", "addr", cfg.ListenAddr)
|
||||||
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
||||||
logger.Error("HTTP server error", "error", err)
|
logger.Error("HTTP server error", "error", err)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user