此文件包含允许客户端记录与指标关联的事件的接口。系统会收集这些事件,并在稍后进行分析。 指标在与客户相关联的项目下进行整理。其中每个对象都有一个整数 ID,并且这些 ID 在此文件中用作参数。指标还可以有一个或多个与之关联的维度,这些维度随后在记录事件时作为事件代码矢量进行传递。
用法:首先使用 MetricEventLoggerFactory 获取项目的 MetricEventLogger。然后,您可以使用 Log*() 方法在事件发生时记录事件。
Fuchsia 中此服务的默认实现是 Cobalt。如需详细了解如何将这些接口与 Cobalt 搭配使用,请参阅 README.md。
协议
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
|
|
无默认值 |
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 无效。 |
EVENT_TOO_BIG |
2 |
尝试记录序列化大小超过 MAX_BYTES_PER_EVENT 的事件。 |
BUFFER_FULL |
3 |
日志记录器的本地缓冲区暂时已满,目前无法处理其他任何事件。请稍后再试。这种情况很少见。 |
关闭 |
4 |
|
INTERNAL_ERROR |
-1 |
综合考虑意外错误。 |
表格
项目规范
在 fuchsia.metrics/metric_event_logger.fidl 中定义
标识要为其记录事件的项目的规范。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
customer_id |
uint32
|
客户 ID。如果省略(即设置为 0),则默认为默认“fuchsia”客户的客户 ID。 |
2 |
project_id |
uint32
|
项目的 ID。 |
联合
MetricEventLoggerFactory_CreateMetricEventLoggerWithExperiments_Result 严格
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLoggerFactory_CreateMetricEventLoggerWithExperiments_Response
|
|
2 |
err |
Error
|
MetricEventLoggerFactory_CreateMetricEventLogger_Result 严格
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLoggerFactory_CreateMetricEventLogger_Response
|
|
2 |
err |
Error
|
MetricEventLogger_LogIntegerHistogram_Result 严格
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLogger_LogIntegerHistogram_Response
|
|
2 |
err |
Error
|
MetricEventLogger_LogInteger_Result Strict
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLogger_LogInteger_Response
|
|
2 |
err |
Error
|
MetricEventLogger_LogMetricEvents_Result 严格
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLogger_LogMetricEvents_Response
|
|
2 |
err |
Error
|
MetricEventLogger_LogOccurrence_Result 严格
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLogger_LogOccurrence_Response
|
|
2 |
err |
Error
|
MetricEventLogger_LogString_Result 严格
在 fuchsia.metrics/metric_event_logger.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
MetricEventLogger_LogString_Response
|
|
2 |
err |
Error
|
MetricEventPayload 灵活
在 fuchsia.metrics/metric_event_logger.fidl 中定义
MetricEvent 的可变部分。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
count |
uint64
|
事件发生的次数,请参阅 LogOccurrence()。 |
2 |
integer_value |
int64
|
测量的整数,请参阅 LogInteger()。 |
3 |
histogram |
IntegerHistogram
|
近似整数测量的集合,请参阅 LogIntegerHistogram()。 |
4 |
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 ] |
向多个整数范围中的各个分配计数的直方图。为节省空间/内存/带宽,每个存储分区索引应仅包含一次,不应包含空存储分区。矢量的顺序无关紧要。 |