Fuchsia.metrics

此文件包含允许客户端记录与指标关联的事件的接口。系统会收集这些事件,并在稍后进行分析。 指标在与客户相关联的项目下进行整理。其中每个对象都有一个整数 ID,并且这些 ID 在此文件中用作参数。指标还可以有一个或多个与之关联的维度,这些维度随后在记录事件时作为事件代码矢量进行传递。

用法:首先使用 MetricEventLoggerFactory 获取项目的 MetricEventLogger。然后,您可以使用 Log*() 方法在事件发生时记录事件。

Fuchsia 中此服务的默认实现是 Cobalt。如需详细了解如何将这些接口与 Cobalt 搭配使用,请参阅 README.md。

添加数量:7

协议

MetricEventLogger

fuchsia.metrics/metric_event_logger.fidl 中定义

与一个项目的指标关联的事件的日志记录器。

LogInteger

记录整数测量。

metric_id:要记录的指标的 ID。

value:整数的度量值。

event_codes:有序的参数列表,每个指标的维度对应一个参数。具有相同事件代码的整数值会根据这些参数进行汇总。

请求

名称类型
metric_id uint32
value int64
event_codes EventVector

回复

名称类型
payload MetricEventLogger_LogInteger_Result

LogInteger 直方图

记录一个提供多个近似整数测量的直方图。

metric_id:要记录的指标的 ID。

histogram:近似整数测量值的集合。不应发送没有衡量的存储分区(空存储分区)。

event_codes:有序的参数列表,每个指标的维度对应一个参数。具有相同事件代码的直方图会根据这些参数汇总在一起。

请求

名称类型
metric_id uint32
histogram IntegerHistogram
event_codes EventVector

回复

名称类型
payload MetricEventLogger_LogIntegerHistogram_Result

LogMetricEvent

批量日志记录方法,相当于一次进行上述许多 Log*() 调用。

请求

名称类型
events vector<MetricEvent>[500]

回复

名称类型
payload MetricEventLogger_LogMetricEvents_Result

日志出现次数

记录事件已发生多次这一事实。

metric_id:要记录的指标的 ID。

count:事件发生的次数。该值应为正数,因为值 0 会被忽略。

event_codes:有序的参数列表,每个指标的维度对应一个参数。系统会根据这些参数汇总具有相同事件代码的出现次数。

请求

名称类型
metric_id uint32
count uint64
event_codes EventVector

回复

名称类型
payload MetricEventLogger_LogOccurrence_Result

日志字符串

记录观察到的字符串值。

metric_id:要记录的指标的 ID。

string_value:要记录的字符串。

event_codes:有序的参数列表,每个指标的维度对应一个参数。系统会根据这些参数单独汇总所记录字符串的计数。

请求

名称类型
metric_id uint32
string_value string[256]
event_codes EventVector

回复

名称类型
payload MetricEventLogger_LogString_Result

MetricEventLoggerFactory

fuchsia.metrics/metric_event_logger.fidl 中定义

用于为特定项目创建 MetricEventLogger 的工厂。

CreateMetricEventLogger

project_spec 指定的项目创建 MetricEventLogger。

请求

名称类型
project_spec ProjectSpec
logger server_end<MetricEventLogger>

回复

名称类型
payload MetricEventLoggerFactory_CreateMetricEventLogger_Result

CreateMetricEventLoggerWithExperiments

使用实验元数据创建 MetricEventLogger。

这种临时方法会直接从组件向 Cobalt 公开实验数据。将来,实验状态将由系统管理,并直接传递给 Cobalt。使用此界面之前,请与 Cobalt 团队联系。

要更新实验状态,请创建一个新的记录器。

请求

名称类型
project_spec ProjectSpec
experiment_ids vector<uint32>[100]
logger server_end<MetricEventLogger>

回复

名称类型
payload MetricEventLoggerFactory_CreateMetricEventLoggerWithExperiments_Result

结构

直方图存储分区

fuchsia.metrics/metric_event_logger.fidl 中定义

直方图的一个存储分区,由 LogIntegerHistogram 方法使用。

字段类型说明默认
index uint32

存储分区的索引。该指标包含 N+1 个整数范围分区序列的规范,这些分区从 0(下溢分区)到 N(上溢分区)编入索引。

无默认值
count uint64

该存储分区中值的个数。 为了节省空间/内存/带宽,不应添加空存储分区。

