统计信息(proto)

统计信息 架构概述.

config.metrics.v3.StatsSink

[config.metrics.v3.StatsSink proto]

可插拔统计信息接收器的配置。

{
  "name": ...,
  "typed_config": {...}
}
名称

(string) 要实例化的统计信息接收器的名称。名称必须与支持的统计信息接收器匹配。有关可用统计信息接收器默认列表,请参见 typed_config 下列出的扩展。接收器可以选择性地支持标记/多维指标。

typed_config

(Any) 统计信息接收器特定配置,这取决于正在实例化的接收器。有关示例,请参见 StatsdSink

config.metrics.v3.StatsConfig

[config.metrics.v3.StatsConfig proto]

统计信息配置,例如标记。

{
  "stats_tags": [],
  "use_all_default_tags": {...},
  "stats_matcher": {...},
  "histogram_bucket_settings": []
}
stats_tags

(repeated config.metrics.v3.TagSpecifier) 每个统计信息名称都会独立地通过这些标记说明符进行处理。当匹配到标记时,第一个捕获组不会立即从名称中删除,因此后面的 TagSpecifiers 也可以匹配该匹配的相同部分。在所有标记匹配完成后,会生成标记提取版本的名称,并在表示标记的统计信息接收器(例如 Prometheus)中使用。

use_all_default_tags

(BoolValue) 使用 Envoy 中指定的所有默认标记正则表达式。这些可以与 stats_tags 中指定的自定义标记组合使用。它们将在自定义标记之前进行处理。

注意

如果两次指定了任何默认标记,则配置将被视为无效。

有关 Envoy 中默认标记的列表,请参见 well_known_names.h

如果未提供,则该值假定为 true。

stats_matcher

(config.metrics.v3.StatsMatcher) 用于创建统计信息名称的包含/排除匹配器。如果未提供,则所有统计信息都将按正常方式实例化。防止实例化某些统计信息族可以提高运行特别大型配置的 Envoy 的内存性能。

警告

排除统计信息可能会以未记录的方式影响 Envoy 的行为。有关更多信息,请参见 问题 #8771。如果观察到任何意外的行为变化,请立即打开一个新问题。

histogram_bucket_settings

(repeated config.metrics.v3.HistogramBucketSettings) 定义用于设置直方图桶的规则。规则按顺序评估,第一个匹配项将被应用。如果未找到匹配项(或未设置任何规则),则使用以下默认桶

[
  0.5,
  1,
  5,
  10,
  25,
  50,
  100,
  250,
  500,
  1000,
  2500,
  5000,
  10000,
  30000,
  60000,
  300000,
  600000,
  1800000,
  3600000
]

config.metrics.v3.StatsMatcher

[config.metrics.v3.StatsMatcher proto]

禁用统计信息实例化的配置。

{
  "reject_all": ...,
  "exclusion_list": {...},
  "inclusion_list": {...}
}
reject_all

(bool) 如果 reject_all 为 true,则所有统计信息都将被禁用。如果 reject_all 为 false,则所有统计信息都将被启用。

必须设置 reject_allexclusion_listinclusion_list 中的其中一个。

exclusion_list

(type.matcher.v3.ListStringMatcher) 排他匹配。除了与提供的 StringMatcher proto 之一匹配的统计信息外,所有统计信息都将被启用。

必须设置 reject_allexclusion_listinclusion_list 中的其中一个。

inclusion_list

(type.matcher.v3.ListStringMatcher) 包含匹配。除了与提供的 StringMatcher proto 之一匹配的统计信息外,所有统计信息都将被禁用。

必须设置 reject_allexclusion_listinclusion_list 中的其中一个。

config.metrics.v3.TagSpecifier

[config.metrics.v3.TagSpecifier proto]

指定标记名称和值对。该值可以是固定值,也可以是通过捕获组提供值的正则表达式。如果使用固定值,则指定标记将无条件设置,否则,只有在正则表达式中匹配到一个或多个捕获组时才会设置。

{
  "tag_name": ...,
  "regex": ...,
  "fixed_value": ...
}
tag_name

(string) 将标识符附加到标记值以识别接收器中的标记。Envoy 有一组默认名称和正则表达式用于提取现有统计信息的动态部分,这些名称和正则表达式可以在 Envoy 存储库中的 well_known_names.h 中找到。如果在配置中提供了 tag_name,并且未指定 regexfixed_value,Envoy 将尝试在它的默认集合中找到该名称并使用随附的正则表达式。

注意

统计信息名称的拼写方式可能与同一标记名称的两个不同的标记提取器匹配。在这种情况下,除了一个标记值外,所有其他值都将被删除。未指定哪个标记值将被保留。提取只会在其中一个提取器中发生,并且只有匹配的提取将从标记名称中删除。

regex

(string) 指定要从标记提取的名称中剥离的标记,并为所有统计信息提供为命名标记值。这只有在名称的任何部分与提供的包含一个或多个捕获组的正则表达式匹配时才会发生。

第一个捕获组标识要删除的名称部分。第二个捕获组(通常嵌套在第一个捕获组中)将指定统计信息的标记值。如果未提供第二个捕获组,则第一个捕获组也将用于设置标记的值。所有其他捕获组将被忽略。

示例 1. 统计信息名称 cluster.foo_cluster.upstream_rq_timeout 和一个标记说明符

{
  "tag_name": "envoy.cluster_name",
  "regex": "^cluster\\.((.+?)\\.)"
}

请注意,正则表达式将删除 foo_cluster.,使标记提取的名称为 cluster.upstream_rq_timeout,而 envoy.cluster_name 的标记值为 foo_cluster(注意:由于第二个捕获组,将没有 . 字符)。

