Google Play Developer Reporting API позволяет выявлять аномалии, обнаруженные в наборах показателей. Аномалия создается каждый раз, когда значение метрики превышает ожидаемый диапазон метрики на основе значений той же метрики за предыдущие 28 дней. Аномалии для последовательных дней объединяются в один результат аномалии.
Если аномальное увеличение значения метрики сохраняется достаточно долго, модель обнаружения адаптируется и расширяет ожидаемые значения до тех пор, пока последующие точки данных больше не будут считаться аномальными.
Извлечение аномалий
Список аномалий можно вывести с помощью метода anomalies.list .
Простой запрос:
Этот HTTP- GET
указывает параметр имени приложения и возвращает полный список обнаруженных аномалий для вашего приложения.
GET https://playdeveloperreporting.googleapis.com/v1beta1/apps/com.example.app/anomalies
Аномальный ответ:
Ответ включает в себя достаточно информации, чтобы узнать, где именно произошла аномалия:
{ "anomalies": [ { "name": "apps/com.example.app/anomalies/12345" "metric_set": "apps/com.example.app/anrRateMetricSet" "timeline_spec": { "aggregation_period": "DAILY" "start_time": { "year": 2022 "month": 1 "day": 23 "time_zone": { "id": "America/Los_Angeles" } } "end_time": { "year": 2022 "month": 1 "day": 23 "time_zone": { "id": "America/Los_Angeles" } } } "metric": { "metric": "anrRate", "decimal_value": { "value": "3.1415926535" } } }, { "name": "apps/com.example.app/anomalies/12345" "metric_set": "apps/com.example.app/crashRateMetricSet" "timeline_spec": { "aggregation_period": "DAILY" "start_time": { "year": 2021 "month": 12 "day": 10 "time_zone": { "id": "America/Los_Angeles" } } "end_time": { "year": 2021 "month": 12 "day": 10 "time_zone": { "id": "America/Los_Angeles" } } } "metric": { "metric": "crashRate", "decimal_value": { "value": "2.7182818284" } } }, ] }
Отфильтрованный запрос:
Можно применить фильтр для возврата только тех аномалий, которые были активны в определенный период времени. Для этого в поле фильтра в запросе укажите activeBetween(start, end)
. Можно указать неограниченные пределы с любой стороны диапазона с помощью специального ключевого слова UNBOUNDED
. Если указывается начальная или конечная граница, она должна соответствовать формату RFC 3339, например 2022-02-22T04:00Z
.
GET https://playdeveloperreporting.googleapis.com/v1beta1/apps/com.example.app/anomalies?filter=activeBetween("2022-01-01T00:00:00Z", UNBOUNDED)
Отфильтрованный ответ:
В ответ включены только те аномалии, которые были активны в указанном временном диапазоне:
{ "anomalies": [ { "name": "apps/com.example.app/anomalies/12345" "metric_set": "apps/com.example.app/anrRateMetricSet" "timeline_spec": { "aggregation_period": "DAILY" "start_time": { "year": 2022 "month": 1 "day": 23 "time_zone": { "id": "America/Los_Angeles" } } "end_time": { "year": 2022 "month": 1 "day": 23 "time_zone": { "id": "America/Los_Angeles" } } } "metric": { "metric": "anrRate", "decimal_value": { "value": "3.1415926535" } } }, ] }
Доступные показатели
В настоящее время не все метрики и наборы метрик поддерживают обнаружение аномалий. Вот список поддерживаемых в настоящее время метрик:
Набор показателей | Поддерживаемые показатели |
---|---|
vitals.anrrate | anrRate |
vitals.crashrate | крашрейт |
vitals.excessivewakeuprate | чрезмерныйWakeupRate |
vitals.stuckbackgroundwakelockrate | застрялBgWakelockRate |