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 |