fuchsia.diagnostics

新增:7

通訊協定

ArchiveAccessor

fuchsia.diagnostics/reader.fidl 中定義

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

StreamDiagnostics

建立系統中診斷資料的疊代器。

  • 以 SNAPSHOT 模式串流時,疊代器可能會受限,但只會 系統目前的診斷資料狀態。
  • 採用 SNAPSHOT_THEN_SUBSCRIBE 的串流方式可能會使疊代器無限 或「訂閱」模式;第一個值會針對 然後持續對新的到的診斷資訊進行反覆測試 資料。
  • 要求 result stream 用來診斷的 [fuchsia.diagnostics/BatchIterator] 則會公開給用戶端

    • 八爪族:
      • INVALID_ARGS: StreamParameters 結構中缺少必要引數。
      • WRONG_TYPE: StreamParameters 結構體提供的選取器不正確 格式化。
  • 要求 stream_parameters 是 [fuchsia.diagnostics/StreamParameter] 會指定如何設定串流。

要求

名稱類型
stream_parameters StreamParameters
result_stream server_end<BatchIterator>

BatchIterator

fuchsia.diagnostics/reader.fidl 中定義

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

GetNext

傳回 [fuchsia.diagnostics/FormattedContent] 結構的向量 格式,可由提供給閱讀器通訊協定的 format_settings 引數指定 產生這個 BatchIterator 的結果

空白向量表示資料階層已經過完整疊代 GetNext 呼叫一律會傳回空白向量。

BatchIterator 透過訂閱模型提供結果時,對 GetNext 的呼叫會 等到有新資料可用時,系統才會傳回空白向量。

  • 會傳回 FormattedContent 結構的向量。與 批次預期會呼叫 GetNext(),直到空白向量為止 表示已讀取整個資料階層。
  • 錯誤訊息 [fuchsia.diagnostics/ReaderError] 的值,表示讀取基礎資料階層時發生問題 或設定這些階層的格式來填入 batch。請注意 ,通常不包括無法讀取單一元件的資料階層結構。 疊代器可容忍個別元件資料來源無法讀取 失敗可能是逾時或格式錯誤的二進位檔案 如果 GetNext 呼叫失敗,資料階層結果的子集會是 但日後呼叫 GetNext 時,將會提供 FormattedDataHierarchies.

要求

<空白>

回應

名稱類型
payload BatchIterator_GetNext_Result

WaitForReady

表示已連線 BatchIterator。如果 BatchIterator 尚未連線,此方法會暫停,直到它開始為止。

新增日期:18

要求

<空白>

回應

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

回應

<空白>

結構

全部

定義於 fuchsia.diagnostics/selector.fidl

<空白>

BatchIterator_GetNext_Response 資源

fuchsia.diagnostics/reader.fidl 中定義

欄位類型說明預設
batch vector<FormattedContent>[64] 無預設

BatchIterator_WaitForReady_Response

fuchsia.diagnostics/reader.fidl 中定義

<空白>

LogInterestSelector

定義於 fuchsia.diagnostics/log_settings.fidl

包含指定指定目標的指定興趣

欄位類型說明預設
selector ComponentSelector

比對要求興趣的元件。

無預設
interest Interest

傳送至與選取器相符元件的興趣層級。

無預設

PropertySelector

定義於 fuchsia.diagnostics/selector.fidl

用來定義一組相符節點的選取器,並在這些相符的節點上定義一組名為 要比對的房源

欄位類型說明預設
node_path vector<StringSelector>[100]

做為模式比對器的 StringSelectors 向量 ,透過具名節點的階層結構取得路徑向量中的每個項目 是資料階層中單一已命名節點的選取器。向量 會定義具名節點的選取器,然後定義透過 資料階層結構

節點路徑支援萬用字元,也就是將 glob 的單一層級 節點階層架構例如: root/a/b//d 會比對所有名為 d 的節點,這些節點低於節點 b 的部分子項。 root/a/b/c 會比對 b 下方所有開頭為「c」的節點。

無預設
target_properties StringSelector

可做為 資料階層中節點上以字串命名的屬性。

target_properties 支援萬用字元,可比對所有屬性 依據 node_path 的任一節點

無預設

SubtreeSelector

定義於 fuchsia.diagnostics/selector.fidl

用來定義一組要比對的節點的選取器,其中整個子樹狀結構包含 這些節點是已選取的

欄位類型說明預設
node_path vector<StringSelector>[100]

