通訊協定
ArchiveAccessor
定義於 fuchsia.diagnostics/reader.fidl
用於與不同診斷資料來源互動的外部通訊協定。
StreamDiagnostics
針對系統上的診斷資料建立疊代器。
- 在 SNAPSHOT 模式下,疊代器可能會藉由串流來有限,且只會提供系統上的診斷資料目前狀態。
- 在 SNAPSHOT_THEN_subscribe 或「訂閱」模式下,疊代器可能會無限次;前者會疊代分析目前的狀態,然後兩者皆對新收到的診斷資料進行持續疊代。
-
要求
result stream
,一個 [fuchsia.diagnostics/BatchIterator],並在用戶端看到診斷記錄。- 鋼琴:
- INVALID_ARGS: StreamParameters 結構體缺少必要引數。
- WRONG_TYPE:StreamParameters 結構體提供的選取器格式不正確。
- 鋼琴:
-
request
stream_parameters
是一個 [fuchsia.diagnostics/StreamParameter] ,用於指定串流設定方式。
要求
名稱 | 類型 |
---|---|
stream_parameters |
StreamParameters
|
result_stream |
server_end<BatchIterator>
|
BatchIterator
定義於 fuchsia.diagnostics/reader.fidl
從概念上來說,目錄疊代器,疊代器中的每個元素都是單一完整檔案,可與其他結果串連。
GetNext
傳回 [fuchsia.diagnostics/FormattedContent] 結構體的向量,格式為由產生這個 BatchIterator 的 Reader 通訊協定提供的 format_settings 引數指定格式。
空白向量表示資料階層已全面疊代,而後續的 GetNext 呼叫則一律會傳回空白向量。
當 BatchIterator 透過訂閱模型提供結果時,對 GetNext 的呼叫會暫停,直到有新的資料可用,不會傳回空白向量。
- 會傳回 FormattedContent 結構的向量。連線至 Batch 的用戶端應會呼叫 GetNext(),直到傳回空白向量為止,表示已讀取整個資料階層。
- [fuchsia.diagnostics/ReaderError] 值發生錯誤,表示讀取基礎資料階層或設定這些階層格式以填入
batch
時發生問題。請注意,這些問題並不包括單一元件的資料階層無法讀取。疊代器會容許無法讀取的個別元件資料來源 (無論是逾時或格式錯誤的二進位檔案)。當 GetNext 呼叫失敗時,系統會捨棄資料階層結果的子集,但日後對 GetNext 的呼叫將提供 FormattedDataHierarchies 的新子集。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
BatchIterator_GetNext_Result
|
WaitForReady
表示 BatchIterator 已連線。如果尚未連線 BatchIterator,此方法會停止運作,直到成功為止。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
payload |
BatchIterator_WaitForReady_Result
|
LogSettings
定義於 fuchsia.diagnostics/log_settings.fidl
這個通訊協定可讓用戶端修改系統元件的記錄行為。
RegisterInterest
要求
名稱 | 類型 |
---|---|
selectors |
vector<LogInterestSelector>[64]
|
SetInterest
要求變更相符元件的興趣。
每個元件都有一組所要求的興趣喜好。
收到 LogSettings#SetInterest 上的新要求時,相符元件的集合會取得新的最低利益。如果意願低於先前的最低興趣,系統就會傳送 SetInterest
要求,其中包含新的最低利益。
如果與 LogSettings
的連線傳送另一個 SetInterest
要求,系統會復原其先前的興趣要求。
與 LogSettings
的連線完成後,興趣就會消失。每個相符的元件最低興趣都會更新為組合中新的最低興趣。
要求
名稱 | 類型 |
---|---|
selectors |
vector<LogInterestSelector>[64]
|
回應
<EMPTY>
結構化
BatchIterator_GetNext_Response 資源
定義於 fuchsia.diagnostics/reader.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
batch |
vector<FormattedContent>[64]
|
無預設 |
BatchIterator_WaitForReady_Response
定義於 fuchsia.diagnostics/reader.fidl
<EMPTY>
LogInterestSelector
定義於 fuchsia.diagnostics/log_settings.fidl
結合指定興趣和指定目標
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
selector |
ComponentSelector
|
比對要求感興趣的元件。 |
無預設 |
interest |
Interest
|
要傳送到與選取條件相符的元件的興趣層級。 |
無預設 |
PropertySelector
定義於 fuchsia.diagnostics/selector.fidl
用於定義一組要比對的節點,以及在這些相符節點上比對的一組已命名屬性的選取器。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
node_path |
vector<StringSelector>[100]
|
StringSelector 的向量,可做為已命名節點階層中路徑的模式比對器。向量中的每個項目都是資料階層中單一已命名節點的選取器。已命名節點的選取器向量,接著定義資料階層路徑上的選取器。 節點路徑支援萬用字元,這樣會畫出節點階層的單一層級。例如:root/a/b//d 會比對出位於節點 b. root/a/b/c 以下所有子項下方的 d 節點,將會符合 b 以下開頭為「c」字元的所有節點。 |
無預設 |
target_properties |
StringSelector
|
StringSelector,能做為資料階層中節點名稱字串的模式比對器。 target_properties 支援萬用字元,這會比對任何節點上按 node_path 比對的所有屬性。 |
無預設 |
SubtreeSelector
定義於 fuchsia.diagnostics/selector.fidl
定義一組節點要比對的選取器,系統會選取整個子樹狀結構 (包括這些節點)。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
node_path |
vector<StringSelector>[100]
|
StringSelector 的向量,可做為已命名節點階層中路徑的模式比對器。向量中的每個項目都是資料階層中單一已命名節點的選取器。已命名節點的選取器向量,接著定義資料階層路徑上的選取器。 節點路徑支援萬用字元,這樣會畫出節點階層的單一層級。例如:root/a/b//d 會比對出位於節點 b. root/a/b/c 以下所有子項下方的 d 節點,將會符合 b 以下開頭為「c」字元的所有節點。 |
無預設 |
ENUMS
DataType strict
類型:uint8
定義於 fuchsia.diagnostics/reader.fidl
名稱 | 值 | 說明 |
---|---|---|
檢查 |
1 |
完成系統中的檢查階層。 |
記錄檔 |
3 |
系統上的記錄串流。 |
格式:嚴格
類型:uint32
定義於 fuchsia.diagnostics/format.fidl
用於指定讀取器結果的輸出格式的列舉。
名稱 | 值 | 說明 |
---|---|---|
JSON |
1 |
依照 診斷 Json 結構定義規格轉儲讀取結果。 |
TEXT |
2 |
根據 Iquery 文字規格傾印讀取結果。 |
商務人士 |
3 |
依照診斷 CBOR 結構定義規格傾印讀取結果。 已新增:HEAD
|
ReaderError strict
類型:uint32
定義於 fuchsia.diagnostics/reader.fidl
列舉說明透過結果疊代器將結果提供給用戶端時,串流通訊協定可能出現的失敗狀態。
名稱 | 值 | 說明 |
---|---|---|
IO |
1 |
嚴重性嚴格
類型:uint8
在 fuchsia.diagnostics/severity.fidl 中定義
特定記錄的嚴重性。
名稱 | 值 | 說明 |
---|---|---|
追蹤 |
16 |
追蹤記錄包含程式執行的詳細資訊。 |
偵錯 |
32 |
偵錯記錄包括與程式執行相關的開發資訊。 |
資訊 |
48 |
資訊記錄包含有關程式執行的一般資訊。(預設) |
警告 |
64 |
警告記錄包含可能發生問題作業的相關資訊。 |
錯誤 |
80 |
錯誤記錄包含失敗作業的相關資訊, |
嚴重 |
96 |
嚴重記錄會指出導致程式終止的作業相關資訊。 |
StreamMode 嚴格
類型:uint8
定義於 fuchsia.diagnostics/reader.fidl
列舉可指定使用者可連線的模式,並串流診斷指標。
名稱 | 值 | 說明 |
---|---|---|
快照 |
1 |
串流將在連線時提供診斷資料的快照,然後隨即結束。 |
SNAPSHOT_THEN_SUBSCRIBE |
2 |
串流將在連線時提供診斷資料的快照,然後系統會停止對串流發出的後續呼叫,直到有新的診斷資料可用。 |
訂閱 |
3 |
在有新的診斷資料可用前,向串流發出的呼叫會暫停。在呼叫串流之間,新抵達的資料都會經過緩衝處理。 |
資料表
ComponentSelector
定義於 fuchsia.diagnostics/selector.fidl
指定元件人物的模式,用來識別要選定的元件。
元件選取器支援萬用字元,這會將元件元素的單一「程度」滑掉。例如:core//echo 會比對所有僅在核心底下的運作範圍中執行的 echo 執行個體,但不會進一步以巢狀結構為基礎。
元件選取器也支援遞迴萬用字元,該萬用字元會遮蔽元件的多個「層」,例如:core/* 會比對在核心/ 及其所有子系下運作的所有元件執行個體。請注意,萬用字元並非自行選取核心,想要選擇根樹狀結構的用戶端應傳遞兩個選取器,例如:核心核心/**。遞迴萬用字元只能做為選取器的最後一個部分。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
moniker_segments |
vector<StringSelector>[25]
|
Vector 會將所選元件的分子模式編碼。這些猴子是和原住民所察覺的「根」階層相對的子項動物。 必須提供至少一個 StringSelector,用來指定與目前選取器相符的元件名稱。 |
興趣
在 fuchsia.diagnostics/interest.fidl 中定義
「興趣」表示用戶端所需的診斷資料範圍,例如篩選訊息或控制訊息產生作業。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
min_severity |
Severity
|
最低所需嚴重性。元件應包含達到這個嚴重性或高於這個嚴重性的記錄。 如果不是,則解讀為 Severity.INFO。 |
PerformanceConfiguration
定義於 fuchsia.diagnostics/reader.fidl
設定診斷串流成效屬性的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
max_aggregate_content_size_bytes |
uint64
|
用於診斷串流的批次疊代器傳回所有格式化內容的最大匯總大小。如果針對在訂閱模式下設定的串流設定這個值,當串流達到大小上限時,串流就會終止。附註:選用 |
2 |
batch_retrieval_timeout_seconds |
int64
|
設定可指定等待單一元件「充飽」的診斷資料秒數上限。這個值可用於測試,或是如果您知道所需元件的負載負擔過重。如未提供,系統將使用 https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs 中定義的 PER_COMPONENT_ASYNC_TIMEOUT_SECONDS。 附註:選用 |
選取器
定義於 fuchsia.diagnostics/selector.fidl
結構化選取器,包含比對模式所需的所有必要資訊,以比對資料階層中節點擁有的字串名稱屬性,其中資料階層屬於特定元件。
這些選取器以半形冒號分隔 (以半形冒號分隔) 表示,並指定: <component_moniker>:<node_selector>:<property_selector> 範例: 屬性選擇: realm1/realm2/echo:root/active_users:user_count
Subtree selection:
realm1/realm2/echo:root/active_users
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
component_selector |
ComponentSelector
|
定義元件工程師模式要比對的選取器。 |
2 |
tree_selector |
TreeSelector
|
用於定義資料階層屬性的選取器,在由 |
StreamParameters
定義於 fuchsia.diagnostics/reader.fidl
設定診斷資訊串流所需的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
data_type |
DataType
|
一個 [fuchsia.diagnostics/DataType],用於指定要串流至用戶端的診斷資料類型。附註:必填 |
2 |
stream_mode |
StreamMode
|
指定串流伺服器如何提供串流結果的 [fuchsia.diagnostics/StreamMode]。 附註:必填 |
3 |
format |
Format
|
一個 [fuchsia.diagnostics/Format],指定傳回的診斷資料的格式。附註:必填 |
4 |
client_selector_configuration |
ClientSelectorConfiguration
|
設定指定用戶端希望透過連線傳回哪些結果的設定。用戶端可以使用提供的選取器向量來要求特定的資料子集,或指定想要所有可用資料。附註:必填 |
5 |
batch_retrieval_timeout_seconds |
int64
|
設定可指定等待單一元件「充飽」的診斷資料秒數上限。這個值可用於測試,或是如果您知道所需元件的負載負擔過重。如未提供,系統將使用 https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs 中定義的 PER_COMPONENT_ASYNC_TIMEOUT_SECONDS。 附註:選用 |
6 |
performance_configuration |
PerformanceConfiguration
|
設定診斷串流效能屬性的參數。 附註:選用 |
聯合國
BatchIterator_GetNext_Result 嚴格 資源
定義於 fuchsia.diagnostics/reader.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
BatchIterator_GetNext_Response
|
|
2 |
err |
ReaderError
|
|
3 |
framework_err |
internal
|
BatchIterator_WaitForReady_Result 嚴格
定義於 fuchsia.diagnostics/reader.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
BatchIterator_WaitForReady_Response
|
|
3 |
framework_err |
internal
|
ClientSelectorConfiguration 彈性
定義於 fuchsia.diagnostics/reader.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
selectors |
vector<SelectorArgument>
|
[fuchsia.diagnostics/SelectorArgument] 的向量,可提供額外的篩選器來界定資料串流的範圍。空白向量視為設定錯誤,進而導致代表錯誤參數的稱呼。 |
2 |
select_all |
bool
|
如果已設定,則 select_all 必須是 true,並指定用戶端想擷取其連線能夠公開的所有資料。 |
FormattedContent 的彈性 資源
定義於 fuchsia.diagnostics/reader.fidl
包含完整階層結構診斷資料階層的虛擬聯集,內容可單獨剖析為檔案。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
json |
fuchsia.mem/Buffer
|
編碼為 JSON 的診斷結構定義。 VMO 最多可包含 1MB 的診斷資料。 |
2 |
text |
fuchsia.mem/Buffer
|
編碼為文字的診斷結構定義。 VMO 最多可包含 1MB 的診斷資料。 |
3 |
cbor |
handle<vmo>
|
編碼為 cbor 的診斷結構定義。 VMO 最多可包含 1MB 的診斷資料。大小為 ZX_PROP_VMO_CONTENT_SIZE。 已新增:HEAD
|
選取器引數彈性
定義於 fuchsia.diagnostics/reader.fidl
封存選取器使用的引數,可以是預先剖析的結構結構或字串表示法。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
structured_selector |
Selector
|
用於定義模式比對器的選取器,該選取器會針對元件所在的資料階層命名空間,選取階層中的元件和屬性。 |
2 |
raw_selector |
string[1024]
|
代表 [fuchsia.diagnostics/Selector] 的原始字串。選取器會定義模式比對器,這項功能會依照元件,在資料階層命名空間中的階層和屬性選取元件。注意:所有從 raw_selector 剖析的 StringSelectors 都會以 string_pattern 模式解譯,為特殊字元的重要性。詳情請參閱 https://fuchsia.dev/fuchsia-src/reference/diagnostics/selectors |
StringSelector 彈性
定義於 fuchsia.diagnostics/selector.fidl
StringSelector 是定義各種方式來描述比對字串的模式。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
string_pattern |
string[100]
|
這是提供的字串,會定義要比對的模式。剖析器會將星號 ()、冒號 (:) 和反斜線 () 視為特殊字元。 如要比對常值星號 (),則必須逸出。如要比對常值反斜線 (),則必須逸出。如要比對常值冒號 (:),則必須逸出。 例如:abc 會比對任何名稱是「a」的字串,例如「a*」會比對任何開頭為「a」的字串。例如:a* 會比對任何開頭為「a」的字串。例如: 會比對任何開頭為「a」的字串。例如:b 會比對開頭為「a」且以「b」為結尾的任何字串,例如:b.c 此外,「*」常值會視為特殊順序,但只能符合元件選取器中的多個層級。詳情請參閱 |ComponentSelector|。 |
2 |
exact_match |
string[100]
|
這是提供的字串,可定義要比對的確切字串。系統不會將任何字元視為特殊或含有特殊語法。 |
TreeSelector 彈性
定義於 fuchsia.diagnostics/selector.fidl
TreeSelector 代表已命名節點階層的選取要求,這些節點上有已命名的屬性。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
subtree_selector |
SubtreeSelector
|
定義一組節點要比對的選取器,系統會選取整個子樹狀結構 (包括這些節點)。 |
2 |
property_selector |
PropertySelector
|
這個選取器會定義一組要比對的節點,並在這些比對符合的節點上,提供一組要比對的已命名授權。 |
業者
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAXIMUM_ENTRIES_PER_BATCH |
64
|
uint16 |
選擇大小為 64,因為批次項目會處理 VMO,且每個 fidl 訊息最多只能有 64 個處理。 |
MAXIMUM_RAW_SELECTOR_LENGTH |
1024
|
uint16 |
大小限制為 1024 是一種合理的低尺寸限制,符合我們遇到的大部分標準選取器。 |
MAX_DATA_HIERARCHY_DEPTH |
100
|
uint16 |
|
MAX_LOG_SELECTORS |
64
|
uint8 |
可透過事件監聽器指定的 LogInterestSelector 數量上限。 |
MAX_MONIKER_SEGMENTS |
25
|
uint16 |
|
MAX_STRING_SELECTOR_LENGTH |
100
|
uint16 |