Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define switch data link timeseries in TOML #6120

Merged
merged 3 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions openapi/nexus.json
Original file line number Diff line number Diff line change
Expand Up @@ -19797,12 +19797,23 @@
},
"Units": {
"description": "Measurement units for timeseries samples.",
"type": "string",
"enum": [
"count",
"bytes",
"seconds",
"nanoseconds"
"oneOf": [
{
"type": "string",
"enum": [
"count",
"bytes",
"seconds",
"nanoseconds"
]
},
{
"description": "No meaningful units, e.g. a dimensionless quanity.",
"type": "string",
"enum": [
"none"
]
}
]
},
"User": {
Expand Down
1 change: 1 addition & 0 deletions oximeter/impl/src/schema/codegen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,7 @@ fn quote_creation_time(created: DateTime<Utc>) -> TokenStream {
impl quote::ToTokens for Units {
fn to_tokens(&self, tokens: &mut TokenStream) {
let toks = match self {
Units::None => quote! { ::oximeter::schema::Units::None },
Units::Count => quote! { ::oximeter::schema::Units::Count },
Units::Bytes => quote! { ::oximeter::schema::Units::Bytes },
Units::Seconds => quote! { ::oximeter::schema::Units::Seconds },
Expand Down
2 changes: 2 additions & 0 deletions oximeter/impl/src/schema/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,8 @@ pub struct TimeseriesDescription {
// TODO-completeness: Decide whether and how to handle dimensional analysis
// during queries, if needed.
pub enum Units {
/// No meaningful units, e.g. a dimensionless quanity.
None,
Count,
Bytes,
Seconds,
Expand Down
213 changes: 213 additions & 0 deletions oximeter/oximeter/schema/switch-data-link.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
format_version = 1

[target]
name = "switch_data_link"
description = "A network data link on an Oxide switch"
authz_scope = "fleet"
versions = [
{ version = 1, fields = [ "rack_id", "sled_id", "sled_model", "sled_revision", "sled_serial", "switch_id", "switch_model", "switch_revision", "switch_serial" ] },
]

[[metrics]]
name = "bytes_sent"
description = "Total number of bytes sent on the data link"
units = "bytes"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "bytes_received"
description = "Total number of bytes received on the data link"
units = "bytes"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "errors_sent"
description = "Total number of errors when sending on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "errors_received"
description = "Total number of packets for the data link dropped due to any error"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "receive_crc_error_drops"
description = "Total number of packets for the data link dropped due to CRC errors"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "receive_buffer_full_drops"
description = "Total number of packets for the data link dropped due to ASIC buffer congestion"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "packets_sent"
description = "Total number of packets sent on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "packets_received"
description = "Total number of packets received on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "link_up"
description = "Reports whether the link is currently up"
units = "none"
datum_type = "bool"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "link_fsm"
description = """\
Total entries into each state of the autonegotation / \
link-training finite state machine\
"""
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id", "state" ] }
]

[[metrics]]
name = "pcs_bad_sync_headers"
description = "Total number of bad PCS sync headers on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_errored_blocks"
description = "Total number of PCS error blocks on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_block_lock_loss"
description = "Total number of detected losses of block-lock on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_high_ber"
description = "Total number of high bit-error-rate events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_valid_errors"
description = "Total number of valid error events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_invalid_errors"
description = "Total number of invalid error events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[[metrics]]
name = "pcs_unknown_errors"
description = "Total number of unknown error events on the data link"
units = "count"
datum_type = "cumulative_u64"
versions = [
{ added_in = 1, fields = [ "port_id", "link_id" ] }
]

[fields.rack_id]
type = "uuid"
description = "ID of the rack the link's switch is in"

[fields.sled_id]
type = "uuid"
description = "ID of the sled managing the link's switch"

[fields.sled_model]
type = "string"
description = "Model number of the sled managing the link's switch"

[fields.sled_revision]
type = "u32"
description = "Revision number of the sled managing the link's switch"

[fields.sled_serial]
type = "string"
description = "Serial number of the sled managing the link's switch"

[fields.switch_id]
type = "uuid"
description = "ID of the switch the link is on"

[fields.switch_model]
type = "string"
description = "The model number switch the link is on"

[fields.switch_revision]
type = "u32"
description = "Revision number of the switch the link is on"

[fields.switch_serial]
type = "string"
description = "Serial number of the switch the link is on"

[fields.port_id]
type = "string"
description = "Physical switch port the link is on"

[fields.link_id]
type = "u8"
description = "ID of the link within its switch port"

[fields.state]
type = "string"
description = "Name of the data link FSM state"
Loading