stats: introduce CustomStatNamespaces.#17357
Conversation
|
@lizan could you take a quick view to see if my approach to thread-safety looks ok? I guess something like "dispatch on main thread" would be another approach rather than taking mutex like this, but I couldn't find the proper way to do that. |
lizan
left a comment
There was a problem hiding this comment.
I'm not keen into this approach, doesn't the wasm foreign function implementation has access to dispatcher?
|
yeah actually we can access to the main thread dispatcher here. Let me rework later. |
|
|
|
changed so we dispatch on main, rather than taking locks. |
|
Since the overall goal seems to be avoiding the |
ah that's good point and I think it's better UX. Let me rework. |
There was a problem hiding this comment.
I don't know enough about the current stats to know for sure, but isn't this too greedy? e.g. if someone defines cluster_foo metric in Wasm, wouldn't it automatically remove envoy_ prefix from all "native" metrics as well?
There was a problem hiding this comment.
yeah that's true.. maybe better have something like "is_native" flag in Metric class, and prefix "envoy_" based on it, rather than using registerPrometheusNamespace?
There was a problem hiding this comment.
Yeah, that sounds good to me... although, it seems that such solution was discussed in #11808, but the prefix list was added instead. cc @lizan @mandarjog @ggreenway @jmarantz
There was a problem hiding this comment.
I'm not familiar with wasm APIs at all, but could you require the plugin to register it's namespace, and clearly document that it should be specific to this plugin and not overlap with any existing native stat names, and that all plugin stats should be under that namespace? There's still the possibility of a plugin incorrectly registering for an incorrect prefix, but there's at least documentation about how to behave correctly to avoid such issues.
There was a problem hiding this comment.
I guess my point is why do we have those "namespaces" in the first place, when in reality it's only about separating native Envoy metrics that append envoy_ prefix from those that don't?
There was a problem hiding this comment.
Sorry I'm on vacation but I noticed this.
Oh sorry to interrupt you, and thanks for taking your time.
If this is really specific to wasm then it seems unclean to put a bit in the general stats structure to handle a special case.
This bit, say "is_custom_metric" flag, will be only set by Wasm for now since afaik Wasn extension is the only extension which defines non-Envoy-native metrics dynamically. But in the future, maybe other extensions would have that ability to define custom metrics.
There was a problem hiding this comment.
ping @jmarantz , wdyt ^^? Do you think the purpose is not worth a bit?
There was a problem hiding this comment.
@mathetake I think that we should do it, using flags to differentiate between Envoy's internal and Wasm/Lua/whatever metrics is much better UX than the need to register and use Prometheus namespaces.
There was a problem hiding this comment.
OK thank you all, I will rework this PR and add a "is_custom_metric" flag in Metric class to differentiate Envoy native metrics from others.
e8b4a24 to
a8536dc
Compare
|
coverage failure in http/cache seems caused by this https://github.com/envoyproxy/envoy/runs/3402140077 https://dev.azure.com/cncf/envoy/_build/results?buildId=86179&view=logs&j=bbe4b42d-86e6-5e9c-8a0b-fea01d818a24&t=e00c5a13-c6dc-5e9a-6104-69976170e881 .. will raise another PR: #17817 |
|
anyway I believe this is ready for review. |
|
sorry the one is actually for DCO - I used |
* return optional<view> for stripCustom... * use StatNamePool instead of *Set * add a TODO in prometheus_stats.cc for safer regex * not use inlined CustomStatNamespaces in tests Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
I will open an issue for this! cc @PiotrSikora Do you want to say anything? |
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
jmarantz
left a comment
There was a problem hiding this comment.
Looks great; couple of minor points and one concern around lifetime in your new StatName member var. But assuming at least the lifetime issue is commented on or just made safe by inspection, this is good from my end, and I'm ready for @mattklein123 to take another look.
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
mattklein123
left a comment
There was a problem hiding this comment.
Thanks for iterating on this!
|
Thank you so much for your reviews! @mattklein123 @jmarantz |
|
|
||
| #include "envoy/common/pure.h" | ||
|
|
||
| #include "absl/container/flat_hash_set.h" |
There was a problem hiding this comment.
unused here (only used in the impl)
Following the change in the Envoy upstream: envoyproxy/envoy#17357 Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
Link: https://code.alibaba-inc.com/Ingress/proxy-wasm-go-sdk/codereview/21792001 * Add Append/Prepend/Replace buffers, and remove SetBuffer to disambiguate. (tetratelabs#174) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> Co-authored-by: Pascal Wölfle (@pwoelfle) * Update TinyGo to 0.18 (tetratelabs#175) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update README.md (tetratelabs#176) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Use Go 1.16.5 on CI (tetratelabs#177) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Cleaned up envoy.yaml. (tetratelabs#178) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Updates linters (tetratelabs#179) Signed-off-by: Adrian Cole <adrian@tetrate.io> * doc: cleanup README, fix typo of WASM to Wasm. (tetratelabs#183) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Overhaul package structure, reduce the visible surface to users. (tetratelabs#184) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add API documentation and more refactoring. (tetratelabs#185) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add more comment on SendHttpResponse. (tetratelabs#186) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Introduce VMContext, rename RootContext -> PluginContext. (tetratelabs#187) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Complete the doc comment for all exported API. (tetratelabs#188) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Refactor towards End-use doc. (tetratelabs#190) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Modify shared_queue example: use define multiple plugins in singleton. (tetratelabs#191) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * doc: Add instruction for standalone projects. (tetratelabs#192) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix README: stop maintaining Envoy/Istio/Proxy-Wasm Go SDK tags (tetratelabs#193) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix a typo in the func description (tetratelabs#194) * Add developer guide of the SDK and Proxy-Wasm in general. (tetratelabs#189) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Run Envoy latest on e2e. (tetratelabs#197) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Not require size in Get{Plugin,VM}Configuration. (tetratelabs#198) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * fix: call setActiveContext in onTick. (tetratelabs#202) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Push Wasm images of examples to ghcr. (tetratelabs#203) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * examples: only push images on the main branch. (tetratelabs#204) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Package examples as OCI images. (tetratelabs#205) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix e2e cache failure. (tetratelabs#206) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * e2e: update Envoy versions. (tetratelabs#208) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Allow specifying gRPC status on SendHttpResponse. (tetratelabs#210) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update README: fix budge. (tetratelabs#211) * test: use prometheus endpoint for metrics test. (tetratelabs#212) Following the change in the Envoy upstream: envoyproxy/envoy#17357 Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Use TinyGo 0.20 & Go 1.17 (tetratelabs#213) - Removes bingo - replaced with native `go run package@version`. - Use `crypto/rand` package in the example - now we are able to use safer randoms in the host implementation. Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update Go version in go.mod. (tetratelabs#214) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * chore: update ABI name in the string. (tetratelabs#215) * Test: add Envoy v1.20 in the matrics. (tetratelabs#216) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix panic in dispatched callback on getting empty http trailers. (tetratelabs#218) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * proxytest: fix the behavior for empty header. (tetratelabs#221) * Check emptiness of path/data for property. (tetratelabs#222) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update TinyGo to 0.21.0 (tetratelabs#226) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add the ref to func-e in README.md. (tetratelabs#227) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add proxywasm.SetEffectiveContext (tetratelabs#229) This hostcall can be used to change the context after receiving types.PluginContext.OnQueueReady or types.PluginContext.OnTick. This can be useful if we need resume http request from those callbacks, for example. Fixes tetratelabs#228. Signed-off-by: Konstantin Misyutin <konstantin.misyutin@huawei.com> * Add Istio 1.12 in End-to-End test matrix. (tetratelabs#230) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Specify the Go 1.17+ requirement. (tetratelabs#231) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix wrong path size for SetProperty (tetratelabs#235) * Create default Http context in Hello world example. (tetratelabs#236) * Clarify the unimplemented error (tetratelabs#237) * ci: test on Envoy v1.21 (tetratelabs#238) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Allow foreign functions to be called with empty byte arrays (tetratelabs#239) * ci: comment why passing CGO=disabled explicitly (tetratelabs#241) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix a couple of typos (tetratelabs#242) * Update TinyGo to 0.22.0 (tetratelabs#243) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * example: using prometheus tags in custom metrics (tetratelabs#246) * Remove $ sign for easy cut&paste (tetratelabs#247) * ci: add Istio 1.13 e2e test (tetratelabs#248) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * ci: update Istio versions, and drop 1.10, 1.9 (tetratelabs#254) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Each example is an own go module (tetratelabs#265) * build: build each example in its dir (tetratelabs#266) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * chore: adds JSON validation example. (tetratelabs#264) * Fix OCI image build (tetratelabs#267) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix typo in func-e (tetratelabs#268) * Do not call callbacks for deleted contexts. (tetratelabs#270) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Improves json validation readme (tetratelabs#271) * chore: fixes typo. * docs: improves readme instructions. * chore: adds dockerfile. * chore: fixes httpbin sample yaml files. * tests: adds e2e test. * Small fixes to JSON validation example (tetratelabs#272) * ci: run e2e on Envoy 1.22 (tetratelabs#273) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Upgrade TinyGo to 0.23 (tetratelabs#279) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Polishes version updates (tetratelabs#280) Signed-off-by: Adrian Cole <adrian@tetrate.io> * Upgrade golangci-lint to 1.46.0 (tetratelabs#282) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update yaml.v3 dep in examples (tetratelabs#289) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update yaml.v3 dep (tetratelabs#290) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * ci: adds Istio 1.14 (tetratelabs#293) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Adds response headers test (tetratelabs#295) * Add GetCurrentResponseHeaders to proxytest interface * Add GetCurrentResponseHeaders implementation to httpHostEmulator * chore: adds demonstrating example. Co-authored-by: John Keates <5306980+johnkeates@users.noreply.github.com> * fix(proxytest): make headers and trailers case-insensitive (tetratelabs#298) Similarly to envoy, convert header and trailer keys to lower-case. This is particularly useful in Go given that the Go standard library uses a different format to deal with case-insensitiveness requirement. https://github.com/golang/go/blob/go1.18.3/src/net/http/header.go#L226-L229 * TinyGo 0.24.0 (tetratelabs#299) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * ci: adds Envoy 1.23 test (tetratelabs#301) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update README on installation (tetratelabs#303) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * example: multiple dispatches (tetratelabs#305) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Adds main_test.go for multiple dispatches example (tetratelabs#306) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Update Go to 1.18 in examples (tetratelabs#308) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Upgrade golangci-lint, goimports (tetratelabs#309) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Adds support for map-typed metadata (tetratelabs#310) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add a wrapper for running compiled wasm plugins with proxytest. (tetratelabs#311) Signed-off-by: Anuraag Agrawal <anuraaga@gmail.com> * Run example tests using compiled wasm binary too. (tetratelabs#312) This changes example unit tests to showcase that proxytest framework is not only able to run the unit test on the host, but also run compiled Wasm binaries powered by wazero. * Use tinygo default tag instead of explicit proxytest tag (tetratelabs#313) * Removes "proxytest" build tag completely (tetratelabs#314) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix getting http response body in proxytest (tetratelabs#315) * TinyGo 0.25.0 (tetratelabs#316) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Fix buffering of bodies in proxytest (tetratelabs#317) * Tweak definition of ci cache (tetratelabs#318) * Fixes Http Body e2e test: correctly retry in require.Eventually (tetratelabs#320) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add docs for HostEmulator (tetratelabs#319) * Updates to latest wazero, testify and golint (tetratelabs#321) Signed-off-by: Adrian Cole <adrian@tetrate.io> * deps: updates wazero to 1.0.0-beta.2 (tetratelabs#322) Signed-off-by: Adrian Cole <adrian@tetrate.io> * ci: adds Istio 1.15.0 (tetratelabs#325) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * Add build tag that prints timings of ABI method execution. (tetratelabs#327) Fixes tetratelabs#326 * Add sleep to timing test plugin to avoid sporadically logging 0s (tetratelabs#328) Add sleep to timing test plugin to avoid sporadically logging 0s. * Rename Test_onVmStart to Test_pluginInitialization (tetratelabs#329) * wazero: updates to 1.0.0-pre.2 (tetratelabs#331) Signed-off-by: Adrian Cole <adrian@tetrate.io> Co-authored-by: Takeshi Yoneda <takeshi@tetrate.io> * restores build.example target in Makefile (tetratelabs#336) * ci: adds Envoy 1.24 (tetratelabs#337) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * test framework: Implement ProxyGetProperty and ProxySetProperty (tetratelabs#332) * deps: updates wazero to 1.0.0-pre.3 (tetratelabs#338) Signed-off-by: Adrian Cole <adrian@tetrate.io> * Adds headers based on argument for "http_headers" example (tetratelabs#339) * ci: adds Istio 1.16 (tetratelabs#341) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * ci: upgrade TinyGo 0.26, drop EOL versions of Envoy/Istio (tetratelabs#343) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * deps: updates wazero to 1.0.0-pre.4 (tetratelabs#347) * deps: upgrade to wazero 1.0.0-pre.7 (tetratelabs#352) deps: upgrade to wazero 1.0.0-pre.7 * Update log descriptions (tetratelabs#351) * proxytest: ensure stdout/stderr are visible (tetratelabs#353) * ci: adds Envoy 1.25 (tetratelabs#354) * deps: updates wazero to 1.0.0-pre.8 (tetratelabs#355) Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com> * ci: update TinyGo to 0.27 (tetratelabs#356) Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io> * ci: adds Istio 1.17.0 (tetratelabs#357) * deps: updates wazero to 1.0.0-pre.9 (tetratelabs#358) Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com> * deps: updates wazero to 1.0.0-rc.1 (tetratelabs#361) Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com> * deps: updates wazero to 1.0.0-rc.2 (tetratelabs#366) Signed-off-by: Adrian Cole <adrian@tetrate.io> * Updates to latest versions and documents ABI used in wasmwrapper (tetratelabs#370) Signed-off-by: Adrian Cole <adrian@tetrate.io> * deps: updates wazero to 1.0.1 (tetratelabs#371) Signed-off-by: Adrian Cole <adrian@tetrate.io> * doc: add reference to nottinygc (tetratelabs#378) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * Fix typo in OVERVIEW.md (tetratelabs#384) * Updates TinyGo, adds latest Istio to e2e test (tetratelabs#385) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * Fix typo: ququeID->queueID, Therfore->Therefore (tetratelabs#387) Signed-off-by: yike21 <yike21@qq.com> * e2e: longer timeouts (tetratelabs#388) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * ci: update TinyGo to 0.29 (tetratelabs#392) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * chore: upgrades support for envoy and istio/proxyv2 (tetratelabs#393) * ci: Updates TinyGo to 0.30 (tetratelabs#395) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * Adds `properties` package (tetratelabs#399) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * Allows setting empty buffer vis SharedData API (tetratelabs#401) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * New properties API completion (tetratelabs#403) * chore: simplify properties. (tetratelabs#404) * properties: ensures enum naming consistency (tetratelabs#405) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * chore: upgrades support for latest envoy and istio/proxyv2 (tetratelabs#420) * chore: fixes typos (tetratelabs#419) * fix: body callbacks return the whole buffered body size (tetratelabs#418) * example: adds http_body_chunk (tetratelabs#421) * Updates dependencies (tetratelabs#424) Signed-off-by: Takeshi Yoneda <t.y.mathetake@gmail.com> * add redis support * Merge pull request #2 from rinfx/main add redis support * Merge pull request #3 from higress-group/support-redis Support redis * package rename * package rename * Update README.md * redis sdk update * Merge pull request #4 from higress-group/redis-update redis sdk update * Update README.md * support proxy wasm version 0.2.100 * Merge pull request #5 from johnlanni/proxy-wasm-0-2-100 support proxy wasm version 0.2.100 * chore: Add simple Redis call implementation to rootHostEmulator, it do not work right. * chore: Add Redis initialization func in rootHostEmulator to enable the test framework to be used, but the logic was NOT actually implemented This commit adds the implementation for the `ProxyRedisInit` function in the `rootHostEmulator` struct. It extracts the upstream, username, and password from the provided data and logs them. However, the actual implementation is still pending. Note: The recent user commits and repository commits were not relevant for generating this commit message. * Merge pull request #6 from TJKkking/main ProxyRedisInit and ProxyRedisCall functions are added in proxytest to enable the test framework to be used, but the logic is NOT actually implemented * feat: Add SendHttpResponseV2 function * Update proxywasm/hostcall.go * Merge pull request #7 from CH3CHO/feat/send-http-response-v2 feat: Add SendHttpResponseWithDetail function * fix: Fix an incorrect func name * Merge pull request #8 from CH3CHO/fix/send-http-response fix: Fix an incorrect func name * use nottinygc * Merge pull request #10 from johnlanni/add-nottinygc use nottinygc * Update Go Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Tidy all examples Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Add test coverage Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Update Go and TinyGo in pipelines Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Remove deprecated method Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Revert go version upgrade Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Add multiple variants Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Add example with go 1.23 Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Revert workflow changes Signed-off-by: Shubham Sharma <shubhash@microsoft.com> * Merge pull request #11 from shubham1172/shubham1172/update-go Add support for newer versions of Go * fix send local response with detail
This commit adds Stats::CustomStatNamespaces, and the concept of custom stat namespaces used by
extensions and stat sinks. Custom stat namespaces are registered by extensions
via the Stats::CustomStatNamespaces object owned by the API object, and user-defined metrics
created by these extensions are all prefixed by the namespace. For example,
Wasm extension registers "wasmcustom" as a custom stat namespace,
and all the metrics created by user Wasm programs are prefixed by "wasmcustom." internally.
This is mainly for distinguishing these "custom metrics" defined outside Envoy codebase from
the native metrics defined by Envoy codebase, and this way stat sinks are able to determine
how to expose these two kinds of metrics.
Notably this commit fixes #14920 and istio/istio#27635 by making changes to
prometheus stat handler so that it strips the metrics names prefixed
by custom stat namespaces and exposes the stripped ones as-is in the output.
Previously in the prometheus stat handler, Envoy prefixes all the metrics by "envoy_" for those who do not have
the prefixes registered statistically via PrometheusStatsFormatter::registerPrometheusNamespace.
That was not a good UX because, for example, Wasm extension users cannot register their own
prometheus namespaces at runtime and therefore they end up having
all of their own metrics prefixed by "envoy_" unless they have their own Envoy builds.
Consequently, we no longer need the static prometheus namespace registration mechanism,
so this commit also deletes the unneeded API.
Signed-off-by: Takeshi Yoneda takeshi@tetrate.io