做為模式比對器的 StringSelectors 向量 ,透過具名節點的階層結構取得路徑向量中的每個項目 是資料階層中單一已命名節點的選取器。向量 會定義具名節點的選取器,然後定義透過 資料階層結構

節點路徑支援萬用字元,也就是將 glob 的單一層級 節點階層架構例如: root/a/b//d 會比對所有名為 d 的節點,這些節點低於節點 b 的部分子項。 root/a/b/c 會比對 b 下方所有開頭為「c」的節點。

無預設

ENUMS

資料類型嚴格

類型:uint8

fuchsia.diagnostics/reader.fidl 中定義

名稱說明
1

完成系統上的檢查階層。

3

系統中記錄串流。

格式嚴格

類型:uint32

定義於 fuchsia.diagnostics/format.fidl

列舉用來指定 讀者搜尋結果。

名稱說明
1

根據 Diagnostics Json 傾印讀取結果 結構定義規格。

2

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

3

根據診斷 CBOR 傾印讀取結果 結構定義規格。

新增時間:HEAD

ReaderError 嚴格

類型: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

指定元件的模式 識別要挑選的元件

元件選取器支援萬用字元,其將 glob 單一「level」/ 分解路徑名稱例如: 核心//echo 只會在核心下直接運作的所有 echo 執行個體 巢狀結構中

