管理介面
Envoy 暴露了一個本地管理介面,可以用於查詢和修改伺服器的不同方面
注意
目前形式的管理介面允許執行破壞性操作(例如,關閉伺服器),也可能暴露私人資訊(例如,統計數據、叢集名稱、憑證資訊等)。**至關重要**的是,僅允許透過安全網路存取管理介面。同樣**至關重要**的是,存取管理介面的主機**僅**連接到安全網路(即,避免 CSRF 攻擊)。這涉及到設定適當的防火牆,或者最佳方式是僅允許透過 localhost 存取管理監聽器。這可以使用類似以下的 v2 組態來完成
admin:
profile_path: /tmp/envoy.prof
address:
socket_address: { address: 127.0.0.1, port_value: 9901 }
未來將在管理介面中新增額外的安全性選項。這項工作會在 此 issue 中追蹤。
所有變更必須以 HTTP POST 操作發送。當透過 GET 請求變更時,請求不會產生任何效果,並且會返回 HTTP 400 (無效請求) 回應。
注意
對於具有 *?format=json* 的端點,它會將資料轉儲為 JSON 序列化的 proto。具有預設值的欄位不會呈現。例如,對於 *\/clusters?format=json*,當其值為 DEFAULT 優先權時,斷路器閾值優先權欄位會被省略,如下所示
{
"thresholds": [
{
"max_connections": 1,
"max_pending_requests": 1024,
"max_requests": 1024,
"max_retries": 1
},
{
"priority": "HIGH",
"max_connections": 1,
"max_pending_requests": 1024,
"max_requests": 1024,
"max_retries": 1
}
]
}
- GET /
使用所有可用選項的連結表呈現 HTML 首頁。這可以透過在編譯 Envoy 時使用
--define=admin_html=disabled
來停用,在這種情況下會列印錯誤訊息。停用 HTML 模式會減少 Envoy 二進制檔案的大小。
- GET /help
列印所有可用選項的文字表格。
- GET /certs
以 JSON 格式列出所有已載入的 TLS 憑證,包括檔案名稱、序號、主體替代名稱以及到期前的天數,符合 憑證 proto 定義。
- GET /clusters
列出所有已設定的 叢集管理器叢集。此資訊包括每個叢集中所有已探索的上游主機以及每個主機的統計數據。這對於偵錯服務探索問題很有用。
- 叢集管理器資訊
- 叢集範圍資訊
- 每個主機的統計數據
名稱
類型
描述
cx_total
計數器
連線總數
cx_active
量規
作用中連線總數
cx_connect_fail
計數器
連線失敗總數
rq_total
計數器
請求總數
rq_timeout
計數器
逾時請求總數
rq_success
計數器
具有非 5xx 回應的請求總數
rq_error
計數器
具有 5xx 回應的請求總數
rq_active
量規
作用中請求總數
healthy
字串
主機的健康狀態。請參閱下文
weight
整數
負載平衡權重 (1-100)
zone
字串
服務區域
canary
布林值
主機是否為 Canary
success_rate
雙精度浮點數
- 主機健康狀態
主機由於一或多個不同的失敗健康狀態而處於健康或不健康狀態。如果主機處於健康狀態,則
healthy
輸出將等於 *healthy*。如果主機不健康,則
healthy
輸出將由以下一或多個字串組成*\/failed_active_hc*:主機已失敗 作用中健康檢查。
*\/failed_eds_health*:主機已被 EDS 標記為不健康。
*\/failed_outlier_check*:主機已失敗離群值偵測檢查。
警告
組態可能包含 TLS 憑證。在轉儲組態之前,Envoy 會嘗試從它找到的任何憑證中編輯 private_key
和 password
欄位。這依賴於組態是強類型 protobuf 訊息。如果您的 Envoy 組態使用已棄用的 config
欄位(類型為 google.protobuf.Struct
),請更新為建議的 typed_config
欄位(類型為 google.protobuf.Any
),以確保敏感資料被正確編輯。
警告
底層 proto 被標記為 v2alpha,因此其內容(包括 JSON 表示法)不保證穩定。
- GET /config_dump?mask={}
指定您想要傳回的欄位子集。遮罩會被剖析為
ProtobufWkt::FieldMask
,並應用於每個頂層轉儲,例如 BootstrapConfigDump 和 ClustersConfigDump。如果同時指定了 resource 和 mask 查詢參數,則此行為會變更。請參閱下文以了解詳細資訊。
- GET /config_dump?resource={}
僅轉儲符合指定資源的目前載入組態。該資源必須是頂層組態轉儲之一中的重複欄位,例如 static_listeners,來自 ListenersConfigDump,或 dynamic_active_clusters,來自 ClustersConfigDump。如果您需要非重複欄位,請使用上面記錄的遮罩查詢參數。如果您只想要重複資源的欄位子集,請同時使用這兩種,如下所述。
- GET /config_dump?name_regex={}
僅傾印目前載入的、名稱符合指定正規表示式的配置。可以搭配
resource
和mask
查詢參數使用。例如,
/config_dump?name_regex=.*substring.*
會傳回名稱欄位符合指定正規表示式的所有資源類型。每個資源,匹配的名稱欄位為
對於 ECDS 配置傾印,匹配的名稱欄位是對應的篩選器名稱,儲存在
- GET /config_dump?resource={}&mask={}
當同時指定 resource 和 mask 查詢參數時,mask 會套用到所需重複欄位中的每個元素,以便僅傳回欄位的子集。mask 會被解析為
ProtobufWkt::FieldMask
。例如,使用
/config_dump?resource=dynamic_active_clusters&mask=cluster.name
取得所有作用中動態叢集的名稱。
- GET /contention
如果啟用了互斥鎖追蹤,則以 JSON 格式傾印目前的 Envoy 互斥鎖爭用統計資料 (MutexStats)。請參閱
--enable-mutex-tracing
。
- POST /cpuprofiler
啟用或停用 CPU 分析器。需要使用 gperftools 編譯。可以使用 admin.profile_path 設定輸出檔案。
- POST /heapprofiler
啟用或停用堆積分析器。需要使用 gperftools 編譯。可以使用 admin.profile_path 設定輸出檔案。
- GET /heap_dump
傾印 Envoy 程序的目前堆積設定檔。輸出內容可由
pprof
工具解析為二進位檔。需要使用 tcmalloc 編譯(預設)。
- POST /allocprofiler
啟用或停用配置分析器。輸出內容可由
pprof
工具解析為二進位檔。需要使用 tcmalloc 編譯(預設)。
- POST /healthcheck/fail
使入站健康檢查失敗。這需要使用 HTTP 健康檢查篩選器。這對於在關閉伺服器或進行完整重新啟動之前清空伺服器很有用。無論篩選器的配置方式為何(傳遞等),調用此命令都會普遍使健康檢查請求失敗。
- POST /healthcheck/ok
否定
POST /healthcheck/fail
的影響。這需要使用 HTTP 健康檢查篩選器。
- GET /hot_restart_version
- GET /init_dump?mask={}
當指定 mask 查詢參數時,mask 值是要傾印未就緒目標的所需元件。mask 會被解析為
ProtobufWkt::FieldMask
。例如,使用
/init_dump?mask=listener
取得所有接聽器的未就緒目標。
- POST /logging
啟用/停用不同記錄器的記錄層級。
如果使用預設元件記錄器,則記錄器名稱應與元件名稱完全相同。
若要變更所有記錄器的記錄層級,請將查詢參數設定為
level=<desired_level>
。若要變更特定記錄器的層級,請將查詢參數設定如下:
<logger_name>=<desired_level>
。若要一次變更多個記錄層級,請將查詢參數設定為
paths=<logger_name1>:<desired_level1>,<logger_name2>:<desired_level2>
。若要列出記錄器,請將 POST 請求傳送至不含查詢參數的
/logging
端點。
如果設定
--enable-fine-grain-logging
,則記錄器會由其所屬檔案的路徑表示(確切來說,是由__FILE__
決定的路徑),因此記錄器清單會顯示檔案路徑清單,並且應使用特定路徑作為<logger_name>
來變更記錄層級。我們也新增了檔案基本名稱、glob
*
和?
對細微記錄器的支援。例如,我們有下列追蹤層級的作用中記錄器。source/server/admin/admin_filter.cc: 0 source/common/event/dispatcher_impl.cc: 0 source/common/network/tcp_listener_impl.cc: 0 source/common/network/udp_listener_impl.cc: 0
/logging?paths=source/common/event/dispatcher_impl.cc:debug
會將source/common/event/dispatcher_impl.cc
的層級設為 debug。/logging?admin_filter=info
會將source/server/admin/admin_filter.cc
的層級設為 info,而其他不匹配的記錄器則會是預設追蹤。/logging?paths=source/common*:warning
會將source/common/event/dispatcher_impl.cc:
、source/common/network/tcp_listener_impl.cc
的層級設為 warning。其他不匹配的記錄器則會是預設追蹤,例如 admin_filter.cc,即使它已從先前的 post 更新中更新為 info。/logging?paths=???_listener_impl:info
會將source/common/network/tcp_listener_impl.cc
、source/common/network/udp_listener_impl.cc
的層級設為 info。/logging?paths=???_listener_impl:info,tcp_listener_impl:warning
,source/common/network/tcp_listener_impl.cc
的層級會是 info,因為第一個匹配會生效。/logging?level=info
會將預設詳細程度層級變更為 info。接下來的更新中所有不匹配的記錄器都會是此預設層級。
- GET /memory
以位元組為單位,印出目前的記憶體配置/堆積使用量。在不印出所有
/stats
並篩選以取得記憶體相關統計資訊的情況下,這很有用。
- POST /quitquitquit
乾淨地結束伺服器。
- POST /reset_counters
將所有計數器重設為零。這在除錯時與
GET /stats
一起使用很有用。請注意,這不會刪除傳送到 statsd 的任何資料。它只會影響GET /stats
命令的本地輸出。
- POST /drain_listeners
排空所有監聽器。
- POST /drain_listeners?inboundonly
排空所有入站監聽器。 監聽器中的
traffic_direction
欄位用於判斷監聽器是入站還是出站。- POST /drain_listeners?graceful
在排空監聽器時,請在關閉監聽器之前進入寬限期。此行為和持續時間可透過伺服器選項或 CLI 進行設定 (
--drain-time-s
和--drain-strategy
)。- POST /drain_listeners?graceful&skip_exit
在排空監聽器時,請在排空期後不要結束。這必須與 graceful 一起使用。
注意
此操作會直接停止工作程序上匹配的監聽器。一旦停止給定流量方向的監聽器,就不允許在該方向上新增和修改監聽器。
- GET /server_info
輸出包含執行中伺服器相關資訊的 JSON 訊息。
範例輸出如下
{ "version": "b050513e840aa939a01f89b07c162f00ab3150eb/1.9.0-dev/Modified/DEBUG", "state": "LIVE", "command_line_options": { "base_id": "0", "concurrency": 8, "config_path": "config.yaml", "config_yaml": "", "allow_unknown_static_fields": false, "admin_address_path": "", "local_address_ip_version": "v4", "log_level": "info", "component_log_level": "", "log_format": "[%Y-%m-%d %T.%e][%t][%l][%n] %v", "log_path": "", "hot_restart_version": false, "service_cluster": "", "service_node": "", "service_zone": "", "mode": "Serve", "disable_hot_restart": false, "enable_mutex_tracing": false, "restart_epoch": 0, "file_flush_interval": "10s", "drain_time": "600s", "parent_shutdown_time": "900s", "cpuset_threads": false }, "uptime_current_epoch": "6s", "uptime_all_epochs": "6s", "node": { "id": "node1", "cluster": "cluster1", "user_agent_name": "envoy", "user_agent_build_version": { "version": { "major_number": 1, "minor_number": 15, "patch": 0 } }, "metadata": {}, "extensions": [], "client_features": [], "listening_addresses": [] } }
請參閱 ServerInfo proto 以瞭解輸出的說明。
- GET /ready
輸出反映伺服器狀態的字串和錯誤碼。 LIVE 狀態會傳回 200,否則傳回 503。這可以用作準備檢查。
範例輸出
LIVE
請參閱 ServerInfo proto 的
state
欄位,以瞭解輸出的說明。
- GET /stats
依要求輸出所有統計資訊。此命令對於本機除錯非常有用。直方圖會輸出計算出的分位數,即 P0、P25、P50、P75、P90、P99、P99.9 和 P100。每個分位數的輸出格式為 (間隔, 累計),其中間隔值表示自上次刷新以來的摘要。預設情況下,會設定計時器以依照 stats_flush_interval 定義的間隔進行刷新,預設值為 5 秒。如果指定 stats_flush_on_admin,則在查詢此端點時會刷新統計資訊,且不會使用計時器。累計值表示自 Envoy 執行個體開始以來的摘要。直方圖輸出中的「未記錄的值」表示尚未以值更新。如需更多資訊,請參閱這裡。
- GET /stats?usedonly
輸出 Envoy 已更新的統計資訊(計數器至少遞增一次、量計至少變更一次,且直方圖至少新增一次)。
僅輸出內部標記為隱藏的統計資訊。
隱藏統計資訊會與非隱藏統計資訊一起顯示。
隱藏統計資訊會從輸出中排除。這是預設行為。
- GET /stats?filter=regex
將傳回的統計資訊篩選為名稱與規則運算式
regex
匹配的統計資訊。與usedonly
相容。預設會執行部分匹配,因此/stats?filter=server
會傳回所有包含單字server
的統計資訊。可以使用起始和結束行錨點指定完整字串匹配。(即/stats?filter=^server.concurrency$
)預設情況下,會使用 Google RE2 引擎評估規則運算式。
- GET /stats?histogram_buckets=cumulative
變更直方圖輸出,以顯示具有上限的累計值區(例如 B0.5、B1、B5、…)。每個值區的輸出格式為 (間隔, 累計) (例如 B0.5(0,0))。即使將它們放入其他值區,也會包含上限以下的所有值。與
usedonly
和filter
相容。- GET /stats?histogram_buckets=disjoint
變更直方圖輸出,以顯示具有上限的不相交值區(例如 B0.5、B1、B5、…)。每個值區的輸出格式為 (間隔, 累計) (例如 B0.5(0,0))。值區不包含來自其他具有較小上限值區的值;先前值區的上限會作為下限。與
usedonly
和filter
相容。- GET /stats?histogram_buckets=detailed
以百分位數摘要資料和原始值區資料形式顯示直方圖。
範例輸出 .. code-block:: text
- http.admin.downstream_rq_time
totals=1,0.25:25, 2,0.25:9 intervals=1,0.25:2, 2,0.25:3 summary=P0(1,1) P25(1.0625,1.034) P50(2.0166,1.068) P75(2.058,2.005) P90(2.083,2.06) P95(2.091,2.08) P99(2.09,2.09) P99.5(2.099,2.098) P99.9(2.099,2.099) P100(2.1,2.1)
每個值區都顯示為 lower_bound,width:count。在上述範例中,有兩個值區。totals 包含自二進位檔啟動以來累積的資料點。intervals 顯示自上次統計資訊刷新以來的新資料點。
與
usedonly
和filter
相容。- GET /stats?format=html
使用 HTML 為 Web 瀏覽器呈現統計資訊,提供表單欄位以漸進方式修改篩選器、切換僅使用模式、控制顯示的統計資訊類型,以及切換為另一種格式。
如果使用 –define=admin_html=disabled 編譯 Envoy,則會停用此格式
- GET /stats?format=active-html
持續呈現統計資訊,顯示依變更頻率排序的前 50 個統計資訊。在此格式中,隱含僅使用模式。您可以漸進方式調整篩選器、類型子集、顯示的統計資訊數量,以及更新之間的間隔。
在使用此模式後,請務必關閉瀏覽器索引標籤,以避免伺服器定期更新統計資訊時對其造成負載。
如果使用 –define=admin_html=disabled 編譯 Envoy,則會停用此格式
- GET /stats?format=json
以 JSON 格式輸出 /stats。這可以用於統計資訊的程式化存取。計數器和量計的格式將為一組 (名稱、值) 配對。直方圖將位於「直方圖」元素下,其中包含列出支援分位數的「supported_quantiles」和一個 computed_quantiles 陣列,其中包含每個直方圖的計算分位數。
如果直方圖在間隔期間未更新,則輸出的所有分位數都將為 null。
範例直方圖輸出
{ "histograms": { "supported_quantiles": [ 0, 25, 50, 75, 90, 95, 99, 99.9, 100 ], "computed_quantiles": [ { "name": "cluster.external_auth_cluster.upstream_cx_length_ms", "values": [ {"interval": 0, "cumulative": 0}, {"interval": 0, "cumulative": 0}, {"interval": 1.0435787, "cumulative": 1.0435787}, {"interval": 1.0941565, "cumulative": 1.0941565}, {"interval": 2.0860023, "cumulative": 2.0860023}, {"interval": 3.0665233, "cumulative": 3.0665233}, {"interval": 6.046609, "cumulative": 6.046609}, {"interval": 229.57333,"cumulative": 229.57333}, {"interval": 260,"cumulative": 260} ] }, { "name": "http.admin.downstream_rq_time", "values": [ {"interval": null, "cumulative": 0}, {"interval": null, "cumulative": 0}, {"interval": null, "cumulative": 1.0435787}, {"interval": null, "cumulative": 1.0941565}, {"interval": null, "cumulative": 2.0860023}, {"interval": null, "cumulative": 3.0665233}, {"interval": null, "cumulative": 6.046609}, {"interval": null, "cumulative": 229.57333}, {"interval": null, "cumulative": 260} ] } ] } }
- GET /stats?format=json&usedonly
以 JSON 格式輸出 Envoy 已更新的統計資訊(計數器至少遞增一次、量計至少變更一次,且直方圖至少新增一次)。
- GET /stats?format=json&histogram_buckets=cumulative
變更直方圖輸出,以顯示具有上限的累計值區。即使將它們放入其他值區,也會包含上限以下的所有值。與
usedonly
和filter
相容。範例直方圖輸出
{ "histograms": [ { "name": "example_histogram", "buckets": [ {"upper_bound": 1, "interval": 0, "cumulative": 0}, {"upper_bound": 2, "interval": 0, "cumulative": 1}, {"upper_bound": 3, "interval": 1, "cumulative": 3}, {"upper_bound": 4, "interval": 1, "cumulative": 3} ] }, { "name": "other_example_histogram", "buckets": [ {"upper_bound": 0.5, "interval": 0, "cumulative": 0}, {"upper_bound": 1, "interval": 0, "cumulative": 0}, {"upper_bound": 5, "interval": 0, "cumulative": 0}, {"upper_bound": 10, "interval": 0, "cumulative": 0}, {"upper_bound": 25, "interval": 0, "cumulative": 0}, {"upper_bound": 50, "interval": 0, "cumulative": 0}, {"upper_bound": 100, "interval": 0, "cumulative": 0}, {"upper_bound": 250, "interval": 0, "cumulative": 0}, {"upper_bound": 500, "interval": 0, "cumulative": 0}, {"upper_bound": 1000, "interval": 0, "cumulative": 0}, {"upper_bound": 2500, "interval": 0, "cumulative": 100}, {"upper_bound": 5000, "interval": 0, "cumulative": 300}, {"upper_bound": 10000, "interval": 0, "cumulative": 600}, {"upper_bound": 30000, "interval": 0, "cumulative": 600}, {"upper_bound": 60000, "interval": 0, "cumulative": 600}, {"upper_bound": 300000, "interval": 0, "cumulative": 600}, {"upper_bound": 600000, "interval": 0, "cumulative": 600}, {"upper_bound": 1800000, "interval": 0, "cumulative": 600}, {"upper_bound": 3600000, "interval": 0, "cumulative": 600} ] } ] }
- GET /stats?format=json&histogram_buckets=disjoint
變更直方圖輸出,以顯示具有上限的不相交值區。值區不包含來自其他具有較小上限值區的值;先前值區的上限會作為下限。與
usedonly
和filter
相容。範例直方圖輸出
{ "histograms": [ { "name": "example_histogram", "buckets": [ {"upper_bound": 1, "interval": 0, "cumulative": 0}, {"upper_bound": 2, "interval": 0, "cumulative": 1}, {"upper_bound": 3, "interval": 1, "cumulative": 2}, {"upper_bound": 4, "interval": 0, "cumulative": 0} ] }, { "name": "other_example_histogram", "buckets": [ {"upper_bound": 0.5, "interval": 0, "cumulative": 0}, {"upper_bound": 1, "interval": 0, "cumulative": 0}, {"upper_bound": 5, "interval": 0, "cumulative": 0}, {"upper_bound": 10, "interval": 0, "cumulative": 0}, {"upper_bound": 25, "interval": 0, "cumulative": 0}, {"upper_bound": 50, "interval": 0, "cumulative": 0}, {"upper_bound": 100, "interval": 0, "cumulative": 0}, {"upper_bound": 250, "interval": 0, "cumulative": 0}, {"upper_bound": 500, "interval": 0, "cumulative": 0}, {"upper_bound": 1000, "interval": 0, "cumulative": 0}, {"upper_bound": 2500, "interval": 0, "cumulative": 100}, {"upper_bound": 5000, "interval": 0, "cumulative": 200}, {"upper_bound": 10000, "interval": 0, "cumulative": 0}, {"upper_bound": 30000, "interval": 0, "cumulative": 0}, {"upper_bound": 60000, "interval": 0, "cumulative": 0}, {"upper_bound": 300000, "interval": 0, "cumulative": 0}, {"upper_bound": 600000, "interval": 0, "cumulative": 0}, {"upper_bound": 1800000, "interval": 0, "cumulative": 0}, {"upper_bound": 3600000, "interval": 0, "cumulative": 0} ] } ] }
- GET /stats?format=json&histogram_buckets=detailed
將直方圖顯示為百分位數摘要資料。
範例輸出
{ "stats": [ { "histograms": { "supported_percentiles": [0, 25, 50, 75, 90, 95, 99, 99.5, 99.9, 100], "details": [ { "name": "http.admin.downstream_rq_time", "percentiles": [ { "interval": null, "cumulative": 1 }, { "interval": null, "cumulative": 1.0351851851851852 }, { "interval": null "cumulative": 1.0703703703703704 }, { "interval": null, "cumulative": 2.0136363636363637 }, { "interval": null "cumulative": 2.0654545454545454 }, { "interval": null "cumulative": 2.0827272727272725 }, { "interval": null "cumulative": 2.0965454545454545 }, { "interval": null, "cumulative": 2.098272727272727 }, { "interval": null, "cumulative": 2.0996545454545457 }, { "interval": null "cumulative": 2.1 } ], "totals": [ { "lower_bound": 1, "width": 0.25, "count": 25 }, { "lower_bound": 2, "width": 0.25, "count": 9 } ], "intervals": [ { "lower_bound": 1, "width": 0.25, "count": 2 }, { "lower_bound": 2, "width": 0.25, "count": 3 } ], }, ] } } ] }
與
usedonly
和filter
相容。- GET /stats?format=prometheus
或者,
- GET /stats/prometheus
以 Prometheus v0.0.4 格式輸出 /stats。這可以用於與 Prometheus 伺服器整合。
- GET /stats?format=prometheus&usedonly
您可以選擇性地傳遞
usedonly
URL 查詢參數,僅取得 Envoy 已更新的統計資訊 (計數器至少增加一次、量規至少變更一次,以及直方圖至少新增一次)。- GET /stats?format=prometheus&text_readouts
可選的
text_readouts
查詢參數用於取得包含文字讀數的所有統計資訊。文字讀數統計資訊以量規格式回傳。這些量規的值始終為 0。每個量規記錄都有一個名為text_value
的額外標籤,其中包含文字讀數的值。警告
每個唯一的鍵值標籤對組合在 Prometheus 中代表一個新的時間序列,這可能會大幅增加儲存的資料量。文字讀數統計資訊每次文字讀數統計資訊的值變更時都會建立一個新的標籤值,這可能會產生無限多的時間序列。
- GET /stats?format=prometheus&histogram_buckets=summary
可選的
histogram_buckets
查詢參數用於控制如何報告直方圖指標。如果未設定,直方圖會以 “histogram” prometheus 指標類型報告,但如果設定為summary
,也可以用於發出 prometheus “summary” 指標。每個發出的摘要都是在最後的 stats_flush_interval 間隔內。範例直方圖輸出
# TYPE envoy_server_initialization_time_ms histogram envoy_server_initialization_time_ms_bucket{le="0.5"} 0 envoy_server_initialization_time_ms_bucket{le="1"} 0 envoy_server_initialization_time_ms_bucket{le="5"} 0 envoy_server_initialization_time_ms_bucket{le="10"} 0 envoy_server_initialization_time_ms_bucket{le="25"} 0 envoy_server_initialization_time_ms_bucket{le="50"} 0 envoy_server_initialization_time_ms_bucket{le="100"} 0 envoy_server_initialization_time_ms_bucket{le="250"} 1 envoy_server_initialization_time_ms_bucket{le="500"} 1 envoy_server_initialization_time_ms_bucket{le="1000"} 1 envoy_server_initialization_time_ms_bucket{le="2500"} 1 envoy_server_initialization_time_ms_bucket{le="5000"} 1 envoy_server_initialization_time_ms_bucket{le="10000"} 1 envoy_server_initialization_time_ms_bucket{le="30000"} 1 envoy_server_initialization_time_ms_bucket{le="60000"} 1 envoy_server_initialization_time_ms_bucket{le="300000"} 1 envoy_server_initialization_time_ms_bucket{le="600000"} 1 envoy_server_initialization_time_ms_bucket{le="1800000"} 1 envoy_server_initialization_time_ms_bucket{le="3600000"} 1 envoy_server_initialization_time_ms_bucket{le="+Inf"} 1 envoy_server_initialization_time_ms_sum{} 115.000000000000014210854715202 envoy_server_initialization_time_ms_count{} 1
摘要輸出的範例
# TYPE envoy_server_initialization_time_ms summary envoy_server_initialization_time_ms{quantile="0"} 110.00000000000001 envoy_server_initialization_time_ms{quantile="0.25"} 112.50000000000001 envoy_server_initialization_time_ms{quantile="0.5"} 115.00000000000001 envoy_server_initialization_time_ms{quantile="0.75"} 117.50000000000001 envoy_server_initialization_time_ms{quantile="0.9"} 119.00000000000001 envoy_server_initialization_time_ms{quantile="0.95"} 119.50000000000001 envoy_server_initialization_time_ms{quantile="0.99"} 119.90000000000002 envoy_server_initialization_time_ms{quantile="0.995"} 119.95000000000002 envoy_server_initialization_time_ms{quantile="0.999"} 119.99000000000001 envoy_server_initialization_time_ms{quantile="1"} 120.00000000000001 envoy_server_initialization_time_ms_sum{} 115.000000000000014210854715202 envoy_server_initialization_time_ms_count{} 1
- GET /stats/recentlookups
此端點可協助 Envoy 開發人員偵錯統計系統中潛在的爭用問題。最初,僅累積 StatName 查詢的計數,而不是正在查詢的特定名稱。為了查看特定最近的請求,您必須透過 POST 到
/stats/recentlookups/enable
來啟用此功能。每次查詢可能會增加約 40-100 奈秒的額外負擔。啟用後,此端點會發出一個表格,其中包含 Envoy 最近以字串形式存取的統計名稱。理想情況下,字串應該僅在啟動期間或透過 xDS 接收新組態時,由 Envoy 程式碼轉換為 StatNames、計數器、量規和直方圖。這是因為當以字串形式查詢統計資訊時,它們必須採用全域符號表鎖定。在啟動期間,這是可以接受的,但在高核心數機器上回應使用者請求時,這可能會因為互斥鎖爭用而導致效能問題。
如需更多詳細資訊,請參閱 source/docs/stats.md。
另請注意,實際的互斥鎖爭用可以透過
GET /contention
追蹤。- POST /stats/recentlookups/enable
開啟統計名稱最近查詢的收集,從而啟用
/stats/recentlookups
。如需更多詳細資訊,請參閱 source/docs/stats.md。
- POST /stats/recentlookups/disable
關閉統計名稱最近查詢的收集,從而停用
/stats/recentlookups
。它也會清除查詢的清單。但是,總計數(以統計資訊server.stats_recent_lookups
的形式可見)不會被清除,並會繼續累積。如需更多詳細資訊,請參閱 source/docs/stats.md。
- POST /stats/recentlookups/clear
清除所有未完成的查詢和計數。這會清除所有最近的查詢資料以及計數,但如果已啟用,則會繼續收集。
如需更多詳細資訊,請參閱 source/docs/stats.md。
- GET /runtime
以 JSON 格式按需輸出所有執行階段值。有關如何組態和利用這些值的更多資訊,請參閱這裡。輸出包括作用中執行階段覆寫層的清單,以及每個鍵的層值堆疊。空字串表示沒有值,堆疊中的最終作用中值也包含在單獨的鍵中。輸出範例
{
"layers": [
"disk",
"override",
"admin",
],
"entries": {
"my_key": {
"layer_values": [
"my_disk_value",
"",
""
],
"final_value": "my_disk_value"
},
"my_second_key": {
"layer_values": [
"my_second_disk_value",
"my_disk_override_value",
"my_admin_override_value"
],
"final_value": "my_admin_override_value"
}
}
}
- POST /runtime_modify?key1=value1&key2=value2&keyN=valueN
新增或修改以查詢參數傳入的執行階段值。若要刪除先前新增的鍵,請使用空字串作為值。請注意,刪除僅適用於透過此端點新增的覆寫;從磁碟載入的值可以透過覆寫修改,但不能刪除。
注意
請謹慎使用 /runtime_modify 端點。變更會立即生效。務必正確保護管理介面。
- GET /hystrix_event_stream
此端點旨在用作 Hystrix 儀表板的串流來源。對此端點發出 GET 將會觸發以 text/event-stream 格式從 Envoy 傳輸統計資訊的串流,如 Hystrix 儀表板所預期。
如果從瀏覽器或終端機叫用,回應將會顯示為連續串流,並以 Bootstrap stats_flush_interval 定義的間隔傳送。
只有在組態檔案中啟用 Hystrix 接收器時,才會啟用此處理常式,如 這裡 所述。
由於 Envoy 和 Hystrix 的復原機制不同,儀表板中顯示的一些統計資訊必須進行調整
執行緒集區拒絕 - 通常與 Envoy 中所謂的短路類似,並由 upstream_rq_pending_overflow 計算,儘管執行緒集區一詞對 Envoy 來說並不準確。在 Hystrix 和 Envoy 中,結果都是拒絕的請求,不會傳遞到上游。
斷路器狀態 (關閉或開啟) - 由於在 Envoy 中,斷路器是根據佇列中目前連線/請求的數量開啟,因此斷路器沒有睡眠視窗,斷路器開啟/關閉是瞬時的。因此,我們將斷路器狀態設定為「強制關閉」。
短路 (拒絕) - Envoy 中存在這個術語,但指的是因為超過限制 (佇列或連線) 而未傳送的請求,而在 Hystrix 中,指的是因為在某個時間範圍內服務無法使用的回應百分比很高而未傳送的請求。在 Envoy 中,服務無法使用的回應將會導致離群值偵測 - 將節點從負載平衡器集區中移除,但不會因此拒絕請求。因此,此計數器始終設定為「0」。
延遲資訊代表自上次刷新以來的資料。目前無法取得平均延遲。
- POST /tap
此端點用於組態作用中 tap 工作階段。只有在已組態有效的 tap 擴充功能,且該擴充功能已組態為接受管理員組態時,此端點才可用。請參閱
- POST /reopen_logs
觸發重新開啟所有存取記錄。行為與 SIGUSR1 處理類似。