blob: 0412538ef058b4836b265fbb34b22d210072d26e [file] [log] [blame]
Yao Chenab273e22017-09-06 12:53:50 -07001/*
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 */
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070016
Yao Chenab273e22017-09-06 12:53:50 -070017syntax = "proto2";
18
19package android.os.statsd;
20
Yao Chenab273e22017-09-06 12:53:50 -070021option java_package = "com.android.os";
22option java_outer_classname = "StatsLog";
23
Joe Onorato62c220b2017-11-18 20:32:56 -080024import "frameworks/base/cmds/statsd/src/atoms.proto";
Yao Chen9c1debe2018-02-19 14:39:19 -080025import "frameworks/base/cmds/statsd/src/stats_log_common.proto";
Yao Chenab273e22017-09-06 12:53:50 -070026
Yangster-mac20877162017-12-22 17:19:39 -080027message DimensionsValue {
28 optional int32 field = 1;
Yao Chenab273e22017-09-06 12:53:50 -070029
yro00698da2017-09-15 10:06:40 -070030 oneof value {
31 string value_str = 2;
Chenjie Yud9dfda72017-12-11 17:41:20 -080032 int32 value_int = 3;
33 int64 value_long = 4;
34 bool value_bool = 5;
35 float value_float = 6;
Yangster-mac20877162017-12-22 17:19:39 -080036 DimensionsValueTuple value_tuple = 7;
Yao Chenab273e22017-09-06 12:53:50 -070037 }
Yao Chenab273e22017-09-06 12:53:50 -070038}
39
Yangster-mac20877162017-12-22 17:19:39 -080040message DimensionsValueTuple {
41 repeated DimensionsValue dimensions_value = 1;
42}
43
yro00698da2017-09-15 10:06:40 -070044message EventMetricData {
Yangster-mac330af582018-02-08 15:24:38 -080045 optional int64 elapsed_timestamp_nanos = 1;
yro00698da2017-09-15 10:06:40 -070046
Stefan Lafonae2df012017-11-14 09:17:21 -080047 optional Atom atom = 2;
Yangster-mac330af582018-02-08 15:24:38 -080048
Yangster-mac3fa5d7f2018-03-10 21:50:27 -080049 optional int64 wall_clock_timestamp_nanos = 3;
yro00698da2017-09-15 10:06:40 -070050}
51
52message CountBucketInfo {
Yangster-mac330af582018-02-08 15:24:38 -080053 optional int64 start_bucket_elapsed_nanos = 1;
yro00698da2017-09-15 10:06:40 -070054
Yangster-mac330af582018-02-08 15:24:38 -080055 optional int64 end_bucket_elapsed_nanos = 2;
yro00698da2017-09-15 10:06:40 -070056
57 optional int64 count = 3;
58}
59
60message CountMetricData {
Yangster-mac468ff042018-01-17 12:26:34 -080061 optional DimensionsValue dimensions_in_what = 1;
62
Yangster-mac16fc72f2018-01-18 13:18:01 -080063 optional DimensionsValue dimensions_in_condition = 2;
yro00698da2017-09-15 10:06:40 -070064
Yangster-mac16fc72f2018-01-18 13:18:01 -080065 repeated CountBucketInfo bucket_info = 3;
yro00698da2017-09-15 10:06:40 -070066}
67
Yao Chencaf339d2017-10-06 16:01:10 -070068message DurationBucketInfo {
Yangster-mac330af582018-02-08 15:24:38 -080069 optional int64 start_bucket_elapsed_nanos = 1;
Yao Chencaf339d2017-10-06 16:01:10 -070070
Yangster-mac330af582018-02-08 15:24:38 -080071 optional int64 end_bucket_elapsed_nanos = 2;
Yao Chencaf339d2017-10-06 16:01:10 -070072
73 optional int64 duration_nanos = 3;
74}
75
76message DurationMetricData {
Yangster-mac468ff042018-01-17 12:26:34 -080077 optional DimensionsValue dimensions_in_what = 1;
78
Yangster-mac16fc72f2018-01-18 13:18:01 -080079 optional DimensionsValue dimensions_in_condition = 2;
Yao Chencaf339d2017-10-06 16:01:10 -070080
Yangster-mac16fc72f2018-01-18 13:18:01 -080081 repeated DurationBucketInfo bucket_info = 3;
Yao Chencaf339d2017-10-06 16:01:10 -070082}
83
Yangsterfa28aec2017-10-30 10:29:52 -070084message ValueBucketInfo {
Yangster-mac330af582018-02-08 15:24:38 -080085 optional int64 start_bucket_elapsed_nanos = 1;
Yangsterfa28aec2017-10-30 10:29:52 -070086
Yangster-mac330af582018-02-08 15:24:38 -080087 optional int64 end_bucket_elapsed_nanos = 2;
Yangsterfa28aec2017-10-30 10:29:52 -070088
89 optional int64 value = 3;
90}
91
92message ValueMetricData {
Yangster-mac468ff042018-01-17 12:26:34 -080093 optional DimensionsValue dimensions_in_what = 1;
94
Yangster-mac16fc72f2018-01-18 13:18:01 -080095 optional DimensionsValue dimensions_in_condition = 2;
Yangsterfa28aec2017-10-30 10:29:52 -070096
Yangster-mac16fc72f2018-01-18 13:18:01 -080097 repeated ValueBucketInfo bucket_info = 3;
Yangsterfa28aec2017-10-30 10:29:52 -070098}
99
100message GaugeBucketInfo {
101 optional int64 start_bucket_nanos = 1;
102
103 optional int64 end_bucket_nanos = 2;
104
Yangster-mac34ea1102018-01-29 12:40:55 -0800105 repeated Atom atom = 3;
106
Yangster-mac330af582018-02-08 15:24:38 -0800107 repeated int64 elapsed_timestamp_nanos = 4;
Yangster-mac3fa5d7f2018-03-10 21:50:27 -0800108
109 repeated int64 wall_clock_timestamp_nanos = 5;
Yangsterfa28aec2017-10-30 10:29:52 -0700110}
111
112message GaugeMetricData {
Yangster-mac468ff042018-01-17 12:26:34 -0800113 optional DimensionsValue dimensions_in_what = 1;
114
Yangster-mac16fc72f2018-01-18 13:18:01 -0800115 optional DimensionsValue dimensions_in_condition = 2;
Yangsterfa28aec2017-10-30 10:29:52 -0700116
Yangster-mac16fc72f2018-01-18 13:18:01 -0800117 repeated GaugeBucketInfo bucket_info = 3;
Yangsterfa28aec2017-10-30 10:29:52 -0700118}
119
yro00698da2017-09-15 10:06:40 -0700120message StatsLogReport {
Yangster-mac94e197c2018-01-02 16:03:03 -0800121 optional int64 metric_id = 1;
Yao Chenab273e22017-09-06 12:53:50 -0700122
David Chen16049572018-02-01 18:27:51 -0800123 // Fields 2 and 3 are reserved.
yro00698da2017-09-15 10:06:40 -0700124
125 message EventMetricDataWrapper {
126 repeated EventMetricData data = 1;
127 }
128 message CountMetricDataWrapper {
129 repeated CountMetricData data = 1;
130 }
Yao Chencaf339d2017-10-06 16:01:10 -0700131 message DurationMetricDataWrapper {
Yao Chen729093d2017-10-16 10:33:26 -0700132 repeated DurationMetricData data = 1;
Yao Chencaf339d2017-10-06 16:01:10 -0700133 }
Yangsterfa28aec2017-10-30 10:29:52 -0700134 message ValueMetricDataWrapper {
135 repeated ValueMetricData data = 1;
136 }
Chenjie Yub3dda412017-10-24 13:41:59 -0700137
Yangsterfa28aec2017-10-30 10:29:52 -0700138 message GaugeMetricDataWrapper {
139 repeated GaugeMetricData data = 1;
140 }
Chenjie Yub3dda412017-10-24 13:41:59 -0700141
yro00698da2017-09-15 10:06:40 -0700142 oneof data {
143 EventMetricDataWrapper event_metrics = 4;
144 CountMetricDataWrapper count_metrics = 5;
Yao Chencaf339d2017-10-06 16:01:10 -0700145 DurationMetricDataWrapper duration_metrics = 6;
Yangsterfa28aec2017-10-30 10:29:52 -0700146 ValueMetricDataWrapper value_metrics = 7;
147 GaugeMetricDataWrapper gauge_metrics = 8;
yro00698da2017-09-15 10:06:40 -0700148 }
Yao Chenab273e22017-09-06 12:53:50 -0700149}
Yangsterfa28aec2017-10-30 10:29:52 -0700150
151message ConfigMetricsReport {
yro947fbce2017-11-15 22:50:23 -0800152 repeated StatsLogReport metrics = 1;
153
154 optional UidMapping uid_map = 2;
David Chen16049572018-02-01 18:27:51 -0800155
Yangster-mac330af582018-02-08 15:24:38 -0800156 optional int64 last_report_elapsed_nanos = 3;
David Chen16049572018-02-01 18:27:51 -0800157
Yangster-mac330af582018-02-08 15:24:38 -0800158 optional int64 current_report_elapsed_nanos = 4;
Yangster-mac3fa5d7f2018-03-10 21:50:27 -0800159
160 optional int64 last_report_wall_clock_nanos = 5;
161
162 optional int64 current_report_wall_clock_nanos = 6;
yro947fbce2017-11-15 22:50:23 -0800163}
164
165message ConfigMetricsReportList {
Yangsterfa28aec2017-10-30 10:29:52 -0700166 message ConfigKey {
167 optional int32 uid = 1;
Yangster-mac94e197c2018-01-02 16:03:03 -0800168 optional int64 id = 2;
Yangsterfa28aec2017-10-30 10:29:52 -0700169 }
170 optional ConfigKey config_key = 1;
171
yro947fbce2017-11-15 22:50:23 -0800172 repeated ConfigMetricsReport reports = 2;
Yangster-mac932ecec2018-02-01 10:23:52 -0800173}
Yao Chen20e9e622018-02-28 11:18:51 -0800174
175message StatsdStatsReport {
176 optional int32 stats_begin_time_sec = 1;
177
178 optional int32 stats_end_time_sec = 2;
179
180 message MatcherStats {
181 optional int64 id = 1;
182 optional int32 matched_times = 2;
183 }
184
185 message ConditionStats {
186 optional int64 id = 1;
187 optional int32 max_tuple_counts = 2;
188 }
189
190 message MetricStats {
191 optional int64 id = 1;
192 optional int32 max_tuple_counts = 2;
193 }
194
195 message AlertStats {
196 optional int64 id = 1;
197 optional int32 alerted_times = 2;
198 }
199
200 message ConfigStats {
201 optional int32 uid = 1;
202 optional int64 id = 2;
203 optional int32 creation_time_sec = 3;
204 optional int32 deletion_time_sec = 4;
205 optional int32 metric_count = 5;
206 optional int32 condition_count = 6;
207 optional int32 matcher_count = 7;
208 optional int32 alert_count = 8;
209 optional bool is_valid = 9;
210
211 repeated int32 broadcast_sent_time_sec = 10;
212 repeated int32 data_drop_time_sec = 11;
213 repeated int32 dump_report_time_sec = 12;
214 repeated MatcherStats matcher_stats = 13;
215 repeated ConditionStats condition_stats = 14;
216 repeated MetricStats metric_stats = 15;
217 repeated AlertStats alert_stats = 16;
218 }
219
220 repeated ConfigStats config_stats = 3;
221
222 message AtomStats {
223 optional int32 tag = 1;
224 optional int32 count = 2;
225 }
226
227 repeated AtomStats atom_stats = 7;
228
229 message UidMapStats {
230 optional int32 snapshots = 1;
231 optional int32 changes = 2;
232 optional int32 bytes_used = 3;
233 optional int32 dropped_snapshots = 4;
234 optional int32 dropped_changes = 5;
235 }
236 optional UidMapStats uidmap_stats = 8;
237
238 message AnomalyAlarmStats {
239 optional int32 alarms_registered = 1;
240 }
241 optional AnomalyAlarmStats anomaly_alarm_stats = 9;
242
243 message PulledAtomStats {
244 optional int32 atom_id = 1;
245 optional int64 total_pull = 2;
246 optional int64 total_pull_from_cache = 3;
247 optional int64 min_pull_interval_sec = 4;
248 }
249 repeated PulledAtomStats pulled_atom_stats = 10;
250
251 message LoggerErrorStats {
252 optional int32 logger_disconnection_sec = 1;
253 optional int32 error_code = 2;
254 }
255 repeated LoggerErrorStats logger_error_stats = 11;
256}