Skip to content

Commit b77ff78

Browse files
committed
support expose metrics
1 parent bde6f6f commit b77ff78

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

api/pkg/filtermanager/config.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,11 @@ func (p *FilterManagerConfigParser) Parse(any *anypb.Any, callbacks capi.ConfigC
216216

217217
for _, proto := range plugins {
218218
name := proto.Name
219+
220+
if registerMetrics := pkgPlugins.LoadMetricsCallback(name); registerMetrics != nil {
221+
registerMetrics(callbacks)
222+
}
223+
219224
if plugin := pkgPlugins.LoadHTTPFilterFactoryAndParser(name); plugin != nil {
220225
config, err := plugin.ConfigParser.Parse(proto.Config)
221226
if err != nil {

api/pkg/plugins/plugins.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"errors"
2121
"runtime/debug"
2222

23+
capi "github.com/envoyproxy/envoy/contrib/golang/common/go/api"
2324
"mosn.io/htnn/api/internal/proto"
2425
"mosn.io/htnn/api/pkg/filtermanager/api"
2526
"mosn.io/htnn/api/pkg/log"
@@ -31,6 +32,7 @@ var (
3132
pluginTypes = map[string]Plugin{}
3233
plugins = map[string]Plugin{}
3334
httpFilterFactoryAndParser = map[string]*FilterFactoryAndParser{}
35+
metricsRegister = map[string]func(capi.ConfigCallbacks){}
3436
)
3537

3638
// Here we introduce extra struct to avoid cyclic import between pkg/filtermanager and pkg/plugins
@@ -188,6 +190,14 @@ func (cp *PluginConfigParser) Parse(any interface{}) (res interface{}, err error
188190
return conf, nil
189191
}
190192

193+
func RegisterMetricsCallback(pluginName string, registerMetricFunc func(capi.ConfigCallbacks)) {
194+
metricsRegister[pluginName] = registerMetricFunc
195+
}
196+
197+
func LoadMetricsCallback(pluginName string) func(capi.ConfigCallbacks) {
198+
return metricsRegister[pluginName]
199+
}
200+
191201
// PluginMethodDefaultImpl provides reasonable implementation for optional methods
192202
type PluginMethodDefaultImpl struct{}
193203

0 commit comments

Comments
 (0)