mirror of
https://github.com/eliasstepanik/caddy-ingess.git
synced 2026-01-10 20:18:28 +00:00
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package global
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/caddyserver/caddy/v2"
|
|
"github.com/caddyserver/caddy/v2/caddyconfig"
|
|
"github.com/caddyserver/caddy/v2/modules/caddyhttp"
|
|
"github.com/caddyserver/ingress/pkg/converter"
|
|
"github.com/caddyserver/ingress/pkg/store"
|
|
)
|
|
|
|
type MetricsPlugin struct{}
|
|
|
|
func (p MetricsPlugin) IngressPlugin() converter.PluginInfo {
|
|
return converter.PluginInfo{
|
|
Name: "metrics",
|
|
New: func() converter.Plugin { return new(MetricsPlugin) },
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
converter.RegisterPlugin(MetricsPlugin{})
|
|
}
|
|
|
|
func (p MetricsPlugin) GlobalHandler(config *converter.Config, store *store.Store) error {
|
|
if store.ConfigMap.Metrics {
|
|
metricsRoute := caddyhttp.Route{
|
|
HandlersRaw: []json.RawMessage{json.RawMessage(`{ "handler": "metrics" }`)},
|
|
MatcherSetsRaw: []caddy.ModuleMap{{
|
|
"path": caddyconfig.JSON(caddyhttp.MatchPath{"/metrics"}, nil),
|
|
}},
|
|
}
|
|
|
|
config.GetMetricsServer().Routes = append(config.GetMetricsServer().Routes, metricsRoute)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Interface guards
|
|
var (
|
|
_ = converter.GlobalMiddleware(MetricsPlugin{})
|
|
)
|