示例 2. 统计信息名称 http.connection_manager_1.user_agent.ios.downstream_cx_total 和两个标记说明符

[
  {
    "tag_name": "envoy.http_user_agent",
    "regex": "^http(?=\\.).*?\\.user_agent\\.((.+?)\\.)\\w+?$"
  },
  {
    "tag_name": "envoy.http_conn_manager_prefix",
    "regex": "^http\\.((.*?)\\.)"
  }
]

说明符的两个正则表达式将从细化的统计信息名称中进行处理。

第一个正则表达式将保存 ios. 作为 envoy.http_user_agent 的标记值。它将在名称中保留它,以便与其他标记说明符进行潜在的匹配。在所有标记说明符处理完毕后,标记将从名称中删除。

第二个正则表达式将根据原始统计信息名称,将标记 envoy.http_conn_manager_prefix 填充为值 connection_manager_1.

作为最后一步,匹配的标记将被删除,留下 http.user_agent.downstream_cx_total 作为标记提取的名称。

只能设置 regexfixed_value 中的一个。

fixed_value

(string) 为 tag_name 指定固定标记值。

只能设置 regexfixed_value 中的一个。

config.metrics.v3.HistogramBucketSettings

[config.metrics.v3.HistogramBucketSettings proto]

指定统计信息的匹配器以及匹配统计信息应使用的桶。

{
  "match": {...},
  "buckets": []
}
匹配

(type.matcher.v3.StringMatcher, REQUIRED) 此规则适用的统计信息。该匹配应用于标记提取之前的原始统计信息名称,例如 cluster.exampleclustername.upstream_cx_length_ms

(repeated double, REQUIRED) 每个值都是桶的上限。每个桶都必须大于 0 且唯一。桶的顺序无关紧要。

config.metrics.v3.StatsdSink

[config.metrics.v3.StatsdSink proto]

内置 envoy.stat_sinks.statsd 接收器的统计信息配置 proto 模式。此接收器不支持标记指标。

此扩展的限定名称为 envoy.stat_sinks.statsd

注意

此扩展不会在数据平面中运行,因此旨在对不受信任的流量具有鲁棒性。

提示

此扩展扩展并可用于以下扩展类别

此扩展必须使用以下类型 URL 中的其中一个进行配置

{
  "address": {...},
  "tcp_cluster_name": ...,
  "prefix": ...
}
地址

(config.core.v3.Address) 正在运行的 statsd 兼容侦听器的 UDP 地址。如果指定,统计信息将刷新到此地址。

必须设置 addresstcp_cluster_name 中的其中一个。

tcp_cluster_name

(string) 运行 TCP statsd 兼容侦听器的集群的名称。如果指定,Envoy 将连接到此集群以刷新统计信息。

必须设置 addresstcp_cluster_name 中的其中一个。

前缀

(string) StatsdSink 的可选自定义前缀。如果指定,这将覆盖默认前缀。例如

{
  "prefix" : "envoy-prod"
}

将更改发出的统计信息为

envoy-prod.test_counter:1|c
envoy-prod.test_timer:5|ms

请注意,如果未指定前缀,将使用默认前缀“envoy”。

带有默认前缀的统计信息

envoy.test_counter:1|c
envoy.test_timer:5|ms

config.metrics.v3.DogStatsdSink

[config.metrics.v3.DogStatsdSink proto]

内置 envoy.stat_sinks.dog_statsd 接收器的统计信息配置协议模式。该接收器以与 DogStatsD 兼容的标签发出统计信息。标签可以通过 StatsConfig 进行配置。

此扩展的限定名称为 envoy.stat_sinks.dog_statsd

注意

此扩展不会在数据平面中运行,因此旨在对不受信任的流量具有鲁棒性。

提示

此扩展扩展并可用于以下扩展类别

此扩展必须使用以下类型 URL 中的其中一个进行配置

{
  "address": {...},
  "prefix": ...,
  "max_bytes_per_datagram": {...}
}
地址

(config.core.v3.Address, REQUIRED) 正在运行的 DogStatsD 兼容侦听器的 UDP 地址。如果指定,统计信息将刷新到此地址。

前缀

(string) 可选的自定义指标名称前缀。有关更多详细信息,请参阅 StatsdSink 的 prefix 字段

max_bytes_per_datagram

(UInt64Value) 发送 UDP 消息时使用的可选最大数据报大小。默认情况下,Envoy 将为每个数据报发出一个指标。通过指定大于单个指标的最大大小,Envoy 将发出多个以换行符分隔的指标。最大数据报大小不应超过您的网络 MTU。

请注意,如果此值小于单个指标,则可能无法遵守。

config.metrics.v3.HystrixSink

[config.metrics.v3.HystrixSink proto]

内置 envoy.stat_sinks.hystrix 接收器的统计信息配置协议模式。该接收器以 text/event-stream 格式的流发出统计信息,供 Hystrix 仪表盘 使用。

请注意,只应配置一个 HystrixSink。

流是通过管理端点 GET /hystrix_event_stream 启动的。

此扩展的限定名称为 envoy.stat_sinks.hystrix

注意

此扩展不会在数据平面中运行,因此旨在对不受信任的流量具有鲁棒性。

提示

此扩展扩展并可用于以下扩展类别

此扩展必须使用以下类型 URL 中的其中一个进行配置

{
  "num_buckets": ...
}
num_buckets

(int64) 滚动统计窗口划分的桶数。

每次接收器刷新时,都会对所有相关的 Envoy 统计信息进行采样并将其添加到滚动窗口中(在此过程中删除窗口中最旧的样本)。然后,接收器将滚动窗口的当前汇总统计信息输出到事件流中。

rolling_window(ms) = stats_flush_interval(ms) * num_of_buckets

可以在 Hystrix wiki 中找到更详细的说明。