无默认值

指标事件

fuchsia.metrics/metric_event_logger.fidl 中定义

传递给 LogMetricEvents() 的事件规范。

字段类型说明默认
metric_id uint32

要记录的指标的 ID。

无默认值
event_codes EventVector

event_codes:有序的参数列表,每个指标的维度对应一个参数。

无默认值
payload MetricEventPayload

所记录事件的指标类型特定数据。

无默认值

MetricEventLoggerFactory_CreateMetricEventLoggerWithExperiments_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

MetricEventLoggerFactory_CreateMetricEventLogger_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

MetricEventLogger_LogIntegerHistogram_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

MetricEventLogger_LogInteger_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

MetricEventLogger_LogMetricEvents_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

MetricEventLogger_LogOccurrence_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

MetricEventLogger_LogString_Response

fuchsia.metrics/metric_event_logger.fidl 中定义

<空>

枚举

错误严格

类型:int32

fuchsia.metrics/metric_event_logger.fidl 中定义

MetricEventLogger 操作的错误代码。

名称说明
1

例如,提供的指标 ID 无效。

2

尝试记录序列化大小超过 MAX_BYTES_PER_EVENT 的事件。

3

日志记录器的本地缓冲区暂时已满,目前无法处理其他任何事件。请稍后再试。这种情况很少见。

4
-1

综合考虑意外错误。

表格

项目规范

fuchsia.metrics/metric_event_logger.fidl 中定义

标识要为其记录事件的项目的规范。

序数字段类型说明
customer_id uint32

客户 ID。如果省略(即设置为 0),则默认为默认“fuchsia”客户的客户 ID。

project_id uint32

项目的 ID。

联合

MetricEventLoggerFactory_CreateMetricEventLoggerWithExperiments_Result 严格

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLoggerFactory_CreateMetricEventLoggerWithExperiments_Response
err Error

MetricEventLoggerFactory_CreateMetricEventLogger_Result 严格

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLoggerFactory_CreateMetricEventLogger_Response
err Error

MetricEventLogger_LogIntegerHistogram_Result 严格

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLogger_LogIntegerHistogram_Response
err Error

MetricEventLogger_LogInteger_Result Strict

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLogger_LogInteger_Response
err Error

MetricEventLogger_LogMetricEvents_Result 严格

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLogger_LogMetricEvents_Response
err Error

MetricEventLogger_LogOccurrence_Result 严格

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLogger_LogOccurrence_Response
err Error

MetricEventLogger_LogString_Result 严格

fuchsia.metrics/metric_event_logger.fidl 中定义

序数变体类型说明
response MetricEventLogger_LogString_Response
err Error

MetricEventPayload 灵活

fuchsia.metrics/metric_event_logger.fidl 中定义

MetricEvent 的可变部分。

序数变体类型说明
count uint64

事件发生的次数,请参阅 LogOccurrence()。

integer_value int64

测量的整数,请参阅 LogInteger()。

histogram IntegerHistogram

近似整数测量的集合,请参阅 LogIntegerHistogram()。

string_value string[256]

要记录的字符串,请参阅 LogString()。

常量

名称类型说明
MAX_BATCHED_EVENTS 500 uint32

一次 FIDL 调用中可以记录的最大事件数。

MAX_BYTES_PER_EVENT 102400 int64

单个事件的大小上限为 100 KB。

MAX_EXPERIMENT_IDS 100 uint32

可以向单个日志记录器提供的实验 ID 数量上限。

MAX_HISTOGRAM_BUCKETS 500 uint32

这是每个事件的直方图分区的合理最大数量。

MAX_METRIC_DIMENSIONS 10 uint32

可与单个事件相关联的事件代码的数量上限。

MAX_STRING_EVENT_SIZE 256 uint32

字符串事件长度不应超过此值。

别名

名称说明
EventVector vector[MAX_METRIC_DIMENSIONS]

事件代码的矢量。在下列其中一个 Log*() 调用中使用时,提供了 metric_id 的指标的每个维度都必须有一个事件代码,否则调用将返回 INVALID_STRINGS。

整数直方图 vector[MAX_HISTOGRAM_BUCKETS]

向多个整数范围中的各个分配计数的直方图。为节省空间/内存/带宽,每个存储分区索引应仅包含一次,不应包含空存储分区。矢量的顺序无关紧要。