Home | History | Annotate | Download | only in src
      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 
     17 syntax = "proto2";
     18 
     19 package android.os.statsd;
     20 
     21 option java_package = "com.android.os";
     22 option java_outer_classname = "StatsLog";
     23 
     24 import "frameworks/base/cmds/statsd/src/atoms.proto";
     25 
     26 message DimensionsValue {
     27   optional int32 field = 1;
     28 
     29   oneof value {
     30     string value_str = 2;
     31     int32 value_int = 3;
     32     int64 value_long = 4;
     33     bool value_bool = 5;
     34     float value_float = 6;
     35     DimensionsValueTuple value_tuple = 7;
     36     uint64 value_str_hash = 8;
     37   }
     38 }
     39 
     40 message DimensionsValueTuple {
     41   repeated DimensionsValue dimensions_value = 1;
     42 }
     43 
     44 message EventMetricData {
     45   optional int64 elapsed_timestamp_nanos = 1;
     46 
     47   optional Atom atom = 2;
     48 
     49   optional int64 wall_clock_timestamp_nanos = 3 [deprecated = true];
     50 }
     51 
     52 message CountBucketInfo {
     53   optional int64 start_bucket_elapsed_nanos = 1;
     54 
     55   optional int64 end_bucket_elapsed_nanos = 2;
     56 
     57   optional int64 count = 3;
     58 
     59   optional int64 bucket_num = 4;
     60 
     61   optional int64 start_bucket_elapsed_millis = 5;
     62 
     63   optional int64 end_bucket_elapsed_millis = 6;
     64 }
     65 
     66 message CountMetricData {
     67   optional DimensionsValue dimensions_in_what = 1;
     68 
     69   optional DimensionsValue dimensions_in_condition = 2;
     70 
     71   repeated CountBucketInfo bucket_info = 3;
     72 
     73   repeated DimensionsValue dimension_leaf_values_in_what = 4;
     74 
     75   repeated DimensionsValue dimension_leaf_values_in_condition = 5;
     76 }
     77 
     78 message DurationBucketInfo {
     79   optional int64 start_bucket_elapsed_nanos = 1;
     80 
     81   optional int64 end_bucket_elapsed_nanos = 2;
     82 
     83   optional int64 duration_nanos = 3;
     84 
     85   optional int64 bucket_num = 4;
     86 
     87   optional int64 start_bucket_elapsed_millis = 5;
     88 
     89   optional int64 end_bucket_elapsed_millis = 6;
     90 }
     91 
     92 message DurationMetricData {
     93   optional DimensionsValue dimensions_in_what = 1;
     94 
     95   optional DimensionsValue dimensions_in_condition = 2;
     96 
     97   repeated DurationBucketInfo bucket_info = 3;
     98 
     99   repeated DimensionsValue dimension_leaf_values_in_what = 4;
    100 
    101   repeated DimensionsValue dimension_leaf_values_in_condition = 5;
    102 }
    103 
    104 message ValueBucketInfo {
    105   optional int64 start_bucket_elapsed_nanos = 1;
    106 
    107   optional int64 end_bucket_elapsed_nanos = 2;
    108 
    109   optional int64 value = 3 [deprecated = true];
    110 
    111   oneof single_value {
    112       int64 value_long = 7 [deprecated = true];
    113 
    114       double value_double = 8 [deprecated = true];
    115   }
    116 
    117   message Value {
    118       optional int32 index = 1;
    119       oneof value {
    120           int64 value_long = 2;
    121           double value_double = 3;
    122       }
    123   }
    124 
    125   repeated Value values = 9;
    126 
    127   optional int64 bucket_num = 4;
    128 
    129   optional int64 start_bucket_elapsed_millis = 5;
    130 
    131   optional int64 end_bucket_elapsed_millis = 6;
    132 
    133   optional int64 condition_true_nanos = 10;
    134 }
    135 
    136 message ValueMetricData {
    137   optional DimensionsValue dimensions_in_what = 1;
    138 
    139   optional DimensionsValue dimensions_in_condition = 2;
    140 
    141   repeated ValueBucketInfo bucket_info = 3;
    142 
    143   repeated DimensionsValue dimension_leaf_values_in_what = 4;
    144 
    145   repeated DimensionsValue dimension_leaf_values_in_condition = 5;
    146 }
    147 
    148 message GaugeBucketInfo {
    149   optional int64 start_bucket_elapsed_nanos = 1;
    150 
    151   optional int64 end_bucket_elapsed_nanos = 2;
    152 
    153   repeated Atom atom = 3;
    154 
    155   repeated int64 elapsed_timestamp_nanos = 4;
    156 
    157   repeated int64 wall_clock_timestamp_nanos = 5 [deprecated = true];
    158 
    159   optional int64 bucket_num = 6;
    160 
    161   optional int64 start_bucket_elapsed_millis = 7;
    162 
    163   optional int64 end_bucket_elapsed_millis = 8;
    164 }
    165 
    166 message GaugeMetricData {
    167   optional DimensionsValue dimensions_in_what = 1;
    168 
    169   optional DimensionsValue dimensions_in_condition = 2;
    170 
    171   repeated GaugeBucketInfo bucket_info = 3;
    172 
    173   repeated DimensionsValue dimension_leaf_values_in_what = 4;
    174 
    175   repeated DimensionsValue dimension_leaf_values_in_condition = 5;
    176 }
    177 
    178 message StatsLogReport {
    179   optional int64 metric_id = 1;
    180 
    181   // Fields 2 and 3 are reserved.
    182 
    183   message SkippedBuckets {
    184       optional int64 start_bucket_elapsed_nanos = 1;
    185       optional int64 end_bucket_elapsed_nanos = 2;
    186       optional int64 start_bucket_elapsed_millis = 3;
    187       optional int64 end_bucket_elapsed_millis = 4;
    188   }
    189 
    190   message EventMetricDataWrapper {
    191     repeated EventMetricData data = 1;
    192   }
    193   message CountMetricDataWrapper {
    194     repeated CountMetricData data = 1;
    195   }
    196   message DurationMetricDataWrapper {
    197     repeated DurationMetricData data = 1;
    198   }
    199   message ValueMetricDataWrapper {
    200     repeated ValueMetricData data = 1;
    201     repeated SkippedBuckets skipped = 2;
    202   }
    203 
    204   message GaugeMetricDataWrapper {
    205     repeated GaugeMetricData data = 1;
    206     repeated SkippedBuckets skipped = 2;
    207   }
    208 
    209   oneof data {
    210     EventMetricDataWrapper event_metrics = 4;
    211     CountMetricDataWrapper count_metrics = 5;
    212     DurationMetricDataWrapper duration_metrics = 6;
    213     ValueMetricDataWrapper value_metrics = 7;
    214     GaugeMetricDataWrapper gauge_metrics = 8;
    215   }
    216 
    217   optional int64 time_base_elapsed_nano_seconds = 9;
    218 
    219   optional int64 bucket_size_nano_seconds = 10;
    220 
    221   optional DimensionsValue dimensions_path_in_what = 11;
    222 
    223   optional DimensionsValue dimensions_path_in_condition = 12;
    224 
    225   // DO NOT USE field 13.
    226 
    227   optional bool is_active = 14;
    228 }
    229 
    230 message UidMapping {
    231     message PackageInfoSnapshot {
    232         message PackageInfo {
    233             optional string name = 1;
    234 
    235             optional int64 version = 2;
    236 
    237             optional int32 uid = 3;
    238 
    239             optional bool deleted = 4;
    240 
    241             optional uint64 name_hash = 5;
    242 
    243             optional string version_string = 6;
    244 
    245             optional uint64 version_string_hash = 7;
    246 
    247             optional string installer = 8;
    248 
    249             optional uint64 installer_hash = 9;
    250         }
    251         optional int64 elapsed_timestamp_nanos = 1;
    252 
    253         repeated PackageInfo package_info = 2;
    254     }
    255     repeated PackageInfoSnapshot snapshots = 1;
    256 
    257     message Change {
    258         optional bool deletion = 1;
    259 
    260         optional int64 elapsed_timestamp_nanos = 2;
    261         optional string app = 3;
    262         optional int32 uid = 4;
    263 
    264         optional int64 new_version = 5;
    265         optional int64 prev_version = 6;
    266         optional uint64 app_hash = 7;
    267         optional string new_version_string = 8;
    268         optional string prev_version_string = 9;
    269         optional uint64 new_version_string_hash = 10;
    270         optional uint64 prev_version_string_hash = 11;
    271     }
    272     repeated Change changes = 2;
    273 }
    274 
    275 message ConfigMetricsReport {
    276   repeated StatsLogReport metrics = 1;
    277 
    278   optional UidMapping uid_map = 2;
    279 
    280   optional int64 last_report_elapsed_nanos = 3;
    281 
    282   optional int64 current_report_elapsed_nanos = 4;
    283 
    284   optional int64 last_report_wall_clock_nanos = 5;
    285 
    286   optional int64 current_report_wall_clock_nanos = 6;
    287 
    288   message Annotation {
    289       optional int64 field_int64 = 1;
    290       optional int32 field_int32 = 2;
    291   }
    292   repeated Annotation annotation = 7;
    293 
    294   enum DumpReportReason {
    295       DEVICE_SHUTDOWN = 1;
    296       CONFIG_UPDATED = 2;
    297       CONFIG_REMOVED = 3;
    298       GET_DATA_CALLED = 4;
    299       ADB_DUMP = 5;
    300       CONFIG_RESET = 6;
    301       STATSCOMPANION_DIED = 7;
    302       TERMINATION_SIGNAL_RECEIVED = 8;
    303   }
    304   optional DumpReportReason dump_report_reason = 8;
    305 
    306   repeated string strings = 9;
    307 }
    308 
    309 message ConfigMetricsReportList {
    310   message ConfigKey {
    311     optional int32 uid = 1;
    312     optional int64 id = 2;
    313   }
    314   optional ConfigKey config_key = 1;
    315 
    316   repeated ConfigMetricsReport reports = 2;
    317 
    318   reserved 10;
    319 }
    320 
    321 message StatsdStatsReport {
    322     optional int32 stats_begin_time_sec = 1;
    323 
    324     optional int32 stats_end_time_sec = 2;
    325 
    326     message MatcherStats {
    327         optional int64 id = 1;
    328         optional int32 matched_times = 2;
    329     }
    330 
    331     message ConditionStats {
    332         optional int64 id = 1;
    333         optional int32 max_tuple_counts = 2;
    334     }
    335 
    336     message MetricStats {
    337         optional int64 id = 1;
    338         optional int32 max_tuple_counts = 2;
    339     }
    340 
    341     message AlertStats {
    342         optional int64 id = 1;
    343         optional int32 alerted_times = 2;
    344     }
    345 
    346     message ConfigStats {
    347         optional int32 uid = 1;
    348         optional int64 id = 2;
    349         optional int32 creation_time_sec = 3;
    350         optional int32 deletion_time_sec = 4;
    351         optional int32 reset_time_sec = 19;
    352         optional int32 metric_count = 5;
    353         optional int32 condition_count = 6;
    354         optional int32 matcher_count = 7;
    355         optional int32 alert_count = 8;
    356         optional bool is_valid = 9;
    357         repeated int32 broadcast_sent_time_sec = 10;
    358         repeated int32 data_drop_time_sec = 11;
    359         repeated int64 data_drop_bytes = 21;
    360         repeated int32 dump_report_time_sec = 12;
    361         repeated int32 dump_report_data_size = 20;
    362         repeated MatcherStats matcher_stats = 13;
    363         repeated ConditionStats condition_stats = 14;
    364         repeated MetricStats metric_stats = 15;
    365         repeated AlertStats alert_stats = 16;
    366         repeated MetricStats metric_dimension_in_condition_stats = 17;
    367         message Annotation {
    368             optional int64 field_int64 = 1;
    369             optional int32 field_int32 = 2;
    370         }
    371         repeated Annotation annotation = 18;
    372         repeated int32 activation_time_sec = 22;
    373         repeated int32 deactivation_time_sec = 23;
    374     }
    375 
    376     repeated ConfigStats config_stats = 3;
    377 
    378     message AtomStats {
    379         optional int32 tag = 1;
    380         optional int32 count = 2;
    381     }
    382 
    383     repeated AtomStats atom_stats = 7;
    384 
    385     message UidMapStats {
    386         optional int32 changes = 1;
    387         optional int32 bytes_used = 2;
    388         optional int32 dropped_changes = 3;
    389         optional int32 deleted_apps = 4;
    390     }
    391     optional UidMapStats uidmap_stats = 8;
    392 
    393     message AnomalyAlarmStats {
    394         optional int32 alarms_registered = 1;
    395     }
    396     optional AnomalyAlarmStats anomaly_alarm_stats = 9;
    397 
    398     message PulledAtomStats {
    399         optional int32 atom_id = 1;
    400         optional int64 total_pull = 2;
    401         optional int64 total_pull_from_cache = 3;
    402         optional int64 min_pull_interval_sec = 4;
    403         optional int64 average_pull_time_nanos = 5;
    404         optional int64 max_pull_time_nanos = 6;
    405         optional int64 average_pull_delay_nanos = 7;
    406         optional int64 max_pull_delay_nanos = 8;
    407         optional int64 data_error = 9;
    408         optional int64 pull_timeout = 10;
    409         optional int64 pull_exceed_max_delay = 11;
    410         optional int64 pull_failed = 12;
    411         optional int64 stats_companion_pull_failed = 13;
    412         optional int64 stats_companion_pull_binder_transaction_failed = 14;
    413         optional int64 empty_data = 15;
    414         optional int64 registered_count = 16;
    415         optional int64 unregistered_count = 17;
    416     }
    417     repeated PulledAtomStats pulled_atom_stats = 10;
    418 
    419     message AtomMetricStats {
    420       optional int64 metric_id = 1;
    421       optional int64 hard_dimension_limit_reached = 2;
    422       optional int64 late_log_event_skipped = 3;
    423       optional int64 skipped_forward_buckets = 4;
    424       optional int64 bad_value_type = 5;
    425       optional int64 condition_change_in_next_bucket = 6;
    426       optional int64 invalidated_bucket = 7;
    427       optional int64 bucket_dropped = 8;
    428       optional int64 min_bucket_boundary_delay_ns = 9;
    429       optional int64 max_bucket_boundary_delay_ns = 10;
    430       optional int64 bucket_unknown_condition = 11;
    431       optional int64 bucket_count = 12;
    432     }
    433     repeated AtomMetricStats atom_metric_stats = 17;
    434 
    435     message LoggerErrorStats {
    436         optional int32 logger_disconnection_sec = 1;
    437         optional int32 error_code = 2;
    438     }
    439     repeated LoggerErrorStats logger_error_stats = 11;
    440 
    441     message PeriodicAlarmStats {
    442         optional int32 alarms_registered = 1;
    443     }
    444     optional PeriodicAlarmStats periodic_alarm_stats = 12;
    445 
    446     message  SkippedLogEventStats {
    447         optional int32 tag = 1;
    448         optional int64 elapsed_timestamp_nanos = 2;
    449     }
    450     repeated SkippedLogEventStats skipped_log_event_stats = 13;
    451 
    452     repeated int64 log_loss_stats = 14;
    453 
    454     repeated int32 system_restart_sec = 15;
    455 
    456     message LogLossStats {
    457         optional int32 detected_time_sec = 1;
    458         optional int32 count = 2;
    459         optional int32 last_error = 3;
    460         optional int32 last_tag = 4;
    461         optional int32 uid = 5;
    462         optional int32 pid = 6;
    463     }
    464     repeated LogLossStats detected_log_loss = 16;
    465 
    466     message EventQueueOverflow {
    467         optional int32 count = 1;
    468         optional int64 max_queue_history_ns = 2;
    469         optional int64 min_queue_history_ns = 3;
    470     }
    471 
    472     optional EventQueueOverflow queue_overflow = 18;
    473 
    474     message ActivationBroadcastGuardrail {
    475         optional int32 uid = 1;
    476         repeated int32 guardrail_met_sec = 2;
    477     }
    478 
    479     repeated ActivationBroadcastGuardrail activation_guardrail_stats = 19;
    480 }
    481 
    482 message AlertTriggerDetails {
    483     message MetricValue {
    484         optional int64 metric_id = 1;
    485         optional DimensionsValue dimension_in_what = 2;
    486         optional DimensionsValue dimension_in_condition = 3;
    487         optional int64 value = 4;
    488     }
    489     oneof value {
    490         MetricValue trigger_metric = 1;
    491         EventMetricData trigger_event = 2;
    492     }
    493     optional UidMapping.PackageInfoSnapshot package_info = 3;
    494 }
    495