| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto3"; |
| |
| package cobalt; |
| |
| import "src/pb/observation.proto"; |
| |
| // An Event is the unit of data logged in Cobalt. |
| // |
| // Events are associated with a specific Metric. There is a different Event |
| // type for each Metric type. Events are also tagged with a day index indicating |
| // the day on which the event occurred. |
| message Event { |
| // An Event has one of the following types. These types correspond to |
| // the various Metric types defined in config/metric_definitions.proto. |
| oneof type { |
| // These event types are for Cobalt 1.0. |
| // TODO(fxbug.dev/45463): Delete when all users move to Cobalt 1.1. |
| EventOccurredEvent event_occurred_event = 1; |
| EventCountEvent event_count_event = 2; |
| ElapsedTimeEvent elapsed_time_event = 3; |
| FrameRateEvent frame_rate_event = 4; |
| MemoryUsageEvent memory_usage_event = 5; |
| IntHistogramEvent int_histogram_event = 6; |
| // The remaining event types are for Cobalt 1.1. |
| OccurrenceEvent occurrence_event = 8; |
| IntegerEvent integer_event = 9; |
| IntegerHistogramEvent integer_histogram_event = 10; |
| StringEvent string_event = 11; |
| CustomEvent custom_event = 999; |
| } |
| |
| // The three-part unique numerical identifier of the Metric that this |
| // Event is associated with. |
| uint32 customer_id = 1000; |
| uint32 project_id = 1001; |
| uint32 metric_id = 1002; |
| |
| // The index of the day on which this Event occurred. |
| uint32 day_index = 1003; |
| // The hour id for this Event. |
| uint32 hour_id = 1005; |
| |
| reserved 7; |
| } |
| |
| // Records that an event has occurred. |
| message EventOccurredEvent { |
| // The event code for the event that occurred. |
| uint32 event_code = 1; |
| } |
| |
| // Records that an event occurred a number of times. |
| message EventCountEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The associated system component |
| string component = 2; |
| // Time over which the count was taken, in microseconds. |
| int64 period_duration_micros = 3; |
| // The number of times the event occurred. |
| int64 count = 4; |
| } |
| |
| // Records that an event occurred a number of times. |
| message ElapsedTimeEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The associated system component |
| string component = 2; |
| // The elapsed time in microseconds. |
| int64 elapsed_micros = 3; |
| } |
| |
| // Records a frame-rate. |
| message FrameRateEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The associated system component |
| string component = 2; |
| // round(frames-per-second * 1000) |
| int64 frames_per_1000_seconds = 3; |
| } |
| |
| // Records a memory-usage. |
| message MemoryUsageEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The associated system component |
| string component = 2; |
| // Memory usage in bytes. |
| int64 bytes = 3; |
| } |
| |
| // Records a histogram over a set of integer buckets. The semantics of the |
| // Metric must be specified in comments near the Metric definition. The |
| // numerical values of the buckets is specified in the |int_buckets| |
| // field of the MetricDefinition. |
| message IntHistogramEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The associated system component |
| string component = 2; |
| |
| // The set of bucket indices and their corresponding counts. |
| repeated HistogramBucket buckets = 3; |
| } |
| |
| // Records that an event occurred a number of times. |
| message OccurrenceEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The number of times the event occurred. |
| uint64 count = 2; |
| } |
| |
| // Records that an event occurred a number of times. |
| message IntegerEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The elapsed time in microseconds. |
| int64 value = 2; |
| } |
| |
| // Records a frame-rate. |
| message StringEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The associated system component |
| string string_value = 2; |
| } |
| |
| // Records a histogram over a set of integer buckets. The semantics of the |
| // Metric must be specified in comments near the Metric definition. The |
| // numerical values of the buckets is specified in the |int_buckets| |
| // field of the MetricDefinition. |
| message IntegerHistogramEvent { |
| // The event codes for the event that occurred. There must be one event code |
| // given for each dimension specified in the metric definition. |
| repeated uint32 event_code = 1; |
| // The set of bucket indices and their corresponding counts. |
| repeated HistogramBucket buckets = 3; |
| } |
| |
| // Allows users of Cobalt to define custom Metrics with custom semantics. |
| // Each Custom event is either |
| // |
| // 1. a collection of CustomEventValues, each of which has a dimension name and a value associated |
| // with the event. |
| // 2. a serialized protocol buffer. |
| message CustomEvent { |
| // The keys are the names of the metric dimensions to which each ValuePart |
| // is associated. |
| map<string, CustomDimensionValue> values = 1; |
| |
| // The serialized protocol buffer. |
| bytes serialized_proto = 2; |
| } |