• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18
19package android.os.statsd;
20
21option java_package = "com.android.os";
22option java_outer_classname = "StatsLog";
23
24import "frameworks/proto_logging/stats/atoms.proto";
25import "packages/modules/StatsD/statsd/src/guardrail/stats_log_enums.proto";
26
27message DimensionsValue {
28  optional int32 field = 1;
29
30  oneof value {
31    string value_str = 2;
32    int32 value_int = 3;
33    int64 value_long = 4;
34    bool value_bool = 5;
35    float value_float = 6;
36    DimensionsValueTuple value_tuple = 7;
37    uint64 value_str_hash = 8;
38  }
39}
40
41message DimensionsValueTuple {
42  repeated DimensionsValue dimensions_value = 1;
43}
44
45message StateValue {
46  optional int32 atom_id = 1;
47
48  oneof contents {
49    int64 group_id = 2;
50    int32 value = 3;
51  }
52}
53
54message AggregatedStateInfo {
55  repeated StateValue slice_by_state = 1;
56
57  repeated int64 elapsed_timestamp_nanos = 2;
58}
59
60message AggregatedAtomInfo {
61    optional Atom atom = 1;
62
63    repeated int64 elapsed_timestamp_nanos = 2;
64
65    repeated AggregatedStateInfo state_info = 3; // Only used when metrics have slice_by_state
66}
67
68message EventMetricData {
69  optional int64 elapsed_timestamp_nanos = 1;
70
71  optional Atom atom = 2;
72
73  optional int64 wall_clock_timestamp_nanos = 3 [deprecated = true];
74
75  optional AggregatedAtomInfo aggregated_atom_info = 4;
76
77  repeated StateValue slice_by_state = 5;
78}
79
80message CountBucketInfo {
81  optional int64 start_bucket_elapsed_nanos = 1;
82
83  optional int64 end_bucket_elapsed_nanos = 2;
84
85  optional int64 count = 3;
86
87  optional int64 bucket_num = 4;
88
89  optional int64 start_bucket_elapsed_millis = 5;
90
91  optional int64 end_bucket_elapsed_millis = 6;
92
93  optional int64 condition_true_nanos = 7;
94}
95
96message CountMetricData {
97  optional DimensionsValue dimensions_in_what = 1;
98
99  repeated StateValue slice_by_state = 6;
100
101  repeated CountBucketInfo bucket_info = 3;
102
103  repeated DimensionsValue dimension_leaf_values_in_what = 4;
104
105  optional DimensionsValue dimensions_in_condition = 2 [deprecated = true];
106
107  repeated DimensionsValue dimension_leaf_values_in_condition = 5 [deprecated = true];
108}
109
110message DurationBucketInfo {
111  optional int64 start_bucket_elapsed_nanos = 1;
112
113  optional int64 end_bucket_elapsed_nanos = 2;
114
115  optional int64 duration_nanos = 3;
116
117  optional int64 bucket_num = 4;
118
119  optional int64 start_bucket_elapsed_millis = 5;
120
121  optional int64 end_bucket_elapsed_millis = 6;
122
123  optional int64 condition_true_nanos = 7;
124}
125
126message DurationMetricData {
127  optional DimensionsValue dimensions_in_what = 1;
128
129  repeated StateValue slice_by_state = 6;
130
131  repeated DurationBucketInfo bucket_info = 3;
132
133  repeated DimensionsValue dimension_leaf_values_in_what = 4;
134
135  optional DimensionsValue dimensions_in_condition = 2 [deprecated = true];
136
137  repeated DimensionsValue dimension_leaf_values_in_condition = 5 [deprecated = true];
138}
139
140message Histogram {
141    // Counts for histogram bins.
142    // Encoding is as follows:
143    //  * n >= 0 represents the actual count
144    //  * n == -1 should not be used
145    //  * n <= -2 represents -n consecutive bins with count of 0
146    repeated sint32 count = 1;
147}
148
149message ValueBucketInfo {
150  optional int64 start_bucket_elapsed_nanos = 1;
151
152  optional int64 end_bucket_elapsed_nanos = 2;
153
154  optional int64 value = 3 [deprecated = true];
155
156  oneof single_value {
157      int64 value_long = 7 [deprecated = true];
158
159      double value_double = 8 [deprecated = true];
160  }
161
162  message Value {
163      optional int32 index = 1;
164      oneof value {
165          int64 value_long = 2;
166          double value_double = 3;
167          Histogram histogram = 5;
168      }
169      optional int32 sample_size = 4;
170      reserved 6;
171  }
172
173  repeated Value values = 9;
174
175  optional int64 bucket_num = 4;
176
177  optional int64 start_bucket_elapsed_millis = 5;
178
179  optional int64 end_bucket_elapsed_millis = 6;
180
181  optional int64 condition_true_nanos = 10;
182
183  optional int64 condition_correction_nanos = 11;
184}
185
186message ValueMetricData {
187  optional DimensionsValue dimensions_in_what = 1;
188
189  repeated StateValue slice_by_state = 6;
190
191  repeated ValueBucketInfo bucket_info = 3;
192
193  repeated DimensionsValue dimension_leaf_values_in_what = 4;
194
195  optional DimensionsValue dimensions_in_condition = 2 [deprecated = true];
196
197  repeated DimensionsValue dimension_leaf_values_in_condition = 5 [deprecated = true];
198}
199
200message KllBucketInfo {
201    optional int64 start_bucket_elapsed_nanos = 1;
202
203    optional int64 end_bucket_elapsed_nanos = 2;
204
205    message KllSketch {
206        optional int32 index = 1;
207        optional bytes kll_sketch = 2;
208    }
209
210    repeated KllSketch sketches = 3;
211
212    optional int64 bucket_num = 4;
213
214    optional int64 start_bucket_elapsed_millis = 5;
215
216    optional int64 end_bucket_elapsed_millis = 6;
217
218    optional int64 condition_true_nanos = 7;
219}
220
221message KllMetricData {
222    optional DimensionsValue dimensions_in_what = 1;
223
224    repeated StateValue slice_by_state = 6;
225
226    repeated KllBucketInfo bucket_info = 3;
227
228    repeated DimensionsValue dimension_leaf_values_in_what = 4;
229
230    reserved 2, 5;
231}
232
233message GaugeBucketInfo {
234  optional int64 start_bucket_elapsed_nanos = 1;
235
236  optional int64 end_bucket_elapsed_nanos = 2;
237
238  repeated Atom atom = 3;
239
240  repeated int64 elapsed_timestamp_nanos = 4;
241
242  repeated int64 wall_clock_timestamp_nanos = 5 [deprecated = true];
243
244  optional int64 bucket_num = 6;
245
246  optional int64 start_bucket_elapsed_millis = 7;
247
248  optional int64 end_bucket_elapsed_millis = 8;
249
250  repeated AggregatedAtomInfo aggregated_atom_info = 9;
251}
252
253message GaugeMetricData {
254  optional DimensionsValue dimensions_in_what = 1;
255
256  repeated StateValue slice_by_state = 6;
257
258  repeated GaugeBucketInfo bucket_info = 3;
259
260  repeated DimensionsValue dimension_leaf_values_in_what = 4;
261
262  optional DimensionsValue dimensions_in_condition = 2 [deprecated = true];
263
264  repeated DimensionsValue dimension_leaf_values_in_condition = 5 [deprecated = true];
265}
266
267message StatsLogReport {
268  optional int64 metric_id = 1;
269
270  // Deprecated.
271  reserved 2, 3;
272
273  message DropEvent {
274      optional BucketDropReason drop_reason = 1;
275
276      optional int64 drop_time_millis = 2;
277  }
278
279  message SkippedBuckets {
280      optional int64 start_bucket_elapsed_nanos = 1;
281
282      optional int64 end_bucket_elapsed_nanos = 2;
283
284      optional int64 start_bucket_elapsed_millis = 3;
285
286      optional int64 end_bucket_elapsed_millis = 4;
287
288      // The number of drop events is capped by StatsdStats::kMaxLoggedBucketDropEvents.
289      // The current maximum is 10 drop events.
290      repeated DropEvent drop_event = 5;
291  }
292
293  message EventMetricDataWrapper {
294    repeated EventMetricData data = 1;
295  }
296
297  message CountMetricDataWrapper {
298    repeated CountMetricData data = 1;
299  }
300
301  message DurationMetricDataWrapper {
302    repeated DurationMetricData data = 1;
303  }
304
305  message ValueMetricDataWrapper {
306    repeated ValueMetricData data = 1;
307    repeated SkippedBuckets skipped = 2;
308  }
309
310  message GaugeMetricDataWrapper {
311    repeated GaugeMetricData data = 1;
312    repeated SkippedBuckets skipped = 2;
313  }
314
315  message KllMetricDataWrapper {
316      repeated KllMetricData data = 1;
317      repeated SkippedBuckets skipped = 2;
318  }
319
320  oneof data {
321    EventMetricDataWrapper event_metrics = 4;
322    CountMetricDataWrapper count_metrics = 5;
323    DurationMetricDataWrapper duration_metrics = 6;
324    ValueMetricDataWrapper value_metrics = 7;
325    GaugeMetricDataWrapper gauge_metrics = 8;
326    KllMetricDataWrapper kll_metrics = 16;
327  }
328
329  optional int64 time_base_elapsed_nano_seconds = 9;
330
331  optional int64 bucket_size_nano_seconds = 10;
332
333  optional DimensionsValue dimensions_path_in_what = 11;
334
335  optional DimensionsValue dimensions_path_in_condition = 12 [deprecated = true];
336
337  optional bool is_active = 14;
338
339  optional bool dimension_guardrail_hit = 17;
340
341  optional int64 estimated_data_bytes = 18;
342
343  repeated DataCorruptedReason data_corrupted_reason = 19;
344
345  // Do not use.
346  reserved 13, 15;
347}
348
349message UidMapping {
350    message PackageInfoSnapshot {
351        message PackageInfo {
352            optional string name = 1;
353
354            optional int64 version = 2;
355
356            optional int32 uid = 3;
357
358            optional bool deleted = 4;
359
360            optional uint64 name_hash = 5;
361
362            optional string version_string = 6;
363
364            optional uint64 version_string_hash = 7;
365
366            optional string installer = 8;
367
368            optional uint64 installer_hash = 9;
369
370            optional uint32 installer_index = 10;
371
372            optional bytes truncated_certificate_hash = 11;
373        }
374        optional int64 elapsed_timestamp_nanos = 1;
375
376        repeated PackageInfo package_info = 2;
377    }
378    repeated PackageInfoSnapshot snapshots = 1;
379
380    message Change {
381        optional bool deletion = 1;
382
383        optional int64 elapsed_timestamp_nanos = 2;
384        optional string app = 3;
385        optional int32 uid = 4;
386
387        optional int64 new_version = 5;
388        optional int64 prev_version = 6;
389        optional uint64 app_hash = 7;
390        optional string new_version_string = 8;
391        optional string prev_version_string = 9;
392        optional uint64 new_version_string_hash = 10;
393        optional uint64 prev_version_string_hash = 11;
394    }
395    repeated Change changes = 2;
396
397    // Populated when StatsdConfig.hash_strings_in_metric_reports = true
398    repeated uint64 installer_hash = 3;
399
400    // Populated when StatsdConfig.hash_strings_in_metric_reports = false
401    repeated string installer_name = 4;
402}
403
404message ConfigMetricsReport {
405  repeated StatsLogReport metrics = 1;
406
407  optional UidMapping uid_map = 2;
408
409  optional int64 last_report_elapsed_nanos = 3;
410
411  optional int64 current_report_elapsed_nanos = 4;
412
413  optional int64 last_report_wall_clock_nanos = 5;
414
415  optional int64 current_report_wall_clock_nanos = 6;
416
417  message Annotation {
418      optional int64 field_int64 = 1;
419      optional int32 field_int32 = 2;
420  }
421  repeated Annotation annotation = 7;
422
423  optional DumpReportReason dump_report_reason = 8;
424
425  repeated string strings = 9;
426
427  reserved 10;
428
429  repeated DataCorruptedReason data_corrupted_reason = 11;
430
431  optional int64 estimated_data_bytes = 12;
432}
433
434message ConfigMetricsReportList {
435  message ConfigKey {
436    optional int32 uid = 1;
437    optional int64 id = 2;
438  }
439  optional ConfigKey config_key = 1;
440
441  repeated ConfigMetricsReport reports = 2;
442
443  optional int32 report_number = 3;
444
445  optional int32 statsd_stats_id = 4;
446
447  reserved 10 to 13, 101;
448}
449
450message StatsdStatsReport {
451    optional int32 stats_begin_time_sec = 1;
452
453    optional int32 stats_end_time_sec = 2;
454
455    message InvalidConfigReason {
456      optional InvalidConfigReasonEnum reason = 1;
457      optional int64 metric_id = 2;
458      optional int64 state_id = 3;
459      optional int64 alert_id = 4;
460      optional int64 alarm_id = 5;
461      optional int64 subscription_id = 6;
462      repeated int64 matcher_id = 7;
463      repeated int64 condition_id = 8;
464    }
465
466    message CounterStats {
467      optional CounterType counter_type = 1;
468      optional int32 count = 2;
469    }
470
471    message MatcherStats {
472        optional int64 id = 1;
473        optional int32 matched_times = 2;
474    }
475
476    message ConditionStats {
477        optional int64 id = 1;
478        optional int32 max_tuple_counts = 2;
479    }
480
481    message MetricStats {
482        optional int64 id = 1;
483        optional int32 max_tuple_counts = 2;
484    }
485
486    message AlertStats {
487        optional int64 id = 1;
488        optional int32 alerted_times = 2;
489    }
490
491    message ConfigStats {
492        optional int32 uid = 1;
493        optional int64 id = 2;
494        optional int32 creation_time_sec = 3;
495        optional int32 deletion_time_sec = 4;
496        optional int32 reset_time_sec = 19;
497        optional int32 metric_count = 5;
498        optional int32 condition_count = 6;
499        optional int32 matcher_count = 7;
500        optional int32 alert_count = 8;
501        optional bool is_valid = 9;
502        optional InvalidConfigReason invalid_config_reason = 24;
503        repeated int32 broadcast_sent_time_sec = 10;
504        repeated int32 data_drop_time_sec = 11;
505        repeated int64 data_drop_bytes = 21;
506        repeated int32 dump_report_time_sec = 12;
507        repeated int32 dump_report_data_size = 20;
508        repeated MatcherStats matcher_stats = 13;
509        repeated ConditionStats condition_stats = 14;
510        repeated MetricStats metric_stats = 15;
511        repeated AlertStats alert_stats = 16;
512        repeated MetricStats metric_dimension_in_condition_stats = 17 [deprecated = true];
513        message Annotation {
514            optional int64 field_int64 = 1;
515            optional int32 field_int32 = 2;
516        }
517        repeated Annotation annotation = 18;
518        repeated int32 activation_time_sec = 22;
519        repeated int32 deactivation_time_sec = 23;
520        repeated RestrictedMetricStats restricted_metric_stats = 25;
521        optional bool device_info_table_creation_failed = 26;
522        optional int32 restricted_db_corrupted_count = 27;
523        repeated int64 restricted_flush_latency = 28;
524        repeated int64 restricted_db_size_time_sec = 29;
525        repeated int64 restricted_db_size_bytes = 30;
526        repeated int32 dump_report_number = 31;
527        optional int32 db_deletion_stat_failed = 32;
528        optional int32 db_deletion_size_exceeded_limit = 33;
529        optional int32 db_deletion_config_invalid = 34;
530        optional int32 db_deletion_too_old = 35;
531        optional int32 db_deletion_config_removed = 36;
532        optional int32 db_deletion_config_updated = 37;
533        optional int32 config_metadata_provider_promotion_failed = 38;
534    }
535
536    repeated ConfigStats config_stats = 3;
537
538    message AtomStats {
539        optional int32 tag = 1;
540        optional int32 count = 2;
541        optional int32 error_count = 3;
542        optional int32 dropped_count = 4;
543        optional int32 skip_count = 5;
544        optional int32 peak_rate = 6;
545    }
546
547    repeated AtomStats atom_stats = 7;
548
549    message UidMapStats {
550        optional int32 changes = 1;
551        optional int32 bytes_used = 2;
552        optional int32 dropped_changes = 3;
553        optional int32 deleted_apps = 4;
554    }
555    optional UidMapStats uidmap_stats = 8;
556
557    message AnomalyAlarmStats {
558        optional int32 alarms_registered = 1;
559    }
560    optional AnomalyAlarmStats anomaly_alarm_stats = 9;
561
562    message PulledAtomStats {
563        optional int32 atom_id = 1;
564        optional int64 total_pull = 2;
565        optional int64 total_pull_from_cache = 3;
566        optional int64 min_pull_interval_sec = 4;
567        optional int64 average_pull_time_nanos = 5;
568        optional int64 max_pull_time_nanos = 6;
569        optional int64 average_pull_delay_nanos = 7;
570        optional int64 max_pull_delay_nanos = 8;
571        optional int64 data_error = 9;
572        optional int64 pull_timeout = 10;
573        optional int64 pull_exceed_max_delay = 11;
574        optional int64 pull_failed = 12;
575        optional int64 stats_companion_pull_failed = 13 [deprecated = true];
576        optional int64 stats_companion_pull_binder_transaction_failed = 14 [deprecated = true];
577        optional int64 empty_data = 15;
578        optional int64 registered_count = 16;
579        optional int64 unregistered_count = 17;
580        optional int32 atom_error_count = 18;
581        optional int64 binder_call_failed = 19;
582        optional int64 failed_uid_provider_not_found = 20;
583        optional int64 puller_not_found = 21;
584        message PullTimeoutMetadata {
585          optional int64 pull_timeout_uptime_millis = 1;
586          optional int64 pull_timeout_elapsed_millis = 2;
587        }
588        repeated PullTimeoutMetadata pull_atom_metadata = 22;
589        optional int32 subscription_pull_count = 23;
590    }
591    repeated PulledAtomStats pulled_atom_stats = 10;
592
593    message AtomMetricStats {
594      optional int64 metric_id = 1;
595      optional int64 hard_dimension_limit_reached = 2;
596      optional int64 late_log_event_skipped = 3;
597      optional int64 skipped_forward_buckets = 4;
598      optional int64 bad_value_type = 5;
599      optional int64 condition_change_in_next_bucket = 6;
600      optional int64 invalidated_bucket = 7;
601      optional int64 bucket_dropped = 8;
602      optional int64 min_bucket_boundary_delay_ns = 9;
603      optional int64 max_bucket_boundary_delay_ns = 10;
604      optional int64 bucket_unknown_condition = 11;
605      optional int64 bucket_count = 12;
606      reserved 13 to 15;
607    }
608    repeated AtomMetricStats atom_metric_stats = 17;
609
610    message LoggerErrorStats {
611        optional int32 logger_disconnection_sec = 1;
612        optional int32 error_code = 2;
613    }
614    repeated LoggerErrorStats logger_error_stats = 11;
615
616    message PeriodicAlarmStats {
617        optional int32 alarms_registered = 1;
618    }
619    optional PeriodicAlarmStats periodic_alarm_stats = 12;
620
621    message  SkippedLogEventStats {
622        optional int32 tag = 1;
623        optional int64 elapsed_timestamp_nanos = 2;
624    }
625    repeated SkippedLogEventStats skipped_log_event_stats = 13;
626
627    repeated int64 log_loss_stats = 14;
628
629    repeated int32 system_restart_sec = 15;
630
631    message LogLossStats {
632        optional int32 detected_time_sec = 1;
633        optional int32 count = 2;
634        optional int32 last_error = 3;
635        optional int32 last_tag = 4;
636        optional int32 uid = 5;
637        optional int32 pid = 6;
638    }
639    repeated LogLossStats detected_log_loss = 16;
640
641    message EventQueueOverflow {
642        optional int32 count = 1;
643        optional int64 max_queue_history_ns = 2;
644        optional int64 min_queue_history_ns = 3;
645    }
646
647    optional EventQueueOverflow queue_overflow = 18;
648
649    message ActivationBroadcastGuardrail {
650        optional int32 uid = 1;
651        repeated int32 guardrail_met_sec = 2;
652    }
653
654    repeated ActivationBroadcastGuardrail activation_guardrail_stats = 19;
655
656    message RestrictedMetricStats {
657      optional int64 restricted_metric_id = 1;
658      optional int64 insert_error = 2;
659      optional int64 table_creation_error = 3;
660      optional int64 table_deletion_error = 4;
661      repeated int64 flush_latency_ns = 5;
662      optional int64 category_changed_count = 6;
663    }
664
665    message RestrictedMetricQueryStats {
666      optional int32 calling_uid = 1;
667      optional int64 config_id = 2;
668      optional int32 config_uid = 3;
669      optional string config_package = 4;
670      optional InvalidQueryReason invalid_query_reason = 5;
671      optional int64 query_wall_time_ns = 6;
672      optional bool has_error = 7;
673      optional string query_error = 8;
674      optional int64 query_latency_ns = 9;
675    }
676    repeated RestrictedMetricQueryStats restricted_metric_query_stats = 20;
677    optional uint32 shard_offset = 21;
678    optional int32 statsd_stats_id = 22;
679
680    message SubscriptionStats {
681      message PerSubscriptionStats {
682        optional int32 id = 1;
683        optional int32 pushed_atom_count = 2;
684        optional int32 pulled_atom_count = 3;
685        optional int32 start_time_sec = 4;
686        optional int32 end_time_sec = 5;
687        optional int32 flush_count = 6;
688      }
689        repeated PerSubscriptionStats per_subscription_stats = 1;
690        optional int32 pull_thread_wakeup_count = 2;
691    }
692
693    optional SubscriptionStats subscription_stats = 23;
694
695    message SocketLossStats {
696      message LossStatsPerUid {
697        message AtomIdLossStats {
698            optional int32 atom_id = 1;
699            optional int32 error = 2;
700            optional int32 count = 3;
701        }
702        optional int32 uid = 1;
703        optional int64 first_timestamp_nanos = 2;
704        optional int64 last_timestamp_nanos = 3;
705        repeated AtomIdLossStats atom_id_loss_stats = 4;
706      }
707
708      repeated LossStatsPerUid loss_stats_per_uid = 1;
709
710      // tracks overflow of stats container on the libstatssocket side per logging application
711      message LossStatsOverflowCounters {
712        optional int32 uid = 1;
713        optional int32 count = 2;
714      }
715
716      repeated LossStatsOverflowCounters loss_stats_overflow_counters = 2;
717    }
718
719    optional SocketLossStats socket_loss_stats = 24;
720
721    message EventQueueStats {
722        optional int32 max_size_observed = 1;
723        optional int64 max_size_observed_elapsed_nanos = 2;
724    }
725
726    optional EventQueueStats event_queue_stats = 25;
727
728    // Tracks info about reads from the socket.
729    message SocketReadStats {
730        // This is a histogram of sizes of the batched reads. The bins are as follows:
731        // [0, 1, 2, 3, 4, 5-9, 10-19, 20-29, 30-39, 40-49, 50-59, 60-69, 70-79, 80-89, 90-99,
732        //  100-199, 200-299, 300-399, 400-499, 500-599, 600-699, 700-799, 800-899, 900-999,
733        //  1000-1199, 1200-1399, 1400-1599, 1600-1799, 1800-1999, 2000+]
734        repeated int64 batched_read_size = 1;
735
736        message LargeBatchReadStats {
737            optional int64 last_read_time_elapsed_ns = 1;
738            optional int64 curr_read_time_elapsed_ns = 2;
739            optional int64 min_atom_time_elapsed_ns = 3;
740            optional int64 max_atom_time_elapsed_ns = 4;
741            optional int64 total_atoms_read = 5;
742
743            message BatchedAtomReadStats {
744                optional int32 atom_id = 1;
745                optional int32 count = 2;
746            }
747            repeated BatchedAtomReadStats atom_stats = 6;
748        }
749        repeated LargeBatchReadStats large_batch_read_stats = 2;
750    }
751
752    optional SocketReadStats socket_read_stats = 26;
753
754    message ErrorStats {
755        repeated CounterStats counters = 1;
756    }
757
758    optional ErrorStats error_stats = 27;
759}
760
761message AlertTriggerDetails {
762    message MetricValue {
763        optional int64 metric_id = 1;
764        optional DimensionsValue dimension_in_what = 2;
765        optional DimensionsValue dimension_in_condition = 3 [deprecated = true];
766        optional int64 value = 4;
767    }
768    oneof value {
769        MetricValue trigger_metric = 1;
770        EventMetricData trigger_event = 2;
771    }
772    optional UidMapping.PackageInfoSnapshot package_info = 3;
773}
774