incorporate metrics.Agent into the controller (#270)

This commit is contained in:
Michael Quigley 2023-03-15 16:05:01 -04:00
parent b4d13e15f0
commit 89202873bc
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
7 changed files with 32 additions and 65 deletions

View File

@ -10,8 +10,14 @@ import (
var controllerCmd *controllerCommand
var metricsCmd = &cobra.Command{
Use: "metrics",
Short: "Metrics related commands",
}
func init() {
controllerCmd = newControllerCommand()
controllerCmd.cmd.AddCommand(metricsCmd)
rootCmd.AddCommand(controllerCmd.cmd)
}

View File

@ -1,62 +0,0 @@
package main
import (
"github.com/michaelquigley/cf"
"github.com/openziti/zrok/controller/config"
"github.com/openziti/zrok/controller/env"
"github.com/openziti/zrok/controller/metrics"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"os"
"os/signal"
"syscall"
"time"
)
var metricsCmd *cobra.Command
func init() {
metricsCmd = newMetricsCommand().cmd
controllerCmd.cmd.AddCommand(metricsCmd)
}
type metricsCommand struct {
cmd *cobra.Command
}
func newMetricsCommand() *metricsCommand {
cmd := &cobra.Command{
Use: "metrics <configPath>",
Short: "Start a zrok metrics agent",
Args: cobra.ExactArgs(1),
}
command := &metricsCommand{cmd}
cmd.Run = command.run
return command
}
func (cmd *metricsCommand) run(_ *cobra.Command, args []string) {
cfg, err := config.LoadConfig(args[0])
if err != nil {
panic(err)
}
logrus.Infof(cf.Dump(cfg, env.GetCfOptions()))
ma, err := metrics.Run(cfg.Metrics, cfg.Store)
if err != nil {
panic(err)
}
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
ma.Stop()
ma.Join()
os.Exit(0)
}()
for {
time.Sleep(30 * time.Minute)
}
}

View File

@ -3,7 +3,6 @@ package config
import (
"github.com/openziti/zrok/controller/env"
"github.com/openziti/zrok/controller/limits"
"github.com/openziti/zrok/controller/metrics"
"github.com/openziti/zrok/controller/metrics2"
"github.com/openziti/zrok/controller/zrokEdgeSdk"
"time"
@ -23,7 +22,7 @@ type Config struct {
Email *EmailConfig
Limits *limits.Config
Maintenance *MaintenanceConfig
Metrics *metrics.Config
Metrics *metrics2.Config
Registration *RegistrationConfig
ResetPassword *ResetPasswordConfig
Store *store.Config

View File

@ -3,6 +3,7 @@ package controller
import (
"context"
"github.com/openziti/zrok/controller/config"
"github.com/openziti/zrok/controller/metrics2"
"github.com/sirupsen/logrus"
"github.com/go-openapi/loads"
@ -70,6 +71,17 @@ func Run(inCfg *config.Config) error {
logrus.Warn("skipping influx client; no configuration")
}
if cfg.Metrics != nil && cfg.Metrics.Agent != nil && cfg.Metrics.Influx != nil {
ma, err := metrics2.NewAgent(cfg.Metrics.Agent, str, cfg.Metrics.Influx)
if err != nil {
return errors.Wrap(err, "error creating metrics agent")
}
if err := ma.Start(); err != nil {
return errors.Wrap(err, "error starting metrics agent")
}
defer func() { ma.Stop() }()
}
ctx, cancel := context.WithCancel(context.Background())
defer func() {
cancel()

View File

@ -35,10 +35,15 @@ func (a *Agent) Start() error {
a.srcJoin = srcJoin
go func() {
logrus.Info("started")
defer logrus.Info("stopped")
for {
select {
case event := <-a.events:
if usage, err := Ingest(event); err == nil {
if err := a.cache.addZrokDetail(usage); err != nil {
logrus.Error(err)
}
if err := a.snk.Handle(usage); err != nil {
logrus.Error(err)
}

View File

@ -1,6 +1,8 @@
package metrics2
import "github.com/openziti/zrok/controller/store"
import (
"github.com/openziti/zrok/controller/store"
)
type cache struct {
str *store.Store

View File

@ -1,5 +1,10 @@
package metrics2
type Config struct {
Influx *InfluxConfig
Agent *AgentConfig
}
type AgentConfig struct {
Source interface{}
}