fuchsia.diagnostics

新增日期:7

通訊協定

ArchiveAccessor

定義於 fuchsia.diagnostics/reader.fidl

用於與不同診斷資料來源互動的外部通訊協定。

新增時間:18 歲

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

從概念上來說,目錄疊代器,疊代器中的每個元素都是單一完整檔案,可與其他結果串連。

新增時間:18 歲

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

已移除:18 已淘汰:12

要求

名稱類型
selectors vector<LogInterestSelector>[64]

SetInterest

要求變更相符元件的興趣。

每個元件都有一組所要求的興趣喜好。

收到 LogSettings#SetInterest 上的新要求時,相符元件的集合會取得新的最低利益。如果意願低於先前的最低興趣,系統就會傳送 SetInterest 要求,其中包含新的最低利益。

如果與 LogSettings 的連線傳送另一個 SetInterest 要求,系統會復原其先前的興趣要求。

LogSettings 的連線完成後,興趣就會消失。每個相符的元件最低興趣都會更新為組合中新的最低興趣。

新增時間:12 張

要求

名稱類型
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

用於指定讀取器結果的輸出格式的列舉。

名稱說明
1

依照 診斷 Json 結構定義規格轉儲讀取結果。

2

根據 Iquery 文字規格傾印讀取結果。

3

依照診斷 CBOR 結構定義規格傾印讀取結果。

已新增:HEAD

ReaderError strict

類型:uint32

定義於 fuchsia.diagnostics/reader.fidl

列舉說明透過結果疊代器將結果提供給用戶端時,串流通訊協定可能出現的失敗狀態。

名稱說明
1

嚴重性嚴格

類型:uint8

fuchsia.diagnostics/severity.fidl 中定義

特定記錄的嚴重性。

名稱說明
16

追蹤記錄包含程式執行的詳細資訊。

32

偵錯記錄包括與程式執行相關的開發資訊。

48

資訊記錄包含有關程式執行的一般資訊。(預設)

64

警告記錄包含可能發生問題作業的相關資訊。

80

錯誤記錄包含失敗作業的相關資訊,

96

嚴重記錄會指出導致程式終止的作業相關資訊。

StreamMode 嚴格

類型:uint8

定義於 fuchsia.diagnostics/reader.fidl

列舉可指定使用者可連線的模式,並串流診斷指標。

名稱說明
1

串流將在連線時提供診斷資料的快照,然後隨即結束。

2

串流將在連線時提供診斷資料的快照,然後系統會停止對串流發出的後續呼叫,直到有新的診斷資料可用。

3

在有新的診斷資料可用前,向串流發出的呼叫會暫停。在呼叫串流之間,新抵達的資料都會經過緩衝處理。

資料表

ComponentSelector

定義於 fuchsia.diagnostics/selector.fidl

指定元件人物的模式,用來識別要選定的元件。

元件選取器支援萬用字元,這會將元件元素的單一「程度」滑掉。例如:core//echo 會比對所有僅在核心底下的運作範圍中執行的 echo 執行個體,但不會進一步以巢狀結構為基礎。