元件選取器也支援遞迴萬用字元,會 glob 多個 「levels」組成路徑名稱例如: 核心/* 會比對核心/ 所有子系下執行的所有元件執行個體。 請注意,萬用字元不會選取核心本身。需要選用 包含根的子樹狀結構應傳遞兩個選取器,例如: 核心肌群 核心/** 遞迴萬用字元只能做為選取器的最終區段使用。

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

向量將設為所選元件的 monikers 模式編碼。 這些怪獸與「根」相對的童話階層式結構 一切都知道

至少必須提供一個 StringSelector, 會指定要比對的元件名稱 目前的選取器。

興趣

定義於 fuchsia.diagnostics/interest.fidl

興趣代表了客戶的所需的診斷資料 例如:篩選訊息或控制郵件生成功能

Ordinal欄位類型說明
min_severity Severity

所需的最低嚴重性。元件中應包含 或 高於這個嚴重程度。

如未出現,請解讀為 Severity.INFO。

PerformanceConfiguration

fuchsia.diagnostics/reader.fidl 中定義

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

Ordinal欄位類型說明
max_aggregate_content_size_bytes uint64

由 傳回的所有格式化內容總計大小上限 或診斷串流的批次疊代器。如果這個值為串流設定了這個值 如果達到訂閱模式,串流就會終止 。 注意:選用

batch_retrieval_timeout_seconds int64

指定等待單次秒數上限的設定 元件,因此其診斷資料「充飽」。這個值可以使用 但如果您知道自己有興趣的元件 而且耗費大量精力 如果沒有提供,則 PER_COMPONENT_ASYNC_TIMEOUT_SECONDS (如 https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs 注意:選用

選取器

定義於 fuchsia.diagnostics/selector.fidl

結構化選取器,包含用於比對模式的所有必要資訊 資料階層位於資料階層中,節點為節點所有且以字串命名的屬性 套用至特定元件

這些選取器以文字形式呈現三個部分,以冒號分隔。 請指定: &lt;component_moniker&gt;:&lt;node_selector&gt;:&lt;property_selector&gt; 範例: 房源選擇: realm1/realm2/echo:root/active_users:user_count

Subtree selection:
     realm1/realm2/echo:root/active_users

Ordinal欄位類型說明
component_selector ComponentSelector

這個選取器定義要比對的元件模式 下定決心

tree_selector TreeSelector

這個選取器定義要比對的資料階層屬性 只有比對出的元件所擁有的資料階層 component_selector

tree_names TreeNames

要套用前要篩選的 fuchsia.inspect.Tree 名稱組合 階層/屬性選取器

目前,不填寫這個欄位等同於 TreeNames::all。這個 屬於柔和轉換最終等同於 TreeNames::some(["root"]),其中「root」是預設樹狀結構名稱。 https://fxbug.dev/355732696 追蹤這項轉換。

新增日期:22

StreamParameters

fuchsia.diagnostics/reader.fidl 中定義

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

Ordinal欄位類型說明
data_type DataType

用於指定診斷資料類型的 [fuchsia.diagnostics/DataType] 再串流到用戶端 注意:必填

stream_mode StreamMode

[fuchsia.diagnostics/StreamMode],會指定 串流伺服器提供串流結果 注意:必填

format Format

[fuchsia.diagnostics/Format],用於指定傳回的 3 格式 診斷資料 注意:必填

client_selector_configuration ClientSelectorConfiguration

指定用戶端要從其傳回結果的設定 以獲得最佳效能和最安全的連線用戶端可以使用向量來請求特定的資料子集 指定選擇器,或指定所需的所有可用資料。 注意:必填

batch_retrieval_timeout_seconds int64

指定等待單次秒數上限的設定 元件,因此其診斷資料「充飽」。這個值可以使用 但如果您知道自己有興趣的元件 而且耗費大量精力 如果沒有提供,則 PER_COMPONENT_ASYNC_TIMEOUT_SECONDS (如 https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs 注意:選用

performance_configuration PerformanceConfiguration

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

聯合國

BatchIterator_GetNext_Result 嚴格 資源

fuchsia.diagnostics/reader.fidl 中定義

OrdinalVariant類型說明
response BatchIterator_GetNext_Response
err ReaderError
framework_err internal

BatchIterator_WaitForReady_Result 的嚴格

fuchsia.diagnostics/reader.fidl 中定義

OrdinalVariant類型說明
response BatchIterator_WaitForReady_Response
framework_err internal

ClientSelectorConfiguration 彈性

fuchsia.diagnostics/reader.fidl 中定義

OrdinalVariant類型說明
selectors vector<SelectorArgument>

[fuchsia.diagnostics/SelectorArgument] 的向量 提供額外的篩選器,以限定資料串流的範圍。並將空白向量視為 設定錯誤並導致錯誤信號表示參數不正確。

select_all bool

如果已設定,則 select_all 必須為 true,並且指定用戶端要擷取 保持連線狀態

FormattedContent 彈性 資源

fuchsia.diagnostics/reader.fidl 中定義

包含結構化診斷完整階層的 fidl Union 進而將內容單獨剖析為檔案。

OrdinalVariant類型說明
json fuchsia.mem/Buffer

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

text fuchsia.mem/Buffer

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

cbor handle<vmo>

以 cbor 格式編碼的診斷結構定義。 VMO 會包含最多 1 MB 的診斷資料。 大小將是 ZX_PROP_VMO_CONTENT_SIZE。

新增時間:HEAD

SelectorArgument 彈性

fuchsia.diagnostics/reader.fidl 中定義

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

OrdinalVariant類型說明
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 是一項聯集,可定義不同方式描述要比對的模式 產生的分數

OrdinalVariant類型說明
string_pattern string[100]

這是提供的字串,用來定義要接收的模式 比對。剖析器會處理星號 ()、冒號 (:) 和反斜線 () 做為特殊字元。

如果您想要與常值星號 () 進行比對,則必須逸出這些星號。 如果您希望與常值反斜線 () 進行比對,則必須逸出這些反斜線。 如果您想與常值冒號 (:) 進行比對,則必須逸出這些半形冒號。

舉例來說,abc 會比對所有名稱與「abc」完全相符的字串。 例如:a* 可比對任何名稱完全相符的字串「a」。 例如:* 可比對開頭為「a」的任何字元。 例如: 會比對任何以「a」開頭的字串。 例如:b 會比對任何以 b 開頭並以 b 結尾的字串。 例如:bc 會比對以 b 開頭和結尾為 c 的任何字串, 你也可以看到許多資訊

此外,"*"常值會視為可能比對的特殊序列 多個層級。請參閱 |ComponentSelector|的 詳細資料。

exact_match string[100]

這是提供的字串,可定義要比對的確切字串。否 字元視為特殊字元或包含特殊語法

TreeNames 彈性

定義於 fuchsia.diagnostics/selector.fidl

TreeNames 是 fuchsia.inspect.Trees 的一組名稱元件名稱 已從選取器中剖析。階層與屬性選取器部分 將只會套用至符合此組合的樹狀結構。

新增日期:22
OrdinalVariant類型說明
some vector<string>

指定樹狀結構的名稱子集。

all All

所有可用的樹狀結構。等同於列出 樹木

樹狀選取器彈性

定義於 fuchsia.diagnostics/selector.fidl

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

OrdinalVariant類型說明
subtree_selector SubtreeSelector

用來定義一組要比對的節點的選取器,其中整個子樹狀結構包含 這些節點是已選取的

property_selector PropertySelector

用來定義一組相符節點的選取器,並在這些相符的節點上定義一組名為 要比對的 Proxy

觀測站

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