統計資料 (proto)

統計資料 架構概述

config.metrics.v3.StatsSink

[config.metrics.v3.StatsSink proto]

可外掛統計資料接收器的組態。

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

(字串) 要實例化的統計資料接收器的名稱。此名稱必須與支援的統計資料接收器相符。請參閱下方 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

(重複 config.metrics.v3.TagSpecifier) 每個統計資料名稱都會透過這些標籤指定器進行獨立處理。當標籤符合時,第一個捕獲群組不會立即從名稱中移除,因此稍後的TagSpecifiers也可以比對名稱的相同部分。完成所有標籤比對後,會產生已擷取標籤版本的名稱,並用於代表標籤的統計資料接收器中,例如 Prometheus。

use_all_default_tags

(BoolValue) 使用 Envoy 中指定的所有預設標籤正規表示式。這些可以與stats_tags中指定的自訂標籤結合。它們會在自訂標籤之前處理。

注意

如果任何預設標籤指定兩次,則會將組態視為無效。

請參閱well_known_names.h以取得 Envoy 中預設標籤的清單。

如果未提供,則會假設該值為 true。

stats_matcher

(config.metrics.v3.StatsMatcher) 用於統計資料名稱建立的包含/排除比對器。如果未提供,則會正常實例化所有統計資料。防止實例化某些統計資料系列可以改善執行特別大型組態的 Envoy 的記憶體效能。

警告

排除統計資料可能會以未記錄的方式影響 Envoy 的行為。請參閱issue #8771以取得更多資訊。如果觀察到任何非預期的行為變更,請立即開啟新問題。

histogram_bucket_settings

(重複 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

(布林值) 如果 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

(字串) 將識別碼附加至標籤值,以識別接收器中的標籤。Envoy 有一組預設名稱和正規表示式,可擷取現有統計資料的動態部分,這些名稱和正規表示式可在 Envoy 儲存庫中的well_known_names.h中找到。如果在組態中提供了tag_name,且未指定regexfixed_value,則 Envoy 會嘗試在其預設集中尋找該名稱,並使用隨附的正規表示式。

注意

統計資料名稱的拼寫方式可能使其符合同一標籤名稱的兩個不同標籤擷取器。在這種情況下,將會捨棄除一個之外的所有標籤值。未指定將保留哪個標籤值。擷取只會發生在擷取器之一上,並且只會從標籤名稱中移除符合的擷取。

regex

(字串) 指定要從標籤擷取名稱中移除的標籤,並將其做為所有統計資料的具名標籤值提供。只有在名稱的任何部分符合提供的一個或多個捕獲群組的正規表示式時,才會發生這種情況。

第一個捕獲群組會識別要移除的名稱部分。第二個捕獲群組 (通常會巢狀於第一個捕獲群組內) 將指定統計資料的標籤值。如果未提供第二個捕獲群組,則第一個捕獲群組也會用於設定標籤值。將忽略所有其他捕獲群組。

範例 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 的標籤值。它會將其留在名稱中,以便與其他標籤指定器進行潛在的比對。處理完所有標籤指定器後,會從名稱中移除標籤。

第二個正規表示式會根據原始統計資料名稱,使用值 connection_manager_1. 來填入標籤 envoy.http_conn_manager_prefix

最後一個步驟,移除比對的標籤,留下 http.user_agent.downstream_cx_total 做為標籤擷取名稱。

只能設定regexfixed_value之一。

fixed_value

(字串) 為 tag_name 指定固定標籤值。

只能設定regexfixed_value之一。

config.metrics.v3.HistogramBucketSettings

[config.metrics.v3.HistogramBucketSettings proto]

指定統計資料的比對器,以及符合的統計資料應使用的儲存區。

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

(type.matcher.v3.StringMatcher必要) 此規則適用的統計資料。比對會套用至原始統計資料名稱 (在標籤擷取之前),例如 cluster.exampleclustername.upstream_cx_length_ms

buckets

(重複 double必要) 每個值都是儲存區的上限。每個儲存區必須大於 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": ...
}
address

(config.core.v3.Address) 正在運行的符合 statsd 標準的監聽器的 UDP 位址。如果指定,統計數據將會刷新到這個位址。

必須設定 addresstcp_cluster_name 其中之一。

tcp_cluster_name

(string) 正在運行符合 TCP statsd 標準的監聽器的叢集名稱。如果指定,Envoy 將會連線到這個叢集以刷新統計數據。

必須設定 addresstcp_cluster_name 其中之一。

prefix

(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 sink 的統計數據配置 proto 架構。此 sink 會發出帶有 DogStatsD 相容標籤的統計數據。標籤可透過 StatsConfig 設定。

此擴充功能的完整名稱為 envoy.stat_sinks.dog_statsd

注意

此擴充功能不在資料平面上運作,因此旨在針對不受信任的流量保持強健性。

提示

此擴充功能擴展以下擴充功能類別,並可與之搭配使用

此擴充功能必須設定以下其中一個類型 URL

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

(config.core.v3.Address, 必填) 正在運行的符合 DogStatsD 標準的監聽器的 UDP 位址。如果指定,統計數據將會刷新到這個位址。

prefix

(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 sink 的統計數據配置 proto 架構。此 sink 會以 text/event-stream 格式化的串流發出統計數據,供 Hystrix 儀表板 使用。

請注意,只能設定單一 HystrixSink。

串流會透過管理端點 GET /hystrix_event_stream 啟動。

此擴充功能的完整名稱為 envoy.stat_sinks.hystrix

注意

此擴充功能不在資料平面上運作,因此旨在針對不受信任的流量保持強健性。

提示

此擴充功能擴展以下擴充功能類別,並可與之搭配使用

此擴充功能必須設定以下其中一個類型 URL

{
  "num_buckets": ...
}
num_buckets

(int64) 滾動統計視窗劃分的儲存區數量。

每次刷新 sink 時,都會對所有相關的 Envoy 統計數據進行取樣,並將其加入滾動視窗中 (在此過程中移除視窗中最舊的樣本)。然後,sink 會將目前滾動視窗中的彙總統計數據輸出到事件串流。

rolling_window(ms) = stats_flush_interval(ms) * num_of_buckets

更多詳細說明請參閱 Hystrix wiki