用于打印各种类型元数据的格式化程序扩展(proto)
此扩展的限定名称为 envoy.formatter.metadata
注意
此扩展功能齐全,但尚未在生产环境中得到充分应用,使用时请注意此问题。
此扩展旨在对不受信任的下游和上游流量都具有鲁棒性。
提示
此扩展扩展了以下扩展类别,并可与之配合使用
此扩展必须使用以下类型 URL 中的一种进行配置
元数据格式化程序扩展实现 METADATA 命令运算符,该运算符打印所有类型的元数据。METADATA 运算符接受的第一个参数定义元数据的类型。支持以下类型的元数据(区分大小写)
DYNAMIC
CLUSTER
ROUTE
UPSTREAM_HOST
LISTENER
VIRTUAL_HOST
有关访问日志配置的更多信息,请参阅 此处。
- %METADATA(TYPE:NAMESPACE:KEY):Z%
Metadata 信息,其中 TYPE 是元数据的类型(有关支持的类型,请参见上文),NAMESPACE 是设置元数据时使用的过滤器命名空间,KEY 是命名空间中可选的查找键,可以选择指定用“:”分隔的嵌套键,Z 是可选参数,表示字符串截断至不超过 Z 个字符。数据将以 JSON 字符串形式记录。例如,对于以下 ROUTE 元数据
com.test.my_filter: {"test_key": "foo", "test_object": {"inner_key": "bar"}}
%METADATA(ROUTE:com.test.my_filter)% 将记录:
{"test_key": "foo", "test_object": {"inner_key": "bar"}}
%METADATA(ROUTE:com.test.my_filter:test_key)% 将记录:
foo
%METADATA(ROUTE:com.test.my_filter:test_object)% 将记录:
{"inner_key": "bar"}
%METADATA(ROUTE:com.test.my_filter:test_object:inner_key)% 将记录:
bar
%METADATA(ROUTE:com.unknown_filter)% 将记录:
-
%METADATA(ROUTE:com.test.my_filter:unknown_key)% 将记录:
-
%METADATA(ROUTE:com.test.my_filter):25% 将记录(截断至 25 个字符):
{"test_key": "foo", "test
注意
对于类型化 JSON 日志,当引用的键是简单值时,此运算符会使用字符串、数字或布尔类型渲染单个值。如果引用的键是结构或列表值,则会渲染 JSON 结构或列表。结构和列表可以嵌套。在任何情况下,都会忽略最大长度。
注意
METADATA(DYNAMIC:NAMESPACE:KEY):Z 等效于 DYNAMIC_METADATA(NAMESPACE:KEY):Z METADATA(CLUSTER:NAMESPACE:KEY):Z 等效于 CLUSTER_METADATA(NAMESPACE:KEY):Z METADATA(UPSTREAM_HOST:NAMESPACE:KEY):Z 等效于 UPSTREAM_METADATA(NAMESPACE:KEY):Z