元件選取器也支援遞迴萬用字元,該萬用字元會遮蔽元件的多個「層」,例如:core/* 會比對在核心/ 及其所有子系下運作的所有元件執行個體。請注意,萬用字元並非自行選取核心,想要選擇根樹狀結構的用戶端應傳遞兩個選取器,例如:核心核心/**。遞迴萬用字元只能做為選取器的最後一個部分。

序數欄位類型說明
moniker_segments vector<StringSelector>[25]

Vector 會將所選元件的分子模式編碼。這些猴子是和原住民所察覺的「根」階層相對的子項動物。

必須提供至少一個 StringSelector,用來指定與目前選取器相符的元件名稱。

興趣

fuchsia.diagnostics/interest.fidl 中定義

「興趣」表示用戶端所需的診斷資料範圍,例如篩選訊息或控制訊息產生作業。

序數欄位類型說明
min_severity Severity

最低所需嚴重性。元件應包含達到這個嚴重性或高於這個嚴重性的記錄。

如果不是,則解讀為 Severity.INFO。

PerformanceConfiguration

定義於 fuchsia.diagnostics/reader.fidl

設定診斷串流成效屬性的參數。

序數欄位類型說明
max_aggregate_content_size_bytes uint64

用於診斷串流的批次疊代器傳回所有格式化內容的最大匯總大小。如果針對在訂閱模式下設定的串流設定這個值,當串流達到大小上限時,串流就會終止。附註:選用

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

序數欄位類型說明
component_selector ComponentSelector

定義元件工程師模式要比對的選取器。

tree_selector TreeSelector

用於定義資料階層屬性的選取器,在由 component_selector 比對的元件擁有的資料階層中比對。

StreamParameters

定義於 fuchsia.diagnostics/reader.fidl

設定診斷資訊串流所需的參數。

序數欄位類型說明
data_type DataType

一個 [fuchsia.diagnostics/DataType],用於指定要串流至用戶端的診斷資料類型。附註:必填

stream_mode StreamMode

指定串流伺服器如何提供串流結果的 [fuchsia.diagnostics/StreamMode]。 附註:必填

format Format

一個 [fuchsia.diagnostics/Format],指定傳回的診斷資料的格式。附註:必填

client_selector_configuration ClientSelectorConfiguration

設定指定用戶端希望透過連線傳回哪些結果的設定。用戶端可以使用提供的選取器向量來要求特定的資料子集,或指定想要所有可用資料。附註:必填

batch_retrieval_timeout_seconds int64

設定可指定等待單一元件「充飽」的診斷資料秒數上限。這個值可用於測試,或是如果您知道所需元件的負載負擔過重。如未提供,系統將使用 https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs 中定義的 PER_COMPONENT_ASYNC_TIMEOUT_SECONDS。 附註:選用

performance_configuration PerformanceConfiguration

設定診斷串流效能屬性的參數。 附註:選用

聯合國

BatchIterator_GetNext_Result 嚴格 資源

定義於 fuchsia.diagnostics/reader.fidl

序數Variant類型說明
response BatchIterator_GetNext_Response
err ReaderError
framework_err internal

BatchIterator_WaitForReady_Result 嚴格

定義於 fuchsia.diagnostics/reader.fidl

序數Variant類型說明
response BatchIterator_WaitForReady_Response
framework_err internal

ClientSelectorConfiguration 彈性

定義於 fuchsia.diagnostics/reader.fidl

序數Variant類型說明
selectors vector<SelectorArgument>

[fuchsia.diagnostics/SelectorArgument] 的向量,可提供額外的篩選器來界定資料串流的範圍。空白向量視為設定錯誤,進而導致代表錯誤參數的稱呼。

select_all bool

如果已設定,則 select_all 必須是 true,並指定用戶端想擷取其連線能夠公開的所有資料。

FormattedContent 的彈性 資源

定義於 fuchsia.diagnostics/reader.fidl

包含完整階層結構診斷資料階層的虛擬聯集,內容可單獨剖析為檔案。

序數Variant類型說明
json fuchsia.mem/Buffer

編碼為 JSON 的診斷結構定義。 VMO 最多可包含 1MB 的診斷資料。

text fuchsia.mem/Buffer

編碼為文字的診斷結構定義。 VMO 最多可包含 1MB 的診斷資料。

cbor handle<vmo>

編碼為 cbor 的診斷結構定義。 VMO 最多可包含 1MB 的診斷資料。大小為 ZX_PROP_VMO_CONTENT_SIZE。

已新增:HEAD

選取器引數彈性

定義於 fuchsia.diagnostics/reader.fidl

封存選取器使用的引數,可以是預先剖析的結構結構或字串表示法。

序數Variant類型說明
structured_selector Selector

用於定義模式比對器的選取器,該選取器會針對元件所在的資料階層命名空間,選取階層中的元件和屬性。

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類型說明
string_pattern string[100]

這是提供的字串,會定義要比對的模式。剖析器會將星號 ()、冒號 (:) 和反斜線 () 視為特殊字元。

如要比對常值星號 (),則必須逸出。如要比對常值反斜線 (),則必須逸出。如要比對常值冒號 (:),則必須逸出。

例如:abc 會比對任何名稱是「a」的字串,例如「a*」會比對任何開頭為「a」的字串。例如:a* 會比對任何開頭為「a」的字串。例如: 會比對任何開頭為「a」的字串。例如:b 會比對開頭為「a」且以「b」為結尾的任何字串,例如:b.cb

此外,「*」常值會視為特殊順序,但只能符合元件選取器中的多個層級。詳情請參閱 |ComponentSelector|。

exact_match string[100]

這是提供的字串,可定義要比對的確切字串。系統不會將任何字元視為特殊或含有特殊語法。

TreeSelector 彈性

定義於 fuchsia.diagnostics/selector.fidl

TreeSelector 代表已命名節點階層的選取要求,這些節點上有已命名的屬性。

序數Variant類型說明
subtree_selector SubtreeSelector

定義一組節點要比對的選取器,系統會選取整個子樹狀結構 (包括這些節點)。

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